Simplify and improve DatabaseIDCache.

This commit is contained in:
Brent Simmons 2024-05-08 21:57:23 -07:00
parent ae77aece2a
commit 48bfcedbf7

View File

@ -14,28 +14,22 @@ final class DatabaseIDCache: Sendable {
static let shared = DatabaseIDCache()
private let _databaseIDCache = OSAllocatedUnfairLock(initialState: [String: String]())
private var databaseIDCache: [String: String] {
get {
_databaseIDCache.withLock { $0 }
}
set {
_databaseIDCache.withLock { $0 = newValue }
}
}
private let databaseIDCache = OSAllocatedUnfairLock(initialState: [String: String]())
/// Generates or retrieves from cache  a database-suitable ID based on a String.
func databaseIDWithString(_ s: String) -> String {
if let identifier = databaseIDCache[s] {
databaseIDCache.withLock { cache in
if let identifier = cache[s] {
return identifier
}
// MD5 works because:
// * Its fast
// * Collisions arent going to happen with feed data
let identifier = s.md5String
cache[s] = identifier
return identifier
}
// MD5 works because:
// * Its fast
// * Collisions arent going to happen with feed data
let identifier = s.md5String
databaseIDCache[s] = identifier
return identifier
}
}