@mee4dy/crud
Version:
Create a backend and frontend in 5 minutes! With our powerful full stack crud system, customize it to suit you.
1 lines • 12 kB
Source Map (JSON)
{"version":3,"file":"actions.cjs","sources":["../../../vuex/store/actions.ts"],"sourcesContent":["import * as _ from 'lodash';\nimport qs from 'qs';\n\ninterface FetchOptions {\n applyQuery?: boolean;\n filters?: object;\n groups?: string[];\n orders?: object;\n}\n\nexport default {\n setCtx({ getters, dispatch, state, commit }) {\n commit('setCtx', { getters, dispatch, commit, state });\n },\n setQuery({ commit, dispatch }, query) {\n commit('setQuery', query);\n dispatch('setQuerySelectedFilters', query);\n dispatch('setQuerySelectedGroups', query);\n dispatch('setQuerySelectedOrders', query);\n },\n setQuerySelectedFilters({ commit, state, getters }, query) {\n const filters = getters.getFilters;\n const queryFilters = query;\n const selectedFilters = {};\n\n for (let key in queryFilters) {\n const filterValue = queryFilters[key];\n\n if (key === 'pk') {\n queryFilters[state.pk] = filterValue;\n key = state.pk;\n }\n\n if (filters.find((filter) => filter.key === key)) {\n selectedFilters[key] = filterValue;\n }\n }\n\n commit('setSelectedFilters', selectedFilters);\n },\n setQuerySelectedGroups({ commit, state, getters }, query) {\n const groups = getters.getGroups.map((group) => group.key);\n const queryGroups = query?.groups ? query?.groups.split(',') : [];\n const selectedGroups = [];\n\n for (let key of queryGroups) {\n if (key === 'pk') {\n key = state.pk;\n }\n\n if (groups.includes(key)) {\n selectedGroups.push(key);\n }\n }\n\n commit('setSelectedGroups', selectedGroups);\n },\n setQuerySelectedOrders({ commit, state, getters }, query) {\n const orders = getters.getOrders;\n const queryOrders = query?.orders ? query?.orders.split(',') : [];\n const selectedOrders = {};\n\n for (let key of queryOrders) {\n const directionDesc = key.charAt(0) === '-';\n\n if (directionDesc) {\n key = key.substring(1);\n }\n\n if (key === 'pk') {\n queryOrders[state.pk] = queryOrders[key];\n key = state.pk;\n }\n\n if (orders.includes(key)) {\n selectedOrders[key] = directionDesc ? 'desc' : 'asc';\n }\n }\n\n commit('setSelectedOrders', selectedOrders);\n },\n syncSelectedToQuery({ commit, state, getters }) {\n const querySelectedFilters = getters.getSelectedFilters;\n const querySelectedGroups = getters.getSelectedGroups.join(',');\n const querySelectedOrders = Object.entries(getters.getSelectedOrders)\n .map(([direction, field]) => `${direction === 'desc' ? '-' : ''}${field}`)\n .join(',');\n\n const querySelected = {\n filters: querySelectedFilters,\n groups: querySelectedGroups,\n orders: querySelectedOrders,\n };\n\n const queryParams = new URLSearchParams(window.location.search);\n\n for (const queryParam in querySelected) {\n const queryValue = querySelected[queryParam];\n\n if (queryValue) {\n if (typeof queryValue === 'object') {\n Object.entries(getters.getSelectedFilters).forEach(([field, value]) => {\n queryParams.set(field, value.toString());\n });\n } else {\n queryParams.set(queryParam, queryValue);\n }\n }\n }\n\n const queryString = decodeURIComponent(queryParams.toString());\n\n history.pushState(null, null, queryString ? `?${queryString}` : '');\n },\n\n async setItems({ commit, state, getters, dispatch }, items) {\n await dispatch('setCtx');\n\n commit('setItems', items);\n },\n async fetch({ commit, state, getters, dispatch }, options: FetchOptions) {\n const endpoint = getters.getEndpoint('fetch');\n\n if (!endpoint) {\n return;\n }\n\n try {\n commit('setLoading', true);\n const params = getters.getParams;\n const configClientAbort = getters.getState('config.client.abort');\n const cancelTokenPrev = getters.getState('config.client.cancelToken');\n\n if (options?.applyQuery) {\n dispatch('syncSelectedToQuery');\n }\n\n if (options?.filters) {\n params.filters = options.filters;\n }\n\n if (options?.groups) {\n params.groups = options.groups;\n }\n\n if (options?.orders) {\n params.orders = options.orders;\n }\n\n if (configClientAbort && cancelTokenPrev) {\n cancelTokenPrev.cancel();\n }\n\n const cancelToken = this.$axios.CancelToken;\n const source = cancelToken.source();\n\n commit('setState', {\n path: 'config.client.cancelToken',\n value: source,\n });\n\n const response = await this.$axios.get(endpoint, {\n cancelToken: source.token,\n params: params,\n paramsSerializer: (params) => qs.stringify(params, { arrayFormat: 'brackets' }),\n });\n\n let items = response.data.data.items;\n\n dispatch('setItems', items);\n\n return response?.data;\n } catch (e) {\n console.log(e);\n } finally {\n commit('setLoading', false);\n commit('setState', {\n path: 'config.client.cancelToken',\n value: null,\n });\n }\n },\n async create({ commit, state, dispatch, getters }, { data }) {\n const endpoint = getters.getEndpoint('create');\n\n if (!endpoint) {\n return;\n }\n\n try {\n const response = await this.$axios.post(endpoint, {\n data,\n });\n\n return response?.data;\n } catch (e) {\n console.log(e);\n }\n },\n async update({ commit, state, dispatch, getters }, { pk, data, level }) {\n if (level && level.path && level.parentPK) {\n const entity = _.toPath(level.path)[0];\n\n await dispatch(`${entity}/update`, { pk, data }, { root: true });\n\n commit('update', {\n pk,\n data,\n level,\n });\n\n return;\n }\n\n const endpoint = getters.getEndpoint('update', pk);\n\n if (!endpoint || !pk) {\n return;\n }\n\n try {\n const response = await this.$axios.post(endpoint, {\n pk,\n data,\n });\n commit('update', {\n pk,\n data,\n });\n\n return response?.data;\n } catch (e) {\n console.log(e);\n }\n },\n async delete({ commit, state, getters, dispatch }, { pk, level }) {\n if (level && level.path && level.parentPK) {\n const entity = _.toPath(level.path)[0];\n\n await dispatch(`${entity}/delete`, { pk }, { root: true });\n\n commit('delete', {\n pk,\n level,\n });\n\n return;\n }\n\n const endpoint = getters.getEndpoint('delete', pk);\n\n if (!endpoint || !pk) {\n return;\n }\n\n try {\n await this.$axios.post(endpoint, {\n pk: pk,\n });\n commit('delete', { pk });\n } catch (e) {\n console.log(e);\n }\n },\n};\n"],"names":["actions","getters","dispatch","state","commit","query","filters","queryFilters","selectedFilters","key","filterValue","filter","groups","group","queryGroups","selectedGroups","orders","queryOrders","selectedOrders","directionDesc","querySelectedFilters","querySelectedGroups","querySelectedOrders","direction","field","querySelected","queryParams","queryParam","queryValue","value","queryString","items","options","endpoint","params","configClientAbort","cancelTokenPrev","source","response","qs","e","data","pk","level","entity","_"],"mappings":"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"}