| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- import { AnyJson } from '~/types/interfaces'
- import {FORM_STATUS, QUERY_TYPE} from "~/types/enums";
- import {ref, Ref, useFetch} from '@nuxtjs/composition-api'
- import DataProvider from "~/services/data/dataProvider";
- import {Model} from "@vuex-orm/core";
- import {repositoryHelper} from "~/services/store/repository";
- import {Store} from "vuex";
- /**
- * @category composables/data
- * @param $dataProvider
- * Composable Classe qui va récupérer les Accesses suivant des critères de recherche
- */
- export function useDataUtils($dataProvider: DataProvider){
- /**
- * recherche la collection d'item et alimente le dataprovider
- * @param model
- * @param rootModel
- * @param rootId
- */
- function getCollection(model: typeof Model, rootModel?: typeof Model, rootId?: number){
- const {fetchState} = useFetch(async () => {
- await $dataProvider.invoke({
- type: QUERY_TYPE.MODEL,
- model: model,
- rootModel: rootModel,
- rootId: rootId
- })
- })
- return {
- fetchState
- }
- }
- /**
- * recherche l'item a éditer et alimente le dataprovider
- * @param id
- * @param model
- */
- function getItemToEdit(id: string|number, model: typeof Model){
- if(!id){
- throw new Error('id must be exist')
- }
- const {fetchState} = useFetch(async () => {
- await $dataProvider.invoke({
- type: QUERY_TYPE.MODEL,
- model,
- id,
- showProgress: process.browser
- })
- })
- return {
- fetchState
- }
- }
- /**
- * Créer l'Item quand l'utilisateur veux créer un nouvel enregistrement
- * @param store
- * @param model
- */
- function createItem(store: Store<any>, model: typeof Model){
- store.commit('form/setFormStatus', FORM_STATUS.CREATE)
- const loading:Ref<Boolean> = ref(true)
- const item: Ref<any> = ref('')
- const create = async (itemToCreate: AnyJson) =>{
- item.value = await repositoryHelper.persist(model, itemToCreate)
- loading.value = false
- }
- return {
- loading,
- create,
- item
- }
- }
- return {
- getCollection,
- getItemToEdit,
- createItem
- }
- }
|