import Vue from 'vue';
import Vuex from 'vuex';
import _ from 'lodash';
import axios from 'axios';
Vue.use(Vuex);
const api = {
  interface: `/api/onlive/uploadquestion`,
};
const state = () => ({});
const mutations = {};

const actions = {
  async query({ commit }, { skip = 0, limit, ...info } = {}) {
    const res = await this.$axios.$get(`${api.interface}`, { skip, limit, ...info });
    return res;
  },
  async create({ commit }, payload) {
    const res = await this.$axios.$post(`${api.interface}`, payload);
    return res;
  },
  async fetch({ commit }, payload) {
    const res = await this.$axios.$get(`${api.interface}/${payload}`);
    return res;
  },
  async update({ commit }, { id, ...data }) {
    const res = await this.$axios.$post(`${api.interface}/update/${id}`, data);
    return res;
  },
  async delete({ commit }, payload) {
    const res = await this.$axios.$delete(`${api.interface}/${payload}`);
    return res;
  },
  async mergeRequest({ commit, dispatch }, { method, data }) {
    let toRequest = () => {
      let res = [];
      for (const i of data) {
        res.push(dispatch(method, i));
      }
      return res;
    };
    let result = await axios.all(toRequest());
    let newFilter = data => {
      let res = data.map(i => {
        let type = _.isArray(i);
        if (!type) {
          //fetch的多个请求 是object 将errcode为0的data取出来
          return _.get(i, `data`, i);
        } else {
          //query的多个请求 array 将此数据再次走这个方法
          return newFilter(i);
        }
      });
      return res;
    };
    let returns = _.flattenDeep(newFilter(result));
    return returns;
  },
};
export default {
  namespaced: true,
  state,
  mutations,
  actions,
};
