- pluginData API: 支持 filter/search/sort_by/sort_order 参数 - plugins API: 新增 PluginFieldSchema/PluginEntitySchema/PluginPageSchema 类型 - PluginCRUDPage: 添加搜索框、筛选栏、视图切换(表格/时间线) - PluginCRUDPage: 添加详情 Drawer(Descriptions + 嵌套 CRUD) - PluginCRUDPage: 支持 visible_when 条件表单字段动态显示/隐藏 - PluginCRUDPage: 支持 compact 模式用于 detail 页面内嵌
89 lines
2.1 KiB
TypeScript
89 lines
2.1 KiB
TypeScript
import client from './client';
|
|
|
|
export interface PluginDataRecord {
|
|
id: string;
|
|
data: Record<string, unknown>;
|
|
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<string, string>;
|
|
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<string, string> = {
|
|
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<string, unknown>,
|
|
) {
|
|
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<string, unknown>,
|
|
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}`);
|
|
}
|