| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- import {Store} from "vuex";
- import {Rest} from "~/services/queries/rest";
- import {Model} from "@/models/Model"
- class DataProvider{
- private store: Store<any>
- private $rest: Rest
- constructor(store:Store<any>, $rest: Rest) {
- this.store = store
- this.$rest = $rest
- }
- public async getItem(model: typeof Model, id: number){
- const repository = this.store.$repo(model);
- const entity = repository.getModel().$entity();
- const response = await this.$rest.getItem(`/api/${entity}`, id)
- if(response)
- repository.insert(response);
- }
- public async getCollection(model: typeof Model){
- const repository = this.store.$repo(model);
- const entity = repository.getModel().$entity();
- const response = await this.$rest.getCollection(`/api/${entity}`)
- if(response)
- repository.insert(response);
- }
- public async getSubResourceCollection(root_model: typeof Model, root_id: number, model: typeof Model){
- const root_repository = this.store.$repo(root_model);
- const root_entity = root_repository.getModel().$entity();
- const repository = this.store.$repo(model);
- const entity = repository.getModel().$entity();
- const response = await this.$rest.getCollection(`/api/${root_entity}/${root_id}/${entity}`)
- if(response){
- repository.insert(response)
- return repository.all();
- }
- return [];
- }
- public async getSubResourceItem(root_model: typeof Model, root_id: number, model: typeof Model, id: number) {
- const root_repository = this.store.$repo(root_model);
- const root_entity = root_repository.getModel().$entity();
- const repository = this.store.$repo(model);
- const entity = repository.getModel().$entity();
- const response = await this.$rest.getItem(`/api/${root_entity}/${root_id}/${entity}`, id)
- if(response)
- repository.insert(response);
- }
- }
- export const $dataProvider = (store:Store<any>, $rest:Rest) => new DataProvider(store, $rest);
|