import client from './client'; import type { PaginatedResponse } from './users'; export interface DictionaryItemInfo { id: string; dictionary_id: string; label: string; value: string; sort_order: number; color?: string; } export interface DictionaryInfo { id: string; name: string; code: string; description?: string; items: DictionaryItemInfo[]; } export interface CreateDictionaryRequest { name: string; code: string; description?: string; } export interface UpdateDictionaryRequest { name?: string; description?: string; } export async function listDictionaries(page = 1, pageSize = 20) { const { data } = await client.get<{ success: boolean; data: PaginatedResponse }>( '/config/dictionaries', { params: { page, page_size: pageSize } }, ); return data.data; } export async function createDictionary(req: CreateDictionaryRequest) { const { data } = await client.post<{ success: boolean; data: DictionaryInfo }>( '/config/dictionaries', req, ); return data.data; } export async function updateDictionary(id: string, req: UpdateDictionaryRequest) { const { data } = await client.put<{ success: boolean; data: DictionaryInfo }>( `/config/dictionaries/${id}`, req, ); return data.data; } export async function deleteDictionary(id: string) { await client.delete(`/config/dictionaries/${id}`); } export async function listItemsByCode(code: string) { const { data } = await client.get<{ success: boolean; data: DictionaryItemInfo[] }>( '/config/dictionaries/items', { params: { code } }, ); return data.data; } export interface CreateDictionaryItemRequest { label: string; value: string; sort_order?: number; color?: string; } export interface UpdateDictionaryItemRequest { label?: string; value?: string; sort_order?: number; color?: string; } export async function createDictionaryItem( dictionaryId: string, req: CreateDictionaryItemRequest, ) { const { data } = await client.post<{ success: boolean; data: DictionaryItemInfo }>( `/config/dictionaries/${dictionaryId}/items`, req, ); return data.data; } export async function updateDictionaryItem( dictionaryId: string, itemId: string, req: UpdateDictionaryItemRequest, ) { const { data } = await client.put<{ success: boolean; data: DictionaryItemInfo }>( `/config/dictionaries/${dictionaryId}/items/${itemId}`, req, ); return data.data; } export async function deleteDictionaryItem(dictionaryId: string, itemId: string) { await client.delete(`/config/dictionaries/${dictionaryId}/items/${itemId}`); }