| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- import { AnyJson } from '~/types/interfaces'
- import {FORM_STATUS, QUERY_TYPE} from "~/types/enums";
- import {ref, Ref, useContext, 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
- * @class UseDataUtils
- * Use Classe qui va récupérer les Accesses suivant des critères de recherche
- */
- export class UseDataUtils {
- private $dataProvider: DataProvider
- private route: Ref
- private store: Store<any>
- constructor() {
- const { route, $dataProvider, store } = useContext()
- this.$dataProvider = $dataProvider
- this.store = store
- this.route = route
- }
- public invoke(): AnyJson{
- return {
- getItemToEdit: (model: typeof Model) => this.getItemToEdit(model),
- createItem: () => this.createItem(),
- }
- }
- /**
- * recherche l'item a éditer
- * @param model
- * @private
- */
- private getItemToEdit(model: typeof Model){
- const id = parseInt(this.route.value.params.id)
- const {fetchState} = useFetch(async () => {
- await this.$dataProvider.invoke({
- type: QUERY_TYPE.MODEL,
- model,
- id
- })
- })
- return {
- fetchState,
- id
- }
- }
- /**
- * Créer l'Item quand l'utilisateur veux créer un nouvel enregistrement
- * @param itemToCreate
- * @param model
- * @private
- */
- private createItem(){
- this.store.commit('form/setFormStatus', FORM_STATUS.CREATE)
- const loading:Ref<Boolean> = ref(true)
- const item: Ref<any> = ref('')
- const create = async (itemToCreate: AnyJson, model: typeof Model) =>{
- item.value = await repositoryHelper.persist(model, itemToCreate)
- loading.value = false
- }
- return {
- loading,
- create,
- item
- }
- }
- }
|