index.ts 1.3 KB

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