import { request } from '~/utils/request';
import { <%= capitalized %> } from './types';

export const <%= name %>Read = request.table<<%= capitalized %>>(async ({ api }) => {
  const res = await api.get<{ list: <%= capitalized %>[] }>('/<%= pluralized %>');
  
  if (res.error) {
    return {
      data: {
        rows: [],
        pagination: null,
      },
    };
  }
  
  return {
    data: {
      rows: res.data.list,
      pagination: {
        currentPage: 1,
        totalPages: 1,
        totalItems: 1,
      },
    },
  };
});

export const <%= name %>Get = request.card<<%= capitalized %>, <%= capitalized %>>(async ({ api, data, parseError }) => {
  const res = await api.get<{ <%= name %>: <%= capitalized %> }>(`/<%= pluralized %>/${data.id}`);
  if (res.error) {
    return { error: parseError(res.error) };
  }
  return { data: res.data.<%= name %> };
});

export const <%= name %>Create = request.card<<%= capitalized %>, <%= capitalized %>>(async ({ api, data, parseError }) => {
  const res = await api.post<{ <%= name %>: <%= capitalized %> }>('/<%= pluralized %>', data.data);
  if (res.error) {
    return { error: parseError?.(res.error) };
  }
  return { data: res.data.<%= name %> };
});

export const <%= name %>Update = request.card<<%= capitalized %>, <%= capitalized %>>(async ({ api, data, parseError }) => {
  const res = await api.post<{ <%= name %>: <%= capitalized %> }>(`/<%= pluralized %>/${data.id}`, data.data);
  if (res.error) {
    return { error: parseError(res.error) };
  }
  return { data: res.data.<%= name %> };
});

export const <%= name %>Delete = request.card<{ data: 'ok' }, <%= capitalized %>>(async ({ api, data, parseError }) => {
  const res = await api.delete(`/<%= pluralized %>/${data.id}`);
  if (res.error) {
    return { error: parseError(res.error) };
  }
  return { data: res.data };
});
