index.ts 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. import { OpenAPIHono } from '@hono/zod-openapi';
  2. import uploadPolicyRoute from './upload-policy/post';
  3. import multipartPolicyRoute from './multipart-policy/post';
  4. import completeMultipartRoute from './multipart-complete/post';
  5. import getUrlRoute from './[id]/get-url';
  6. import deleteRoute from './[id]/delete';
  7. import downloadRoute from './[id]/download';
  8. import { AuthContext } from '@/server/types/context';
  9. import { createCrudRoutes } from '@/server/utils/generic-crud.routes';
  10. import { File } from '@/server/modules/files/file.entity';
  11. import { FileSchema, CreateFileDto, UpdateFileDto } from '@/server/modules/files/file.entity';
  12. import { authMiddleware } from '@/server/middleware/auth.middleware';
  13. const fileRoutes = createCrudRoutes({
  14. entity: File,
  15. createSchema: CreateFileDto,
  16. updateSchema: UpdateFileDto,
  17. getSchema: FileSchema,
  18. listSchema: FileSchema,
  19. searchFields: ['name', 'type', 'description'],
  20. relations: ['uploadUser'],
  21. middleware: [authMiddleware]
  22. })
  23. // 创建路由实例并聚合所有子路由
  24. const app = new OpenAPIHono<AuthContext>()
  25. .route('/upload-policy', uploadPolicyRoute)
  26. .route('/multipart-policy', multipartPolicyRoute)
  27. .route('/multipart-complete', completeMultipartRoute)
  28. .route('/', getUrlRoute)
  29. .route('/', deleteRoute)
  30. .route('/', downloadRoute)
  31. .route('/', fileRoutes)
  32. export default app;