Files
seclusion/plop/templates/web/service.hbs
charilezhou 3119460f13 feat(plop): 优化生成器支持 Prisma 关联关系
- 支持一对多/多对一关系定义并生成到 Prisma schema
- 简化流程:查询关联配置根据关系自动预填
- 修复 Handlebars 模板 HTML 转义导致的乱码问题
- 修复 controller 模板缺少 Prisma 导入的问题
- 新增页面模板 (page.hbs) 生成前端页面
- 添加 FindAllParams/PaginationQueryDto 索引签名修复类型兼容

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-19 17:30:18 +08:00

73 lines
2.1 KiB
Handlebars

import type {
PaginatedResponse,
Create{{pascalCase name}}Dto,
Update{{pascalCase name}}Dto,
{{pascalCase name}}Response,
} from '@seclusion/shared';
import { API_ENDPOINTS } from '@/config/constants';
import { http } from '@/lib/http';
export interface Get{{pascalCase pluralName}}Params {
page?: number;
pageSize?: number;
{{#each queryFields}}
{{name}}?: string;
{{/each}}
}
const BASE_URL = API_ENDPOINTS.{{constantCase pluralName}};
export const {{camelCase name}}Service = {
// 获取{{chineseName}}列表
get{{pascalCase pluralName}}: (
params: Get{{pascalCase pluralName}}Params = {},
): Promise<PaginatedResponse<{{pascalCase name}}Response>> => {
return http.get<PaginatedResponse<{{pascalCase name}}Response>>(BASE_URL, { params });
},
{{#if softDelete}}
// 获取已删除的{{chineseName}}列表
getDeleted{{pascalCase pluralName}}: (
params: Get{{pascalCase pluralName}}Params = {},
): Promise<PaginatedResponse<{{pascalCase name}}Response>> => {
return http.get<PaginatedResponse<{{pascalCase name}}Response>>(
`${BASE_URL}/deleted`,
{ params },
);
},
{{/if}}
// 获取单个{{chineseName}}
get{{pascalCase name}}: (id: string): Promise<{{pascalCase name}}Response> => {
return http.get<{{pascalCase name}}Response>(`${BASE_URL}/${id}`);
},
// 创建{{chineseName}}
create{{pascalCase name}}: (
data: Create{{pascalCase name}}Dto,
): Promise<{{pascalCase name}}Response> => {
return http.post<{{pascalCase name}}Response>(BASE_URL, data);
},
// 更新{{chineseName}}
update{{pascalCase name}}: (
id: string,
data: Update{{pascalCase name}}Dto,
): Promise<{{pascalCase name}}Response> => {
return http.patch<{{pascalCase name}}Response>(`${BASE_URL}/${id}`, data);
},
// 删除{{chineseName}}
delete{{pascalCase name}}: (id: string): Promise<void> => {
return http.delete<void>(`${BASE_URL}/${id}`);
},
{{#if softDelete}}
// 恢复{{chineseName}}
restore{{pascalCase name}}: (id: string): Promise<{{pascalCase name}}Response> => {
return http.patch<{{pascalCase name}}Response>(`${BASE_URL}/${id}/restore`);
},
{{/if}}
};