ПРОТОКОЛ
StorageDriver
Абстрактный Storage Driver API
Описывает одновременно стратегию и постоянного хранилища (база данных, файловая система), и временного (кэш, память). SDK активно использует обе стратегии под именами:
- storage - постоянное хранилище
- cache - временное хранилище
Пример
await write(driver: storage, meta: StorageMeta(room: "323", topic: "dinner"), data: try serialize([ "foo": "boo" ]))
let supperTry1 = await read(driver: storage, meta: StorageMeta(room: "323", topic: "supper"))
XCTAssertEqual(supperTry1.flatMap({ try? deserialize([String : String].self, $0) }), [ "boo": "woo" ])
let supperTry2 = await read(driver: storage, meta: StorageMeta(room: "323", topic: "supper"))
XCTAssertEqual(supperTry2.flatMap({ try? deserialize([String : String].self, $0) }), [ "boo": "woo" ])
let dinnerTry1 = await take(driver: storage, meta: StorageMeta(room: "323", topic: "dinner"))
XCTAssertEqual(dinnerTry1.flatMap({ try? deserialize([String : String].self, $0) }), [ "foo": "boo" ])
let dinnerTry2 = await take(driver: storage, meta: StorageMeta(room: "323", topic: "dinner"))
XCTAssertEqual(dinnerTry2.flatMap({ try? deserialize([String : String].self, $0) }), nil)
Методы
write(meta:data:)
Записывает блок данных в хранилище, уникально идентифицируется метой
Если такой блок уже существует, метод его переписывает
Параметры
Имя | Описание |
---|---|
meta | StorageMeta составной идентификатор |
data | StorageData блок данных для вставки |
Возвращает
void
read(meta:)
Чтение данных, хранящихся в предоставленной мете
Этот метод обычно используется в стратегии постоянного хранилища
Параметры
Имя | Описание |
---|---|
meta | StorageMeta составной идентификатор |
Возвращает
StorageData
хранящиеся данные или null
, если такие не найдены
take(meta:)
Принимает данные, хранящиеся внутри предоставленной меты и удаляет оригинал
Этот метод обычно применяется при использовании стратегии с временным хранилищем как способ удаления сохраненных записей.
Параметры
Имя | Описание |
---|---|
meta | StorageMeta составной идентификатор |
Возвращает
StorageData
хранящиеся данные или null
, если такие не найдены