import api from './client';
import api_form from './client_form';

export const TablesApi = {
  create(payload) {
    return api.post('/table-data/', payload).then((r) => r.data);
  },
  get(tableId) {
    return api.get(`/table-data/${tableId}`).then((r) => r.data);
  },
  createTemp(payload) {
    return api
      .post('/table-data/templates/templates', payload)
      .then((r) => r.data);
  },
  listByTask(taskId) {
    return api
      .get('/table-data/', { params: { task_id: taskId } })
      .then((r) => r.data);
  },
  uploadExcel(tableId, form) {
    return api_form
      .post(`/table-data/upload-excel/${tableId}`, form)
      .then((r) => r.data);
  },
  getTableSchema(tableId) {
    return api.get(`/table-data/${tableId}`).then((r) => r.data);
  },
  getTemplateInfo(tableId) {
    return api
      .get(`/table-data/templates/templates/${tableId}`)
      .then((r) => r.data);
  },
  updateTemplateInfo(tableId, table) {
    return api
      .put(`/table-data/templates/templates/${tableId}`, table)
      .then((r) => r.data);
  },
  getTemplateSchema(params) {
    return api
      .get(`/table-data/${params.table_id}/chunk`, { params })
      .then((r) => r.data);
  },
  bulkUpdate(tableId, payload) {
    return api
      .post(`/table-data/bulk-update/${tableId}`, payload)
      .then((r) => r.data);
  },
  bulkUpdateTemp(tableId, payload) {
    return api
      .put(`/table-data/temp-cells/bulk-update`, payload)
      .then((r) => r.data);
  },
  createColumn(tableId, payload) {
    return api
      .post(
        `/table-data/templates/templates/${tableId}/headers?template_id=${tableId}`,
        { template_id: tableId, ...payload },
      )
      .then((r) => r.data);
  },
  createHeaders(tableId, payload) {
    return api
      .post(`table-data/templates/templates/${tableId}/headers/list`, payload)
      .then((r) => r.data);
  },
  insertRow(tableId, row) {
    return api
      .post(`/table-data/templates/templates/${tableId}/rows/${row}`)
      .then((r) => r.data);
  },
  insertTableRow(tableId, row) {
    return api
      .post(`/table-data/test/test/${tableId}/rows/${row}`)
      .then((r) => r.data);
  },
  deleteRow(tableId, row) {
    return api
      .delete(`/table-data/templates/templates/${tableId}/rows/${row}`)
      .then((r) => r.data);
  },
  deleteCol(header_id) {
    return api
      .delete(`/table-data/templates/headers/${header_id}`)
      .then((r) => r.data);
  },
  updateCol(body) {
    return api.put(`/table-data/templates/headers/`, body).then((r) => r.data);
  },
  getHeader(tableId) {
    return api.get(`/table-data/${tableId}/headers`).then((r) => r.data);
  },
  countFormulas(tableId, payload) {
    return api
      .post(`/table-data/formulas/count/${tableId}/`, payload)
      .then((r) => r.data);
  },
  countFormulasList(tableId, payload) {
    return api
      .post(`/table-data/formulas/count/${tableId}/list`, payload)
      .then((r) => r.data);
  },
  getTableInfo(tableId) {
    return api.get(`table-data/${tableId}/metadata`).then((r) => r.data);
  },
  exportTable(taskId, tableId) {
    return api.get(`export/task/${taskId}/sheet/${tableId}`, {
      responseType: 'blob',
    });
  },
};
