index.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import { createCrudRoutes } from '@/server/utils/generic-crud.routes';
  2. import { OpenAPIHono } from '@hono/zod-openapi';
  3. import { Goods } from '@/server/modules/goods/goods.entity';
  4. import { GoodsSchema, CreateGoodsDto, UpdateGoodsDto } from '@/server/modules/goods/goods.schema';
  5. import { authMiddleware } from '@/server/middleware/auth.middleware';
  6. import { File } from '@/server/modules/files/file.entity';
  7. import randomRoute from './random';
  8. // 创建基础CRUD路由
  9. const goodsRoutes = createCrudRoutes({
  10. entity: Goods,
  11. createSchema: CreateGoodsDto,
  12. updateSchema: UpdateGoodsDto,
  13. getSchema: GoodsSchema,
  14. listSchema: GoodsSchema,
  15. searchFields: ['name', 'instructions'],
  16. relations: ['category1', 'category2', 'category3', 'supplier', 'imageFile.uploadUser', 'slideImages.uploadUser'],
  17. middleware: [authMiddleware],
  18. userTracking: {
  19. createdByField: 'created_by',
  20. updatedByField: 'updated_by'
  21. },
  22. relationFields: {
  23. slideImageIds: {
  24. relationName: 'slideImages',
  25. targetEntity: File,
  26. joinTableName: 'goods_slide_images'
  27. }
  28. }
  29. });
  30. // 聚合基础CRUD路由和扩展路由
  31. const app = new OpenAPIHono()
  32. .route('/random', randomRoute) // 随机商品列表路由
  33. .route('/', goodsRoutes) // 基础CRUD路由
  34. export default app;