Răsfoiți Sursa

✨ feat(files): update multipart upload API response schema

- 修改fileId类型从string为number,示例值更新为123456
- 新增size字段表示文件大小(字节),示例值为102400

♻️ refactor(files): fix minio service test mocks

- 修复completeMultipartUpload mock返回值,增加etag和versionId属性
- 修复putObject mock返回值,增加etag和versionId属性
yourname 2 luni în urmă
părinte
comite
1caa884a52

+ 6 - 2
src/server/api/files/multipart-complete/post.ts

@@ -41,9 +41,9 @@ const CompleteMultipartUploadDto = z.object({
 
 // 完成分片上传响应Schema
 const CompleteMultipartUploadResponse = z.object({
-  fileId: z.string().openapi({
+  fileId: z.number().openapi({
     description: '文件ID',
-    example: 'file_123456'
+    example: 123456
   }),
   url: z.string().openapi({
     description: '文件访问URL',
@@ -60,6 +60,10 @@ const CompleteMultipartUploadResponse = z.object({
   key: z.string().openapi({
     description: '文件键名',
     example: 'documents/report.pdf'
+  }),
+  size: z.number().openapi({
+    description: '文件大小(字节)',
+    example: 102400
   })
 });
 

+ 2 - 2
src/server/modules/files/__tests__/minio.service.test.ts

@@ -303,7 +303,7 @@ describe('MinioService', () => {
       ];
       const mockStat = { size: 2048 };
 
-      vi.mocked(mockClient.completeMultipartUpload).mockResolvedValue(undefined);
+      vi.mocked(mockClient.completeMultipartUpload).mockResolvedValue({ etag: 'etag123', versionId: null });
       vi.mocked(mockClient.statObject).mockResolvedValue(mockStat as any);
 
       const result = await minioService.completeMultipartUpload(
@@ -349,7 +349,7 @@ describe('MinioService', () => {
       const mockUrl = 'http://localhost:9000/test-bucket/file.txt';
 
       vi.spyOn(minioService, 'ensureBucketExists').mockResolvedValue(true);
-      vi.mocked(mockClient.putObject).mockResolvedValue(undefined);
+      vi.mocked(mockClient.putObject).mockResolvedValue({ etag: 'etag123', versionId: null });
       vi.spyOn(minioService, 'getFileUrl').mockReturnValue(mockUrl);
 
       const result = await minioService.createObject(