| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- import { Query as VuexQuery, Model } from '@vuex-orm/core'
- import { Collection, Item } from '@vuex-orm/core/dist/src/data/Data'
- import { $objectProperties } from '~/services/utils/objectProperties'
- import { AnyJson } from '~/types/interfaces'
- /**
- * @category Services/store
- * @class Query
- * Classe Wrapper pour assurer les opérations les plus communes des Query de VuexORM
- */
- class Query {
- /**
- * Récupération de l'Item souhaité
- * @param {VuexQuery} query
- * @param {number} id
- * @return {Item} l'Item
- */
- public getItem (query: VuexQuery, id:number): Item {
- const item = query.find(id)
- if (!item || typeof item === 'undefined') { throw new Error('item not found') }
- return item
- }
- /**
- * Récupération du premier item
- * @param {VuexQuery} query
- * @return {Item} l'Item
- */
- public getFirstItem (query: VuexQuery): Item {
- const item = query.first()
- if (!item || typeof item === 'undefined') { throw new Error('item not found') }
- return item
- }
- /**
- * Récupération la collection de la Query
- * @param {VuexQuery} query
- * @return {Collection} Array d'Item
- */
- public getCollection (query: VuexQuery):Collection {
- return query.get()
- }
- /**
- * Récupération de l'Item souhaité puis transformation en JSON applatit
- * @param {VuexQuery} query
- * @param {number} id
- * @return {AnyJson} réponse
- */
- public getFlattenEntry (query: VuexQuery, id:number): AnyJson {
- return $objectProperties.cloneAndFlatten(this.getItem(query, id) as AnyJson)
- }
- /**
- * Récupération la collection de la Query puis transformation en JSON applatit
- * @param {VuexQuery} query
- * @return {Array<AnyJson>} réponse
- */
- public getFlattenEntries (query: VuexQuery): Array<AnyJson> {
- const entries = this.getCollection(query)
- return entries.map((entry:AnyJson) => {
- return $objectProperties.cloneAndFlatten(entry)
- })
- }
- }
- export const queryHelper = new Query()
|