import client, { apiPrefix, unwrap, type ApiResponse } from './client' export type Stock = Record & { id: number; state: string; statusLabel: string } export type StockSearch = { total: number; list: Stock[]; counts: Record } export type StockHistoryItem = { id: number processDate?: string statusLabel?: string companyLabel?: string processor?: string } export type StockNoteItem = { id: number stockId?: number contents?: string authorName?: string noteDate?: string } export type StockDetail = { stock: Stock histories: StockHistoryItem[] notes: StockNoteItem[] } export const stockApi = { async search(params: Record) { const { data } = await client.get>(`${apiPrefix()}/stocks/search`, { params }) return unwrap(data) }, async detail(id: number) { const { data } = await client.get>(`${apiPrefix()}/stocks/${id}/detail`) return unwrap(data) }, async save(id: number, payload: Record) { const { data } = await client.put>(`${apiPrefix()}/stocks/${id}`, payload) return unwrap(data) }, async create(payload: Record) { const { data } = await client.post>(`${apiPrefix()}/stocks`, payload) return unwrap(data) }, async remove(id: number) { const { data } = await client.delete(`${apiPrefix()}/stocks/${id}`) return unwrap(data) }, async action(id: number, payload: Record) { const { data } = await client.post>(`${apiPrefix()}/stocks/${id}/action`, payload) return unwrap(data) }, async addNote(id: number, payload: { contents: string; authorName?: string }) { const { data } = await client.post>(`${apiPrefix()}/stocks/${id}/notes`, payload) return unwrap(data) }, async deleteNote(id: number, noteId: number) { const { data } = await client.delete(`${apiPrefix()}/stocks/${id}/notes/${noteId}`) return unwrap(data) }, async bulkIn(payload: Record) { const { data } = await client.post(`${apiPrefix()}/stocks/bulk-in`, payload) return unwrap(data) }, async bulkAction(ids: number[], state: string) { const { data } = await client.post(`${apiPrefix()}/stocks/bulk-action`, { ids, state }) return unwrap(data) }, async sheet(params: Record) { const { data } = await client.get>(`${apiPrefix()}/stocks/sheet`, { params }) return unwrap(data) }, exportUrl(params: Record) { const query = new URLSearchParams(Object.entries(params).filter(([, value]) => value !== undefined && value !== '').map(([key, value]) => [key, String(value)])) return `${apiPrefix()}/stocks/export?${query}` }, }