Перейти к основному содержимому

Data provider

Data provider предоставляет связь конкретного хранилища с ORM. В общем случае, это класс, реализующий следующий интерфейс:

export interface DataProvider {
registerConnection(name: string): void
dump(): SerializedStorage
restore(data: SerializedStorage): void
registerModule(path: ModulePath, initialState?: State): void
getModuleState(module: ModulePath): State
hasModule(module: ModulePath): boolean
save(module: ModulePath, records: Elements): void
insert(module: ModulePath, records: Elements): void
replace(module: ModulePath, records: Elements): void
update(module: ModulePath, records: Elements): void
delete(module: ModulePath, ids: string[]): void
flush(module: ModulePath): void
}

В терминах Rattus ORM (и Vuex ORM, на котором он основан) модуль – это "таблица" для конкретной сущности. К примеру, когда в ORM попадает сущность User, создаётся новый модуль - "User".

Остальные методы имеют интуитивно понятное название. Если что-либо остаётся неясно – посмотрите исходный код ObjectDataProvider.

Инфо

В корневом пакете есть класс с утилитами: DataProviderHelpers
Если вы собираетесь писать собственный Data provider, возможно, вам будет удобно его использовать.

Data provider связывается с базой данных при создании:

const database = createDatabase({
dataProvider: new ObjectDataProvider()
})