|
|
@@ -1,6 +1,6 @@
|
|
|
import { AnyJson } from '~/types/interfaces'
|
|
|
import {FORM_STATUS, QUERY_TYPE} from "~/types/enums";
|
|
|
-import {ref, Ref, useContext, useFetch} from '@nuxtjs/composition-api'
|
|
|
+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";
|
|
|
@@ -8,37 +8,24 @@ import {Store} from "vuex";
|
|
|
|
|
|
/**
|
|
|
* @category composables/data
|
|
|
- * @class UseDataUtils
|
|
|
- * Use Classe qui va récupérer les Accesses suivant des critères de recherche
|
|
|
+ * @param $dataProvider
|
|
|
+ * Composable 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(),
|
|
|
- }
|
|
|
- }
|
|
|
+export function useDataUtils($dataProvider: DataProvider){
|
|
|
|
|
|
/**
|
|
|
- * recherche l'item a éditer
|
|
|
+ * recherche l'item a éditer et alimente le dataprovider
|
|
|
+ * @param route
|
|
|
* @param model
|
|
|
- * @private
|
|
|
*/
|
|
|
- private getItemToEdit(model: typeof Model){
|
|
|
- const id = parseInt(this.route.value.params.id)
|
|
|
+ function getItemToEdit(route: Ref, model: typeof Model){
|
|
|
+ const id = parseInt(route.value.params.id)
|
|
|
+ if(!id){
|
|
|
+ throw new Error('id must be exist')
|
|
|
+ }
|
|
|
+
|
|
|
const {fetchState} = useFetch(async () => {
|
|
|
- await this.$dataProvider.invoke({
|
|
|
+ await $dataProvider.invoke({
|
|
|
type: QUERY_TYPE.MODEL,
|
|
|
model,
|
|
|
id
|
|
|
@@ -52,15 +39,14 @@ export class UseDataUtils {
|
|
|
|
|
|
/**
|
|
|
* Créer l'Item quand l'utilisateur veux créer un nouvel enregistrement
|
|
|
- * @param itemToCreate
|
|
|
+ * @param store
|
|
|
* @param model
|
|
|
- * @private
|
|
|
*/
|
|
|
- private createItem(){
|
|
|
- this.store.commit('form/setFormStatus', FORM_STATUS.CREATE)
|
|
|
+ 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, model: typeof Model) =>{
|
|
|
+ const create = async (itemToCreate: AnyJson) =>{
|
|
|
item.value = await repositoryHelper.persist(model, itemToCreate)
|
|
|
loading.value = false
|
|
|
}
|
|
|
@@ -71,4 +57,9 @@ export class UseDataUtils {
|
|
|
item
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ return {
|
|
|
+ getItemToEdit,
|
|
|
+ createItem
|
|
|
+ }
|
|
|
}
|