import client from './client'; export interface PluginDataRecord { id: string; data: Record; created_at?: string; updated_at?: string; version?: number; } interface PaginatedDataResponse { data: PluginDataRecord[]; total: number; page: number; page_size: number; total_pages: number; } export interface PluginDataListOptions { filter?: Record; search?: string; sort_by?: string; sort_order?: 'asc' | 'desc'; } export async function listPluginData( pluginId: string, entity: string, page = 1, pageSize = 20, options?: PluginDataListOptions, ) { const params: Record = { page: String(page), page_size: String(pageSize), }; if (options?.filter) params.filter = JSON.stringify(options.filter); if (options?.search) params.search = options.search; if (options?.sort_by) params.sort_by = options.sort_by; if (options?.sort_order) params.sort_order = options.sort_order; const { data } = await client.get<{ success: boolean; data: PaginatedDataResponse }>( `/plugins/${pluginId}/${entity}`, { params }, ); return data.data; } export async function getPluginData(pluginId: string, entity: string, id: string) { const { data } = await client.get<{ success: boolean; data: PluginDataRecord }>( `/plugins/${pluginId}/${entity}/${id}`, ); return data.data; } export async function createPluginData( pluginId: string, entity: string, recordData: Record, ) { const { data } = await client.post<{ success: boolean; data: PluginDataRecord }>( `/plugins/${pluginId}/${entity}`, { data: recordData }, ); return data.data; } export async function updatePluginData( pluginId: string, entity: string, id: string, recordData: Record, version: number, ) { const { data } = await client.put<{ success: boolean; data: PluginDataRecord }>( `/plugins/${pluginId}/${entity}/${id}`, { data: recordData, version }, ); return data.data; } export async function deletePluginData( pluginId: string, entity: string, id: string, ) { await client.delete(`/plugins/${pluginId}/${entity}/${id}`); }