mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-06-16 05:55:20 +00:00
96 lines
3.6 KiB
Swift
96 lines
3.6 KiB
Swift
import Foundation
|
|
import Buffers
|
|
|
|
public enum ValueBoxKeyType: Int32 {
|
|
case binary
|
|
case int64
|
|
}
|
|
|
|
public struct ValueBoxTable {
|
|
let id: Int32
|
|
let keyType: ValueBoxKeyType
|
|
let compactValuesOnCreation: Bool
|
|
|
|
public init(id: Int32, keyType: ValueBoxKeyType, compactValuesOnCreation: Bool) {
|
|
self.id = id
|
|
self.keyType = keyType
|
|
self.compactValuesOnCreation = compactValuesOnCreation
|
|
}
|
|
}
|
|
|
|
public struct ValueBoxFullTextTable {
|
|
let id: Int32
|
|
}
|
|
|
|
public struct ValueBoxEncryptionParameters {
|
|
public struct Key {
|
|
public let data: Data
|
|
|
|
public init?(data: Data) {
|
|
if data.count == 32 {
|
|
self.data = data
|
|
} else {
|
|
return nil
|
|
}
|
|
}
|
|
}
|
|
|
|
public struct Salt {
|
|
public let data: Data
|
|
|
|
public init?(data: Data) {
|
|
if data.count == 16 {
|
|
self.data = data
|
|
} else {
|
|
return nil
|
|
}
|
|
}
|
|
}
|
|
|
|
public let forceEncryptionIfNoSet: Bool
|
|
public let key: Key
|
|
public let salt: Salt
|
|
|
|
public init(forceEncryptionIfNoSet: Bool, key: Key, salt: Salt) {
|
|
self.forceEncryptionIfNoSet = forceEncryptionIfNoSet
|
|
self.key = key
|
|
self.salt = salt
|
|
}
|
|
}
|
|
|
|
public protocol ValueBox {
|
|
func begin()
|
|
func commit()
|
|
func checkpoint()
|
|
|
|
func beginStats()
|
|
func endStats()
|
|
|
|
func range(_ table: ValueBoxTable, start: ValueBoxKey, end: ValueBoxKey, values: (ValueBoxKey, ReadBuffer) -> Bool, limit: Int)
|
|
func range(_ table: ValueBoxTable, start: ValueBoxKey, end: ValueBoxKey, keys: (ValueBoxKey) -> Bool, limit: Int)
|
|
func scan(_ table: ValueBoxTable, values: (ValueBoxKey, ReadBuffer) -> Bool)
|
|
func scan(_ table: ValueBoxTable, keys: (ValueBoxKey) -> Bool)
|
|
func scanInt64(_ table: ValueBoxTable, values: (Int64, ReadBuffer) -> Bool)
|
|
func scanInt64(_ table: ValueBoxTable, keys: (Int64) -> Bool)
|
|
func get(_ table: ValueBoxTable, key: ValueBoxKey) -> ReadBuffer?
|
|
func read(_ table: ValueBoxTable, key: ValueBoxKey, _ process: (Int, (UnsafeMutableRawPointer, Int, Int) -> Void) -> Void)
|
|
func readWrite(_ table: ValueBoxTable, key: ValueBoxKey, _ process: (Int, (UnsafeMutableRawPointer, Int, Int) -> Void, (UnsafeRawPointer, Int, Int) -> Void) -> Void)
|
|
func exists(_ table: ValueBoxTable, key: ValueBoxKey) -> Bool
|
|
func set(_ table: ValueBoxTable, key: ValueBoxKey, value: MemoryBuffer)
|
|
func remove(_ table: ValueBoxTable, key: ValueBoxKey, secure: Bool)
|
|
func move(_ table: ValueBoxTable, from previousKey: ValueBoxKey, to updatedKey: ValueBoxKey)
|
|
func copy(fromTable: ValueBoxTable, fromKey: ValueBoxKey, toTable: ValueBoxTable, toKey: ValueBoxKey)
|
|
func removeRange(_ table: ValueBoxTable, start: ValueBoxKey, end: ValueBoxKey)
|
|
func fullTextSet(_ table: ValueBoxFullTextTable, collectionId: String, itemId: String, contents: String, tags: String)
|
|
func fullTextMatch(_ table: ValueBoxFullTextTable, collectionId: String?, query: String, tags: String?, values: (String, String) -> Bool)
|
|
func fullTextRemove(_ table: ValueBoxFullTextTable, itemId: String, secure: Bool)
|
|
func removeAllFromTable(_ table: ValueBoxTable)
|
|
func removeTable(_ table: ValueBoxTable)
|
|
func renameTable(_ table: ValueBoxTable, to toTable: ValueBoxTable)
|
|
func drop()
|
|
func count(_ table: ValueBoxTable, start: ValueBoxKey, end: ValueBoxKey) -> Int
|
|
func count(_ table: ValueBoxTable) -> Int
|
|
|
|
func exportEncrypted(to exportBasePath: String, encryptionParameters: ValueBoxEncryptionParameters)
|
|
}
|