@rattus-orm/vuex
Version:
ORM for your JS/TS apps: vuex bindings
42 lines (36 loc) • 2.16 kB
TypeScript
import { Repository, Model, State, Elements, DataProviderHelpers, DataProvider, SerializedStorage, ModulePath } from '@rattus-orm/core';
import { UseComputedRepository } from '@rattus-orm/core/utils/vueComposableUtils';
import { MutationTree, Store, GetterTree, Plugin } from 'vuex';
import { RattusOrmInstallerOptions } from '@rattus-orm/core/utils/integrationsHelpers';
declare function useRepository<R extends Repository<InstanceType<M>>, M extends typeof Model = typeof Model>(model: M, connection?: string): UseComputedRepository<R, M>;
interface Mutations<S extends State> extends MutationTree<S> {
save(state: S, records: Elements): void;
insert(state: S, records: Elements): void;
update(state: S, records: Elements): void;
fresh(state: S, records: Elements): void;
delete(state: S, ids: string[]): void;
flush(state: S): void;
}
declare class VuexDataProvider extends DataProviderHelpers implements DataProvider {
protected readonly store: Store<SerializedStorage>;
constructor(store: Store<SerializedStorage>);
delete(module: ModulePath, ids: string[]): void;
flush(module: ModulePath): void;
replace(module: ModulePath, records: Elements): void;
getModuleState(module: ModulePath): State;
insert(module: ModulePath, records: Elements): void;
registerConnection(name: string): void;
registerModule(path: ModulePath, initialState?: State): void;
save(module: ModulePath, records: Elements): void;
update(module: ModulePath, records: Elements): void;
hasModule(module: ModulePath): boolean;
dump(): SerializedStorage;
restore(data: SerializedStorage): void;
protected getModulePathString(modulePath: ModulePath): string;
protected createMutations(): Mutations<State>;
protected createGetters<T>(): GetterTree<T, SerializedStorage>;
protected commit(module: ModulePath, name: keyof Mutations<State>, payload?: any): void;
protected moduleDataExists([connection, moduleName]: ModulePath): boolean;
}
declare function installRattusORM(options?: RattusOrmInstallerOptions): Plugin<any>;
export { VuexDataProvider, installRattusORM, useRepository };