import { client } from '../client' import { API } from '../endpoints' import type { Item, Unit } from '@/scripts/types/domain/item' import type { ApiResponse, ListParams, DeletePayload, } from '@/scripts/types/api' export interface ItemListParams extends ListParams { filter?: Record } export interface ItemListMeta { current_page: number last_page: number per_page: number total: number item_total_count: number } export interface ItemListResponse { data: Item[] meta: ItemListMeta } export interface CreateItemPayload { name: string description?: string | null price: number unit_id?: number | null taxes?: Array<{ tax_type_id: number }> } export interface CreateUnitPayload { name: string } export const itemService = { async list(params?: ItemListParams): Promise { const { data } = await client.get(API.ITEMS, { params }) return data }, async get(id: number): Promise> { const { data } = await client.get(`${API.ITEMS}/${id}`) return data }, async create(payload: CreateItemPayload): Promise> { const { data } = await client.post(API.ITEMS, payload) return data }, async update(id: number, payload: Partial): Promise> { const { data } = await client.put(`${API.ITEMS}/${id}`, payload) return data }, async delete(payload: DeletePayload): Promise<{ success: boolean }> { const { data } = await client.post(API.ITEMS_DELETE, payload) return data }, // Units async listUnits(params?: ListParams): Promise> { const { data } = await client.get(API.UNITS, { params }) return data }, async getUnit(id: number): Promise> { const { data } = await client.get(`${API.UNITS}/${id}`) return data }, async createUnit(payload: CreateUnitPayload): Promise> { const { data } = await client.post(API.UNITS, payload) return data }, async updateUnit(id: number, payload: CreateUnitPayload): Promise> { const { data } = await client.put(`${API.UNITS}/${id}`, payload) return data }, async deleteUnit(id: number): Promise<{ success: boolean }> { const { data } = await client.delete(`${API.UNITS}/${id}`) return data }, }