import Vue from 'vue' export const state = () => ({ projectApiFilePaths: {}, activeEnvironment: {}, currentProjectKey: '' }) export const mutations = { MutApiFilePathsAdd(state, args) { state.projectApiFilePaths = { ...state.projectApiFilePaths, [state.currentProjectKey]: [...state.projectApiFilePaths[state.currentProjectKey], args] } }, MutApiFilePathsRemove(state, index) { state.projectApiFilePaths[state.currentProjectKey].splice(index, 1) state.projectApiFilePaths[state.currentProjectKey] = [...state.projectApiFilePaths[state.currentProjectKey]] }, MutListAdd(state, args) { state.list.unshift(args) if (state.list.length > 500) { state.list.pop() } }, MutListRemove(state, index) { // find index and set status state.list.splice(index, 1) // state.list = [...state.list] }, MutList(state, list) { state.projectApiFilePaths[state.currentProjectKey] = list }, MutCurrentProjectKey(state, currentProjectKey) { state.currentProjectKey = currentProjectKey }, MutActiveEnvironment(state, { env }) { Vue.set(state.activeEnvironment, state.currentProjectKey, env) } } export const getters = { GtrCurrentApiFilePaths(state) { return state.projectApiFilePaths[state.currentProjectKey] } } export const actions = { async send({ commit, state, rootGetters }, { apiDecoded, api }) { const apiMeta = { ...apiDecoded } // let t, t1, t2 // return (await rootGetters['sqlMgr/sqlMgr'].sqlOp(null, 'handleApiCall', apiMeta)); return (await this.dispatch('sqlMgr/ActSqlOp', [null, 'handleApiCall', apiMeta])) // // try { // commit('notification/MutToggleProgressBar', true, {root: true}); // const req = XcApiHelp.axiosRequestMake(apiMeta); // console.log(req); // // // if (Object.values(apiMeta.perf).every(v => !v)) { // // // t = process.hrtime(); // let data = await axios(req); // // // t1 = process.hrtime(t); // // t2 = (t1[0] + t1[1] / 1000000000).toFixed(2); // // apiMeta.response.status = data.status; // apiMeta.response.headers = data.headers; // apiMeta.response.data = data.data; // console.log(data); // } else { // this.$toast.info('Starting performance test').goAway(3000); // try { // const res = await autocannon({ // ...req,` // ...apiMeta.perf, // body: req.data // }); // console.log('perf result', res) // // apiMeta.response.status = 200; // apiMeta.response.headers = []; // apiMeta.response.data = res; // // this.$toast.info('Finished performance test').goAway(3000); // // } catch (e) { // console.log(e) // apiMeta.response.status = 400; // apiMeta.response.data = e; // } // // } // } catch (e) { // // t1 = process.hrtime(t); // // t2 = (t1[0] + t1[1] / 1000000000).toFixed(2); // // console.log(e, Object.keys(e), Object.entries(e)); // apiMeta.response = e.response; // if (apiMeta.response) // delete apiMeta.response.request // //throw e; // } finally { // commit('notification/MutToggleProgressBar', false, {root: true}); // } // return { // ...apiMeta, // body: JSON.stringify(apiMeta.body, 0, 2), // response: { // ...apiMeta.response, // timeTaken: t2, // createdAt: Date.now() // } // }; }, async loadApiCollectionForProject({ commit, state }, { projectName = '__default', projectId = '__id' }) { const key = projectName + '__' + projectId commit('MutCurrentProjectKey', key) if (!(key in state.projectApiFilePaths)) { commit('MutList', []) } } } /** * @copyright Copyright (c) 2021, Xgene Cloud Ltd * * @author Naveen MR <oof1lab@gmail.com> * @author Pranav C Balan <pranavxc@gmail.com> * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * */