Перейти к содержанию

ПРОТОКОЛ

StorageDriver

public protocol StorageDriver: AnyObject

Абстрактный 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:)

func write(meta: StorageMeta, data: StorageData) async

Записывает блок данных в хранилище, уникально идентифицируется метой

Если такой блок уже существует, метод его переписывает

Параметры

Имя Описание
meta StorageMeta составной идентификатор
data StorageData блок данных для вставки

Возвращает

void

read(meta:)

func read(meta: StorageMeta) async -> StorageData?

Чтение данных, хранящихся в предоставленной мете

Этот метод обычно используется в стратегии постоянного хранилища

Параметры

Имя Описание
meta StorageMeta составной идентификатор

Возвращает

StorageData

хранящиеся данные или null, если такие не найдены

take(meta:)

func take(meta: StorageMeta) async -> StorageData?

Принимает данные, хранящиеся внутри предоставленной меты и удаляет оригинал

Этот метод обычно применяется при использовании стратегии с временным хранилищем как способ удаления сохраненных записей.

Параметры

Имя Описание
meta StorageMeta составной идентификатор

Возвращает

StorageData

хранящиеся данные или null, если такие не найдены