sa2kit 1.6.7 → 1.6.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/dist/calendar/index.js +334 -399
  2. package/dist/calendar/index.js.map +1 -1
  3. package/dist/calendar/index.mjs +241 -306
  4. package/dist/calendar/index.mjs.map +1 -1
  5. package/dist/calendar/routes/index.js +21 -21
  6. package/dist/calendar/routes/index.mjs +1 -1
  7. package/dist/calendar/server.js +13 -13
  8. package/dist/calendar/server.mjs +2 -2
  9. package/dist/chunk-4FOBBWXW.mjs +179 -0
  10. package/dist/chunk-4FOBBWXW.mjs.map +1 -0
  11. package/dist/chunk-CDK3DHKM.mjs +634 -0
  12. package/dist/chunk-CDK3DHKM.mjs.map +1 -0
  13. package/dist/chunk-G6WRJ2H2.js +187 -0
  14. package/dist/chunk-G6WRJ2H2.js.map +1 -0
  15. package/dist/{chunk-6WXOA4BE.mjs → chunk-GVVS4IMM.mjs} +2 -2
  16. package/dist/chunk-GVVS4IMM.mjs.map +1 -0
  17. package/dist/chunk-L5PW2YTI.js +647 -0
  18. package/dist/chunk-L5PW2YTI.js.map +1 -0
  19. package/dist/{chunk-AXP7KROR.js → chunk-WC5QFO3T.js} +2 -2
  20. package/dist/chunk-WC5QFO3T.js.map +1 -0
  21. package/dist/index.js +15 -7
  22. package/dist/index.js.map +1 -1
  23. package/dist/index.mjs +6 -6
  24. package/dist/index.mjs.map +1 -1
  25. package/dist/mmd/index.js +2 -2
  26. package/dist/mmd/index.mjs +1 -1
  27. package/dist/music/index.js +14 -6
  28. package/dist/music/index.mjs +1 -1
  29. package/package.json +41 -7
  30. package/dist/ConfigService-BxK06xP6.d.mts +0 -262
  31. package/dist/ConfigService-BxK06xP6.d.ts +0 -262
  32. package/dist/UniversalFileService-BuHN-jrR.d.ts +0 -515
  33. package/dist/UniversalFileService-CGGzYeeF.d.mts +0 -515
  34. package/dist/analytics/index.d.mts +0 -1084
  35. package/dist/analytics/index.d.ts +0 -1084
  36. package/dist/analytics/server/index.d.mts +0 -499
  37. package/dist/analytics/server/index.d.ts +0 -499
  38. package/dist/api/index.d.mts +0 -248
  39. package/dist/api/index.d.ts +0 -248
  40. package/dist/audioDetection/index.d.mts +0 -449
  41. package/dist/audioDetection/index.d.ts +0 -449
  42. package/dist/auth/client/index.d.mts +0 -153
  43. package/dist/auth/client/index.d.ts +0 -153
  44. package/dist/auth/components/index.d.mts +0 -227
  45. package/dist/auth/components/index.d.ts +0 -227
  46. package/dist/auth/hooks/index.d.mts +0 -31
  47. package/dist/auth/hooks/index.d.ts +0 -31
  48. package/dist/auth/index.d.mts +0 -40
  49. package/dist/auth/index.d.ts +0 -40
  50. package/dist/auth/middleware/index.d.mts +0 -75
  51. package/dist/auth/middleware/index.d.ts +0 -75
  52. package/dist/auth/routes/index.d.mts +0 -261
  53. package/dist/auth/routes/index.d.ts +0 -261
  54. package/dist/auth/schema/index.d.mts +0 -789
  55. package/dist/auth/schema/index.d.ts +0 -789
  56. package/dist/auth/services/index.d.mts +0 -48
  57. package/dist/auth/services/index.d.ts +0 -48
  58. package/dist/calendar/index.d.mts +0 -1197
  59. package/dist/calendar/index.d.ts +0 -1197
  60. package/dist/calendar/routes/index.d.mts +0 -118
  61. package/dist/calendar/routes/index.d.ts +0 -118
  62. package/dist/calendar/server.d.mts +0 -1184
  63. package/dist/calendar/server.d.ts +0 -1184
  64. package/dist/chunk-6WXOA4BE.mjs.map +0 -1
  65. package/dist/chunk-AXP7KROR.js.map +0 -1
  66. package/dist/chunk-GAC4J5GX.js +0 -228
  67. package/dist/chunk-GAC4J5GX.js.map +0 -1
  68. package/dist/chunk-IEA55H3G.js +0 -106
  69. package/dist/chunk-IEA55H3G.js.map +0 -1
  70. package/dist/chunk-R2F4BXUU.mjs +0 -100
  71. package/dist/chunk-R2F4BXUU.mjs.map +0 -1
  72. package/dist/chunk-T6TE7GTY.mjs +0 -218
  73. package/dist/chunk-T6TE7GTY.mjs.map +0 -1
  74. package/dist/config/index.d.mts +0 -64
  75. package/dist/config/index.d.ts +0 -64
  76. package/dist/config/server/index.d.mts +0 -1533
  77. package/dist/config/server/index.d.ts +0 -1533
  78. package/dist/drizzle-auth-service-Bxlovhv8.d.ts +0 -145
  79. package/dist/drizzle-auth-service-DZY2F1sv.d.mts +0 -145
  80. package/dist/drizzle-schema-BNhqj2AZ.d.mts +0 -1114
  81. package/dist/drizzle-schema-BNhqj2AZ.d.ts +0 -1114
  82. package/dist/enums-Dume-V5Y.d.mts +0 -16
  83. package/dist/enums-Dume-V5Y.d.ts +0 -16
  84. package/dist/i18n/index.d.mts +0 -417
  85. package/dist/i18n/index.d.ts +0 -417
  86. package/dist/imageCrop/index.d.mts +0 -165
  87. package/dist/imageCrop/index.d.ts +0 -165
  88. package/dist/index-DSel44Ke.d.mts +0 -93
  89. package/dist/index-DSel44Ke.d.ts +0 -93
  90. package/dist/index.d.mts +0 -671
  91. package/dist/index.d.ts +0 -671
  92. package/dist/logger/index.d.mts +0 -125
  93. package/dist/logger/index.d.ts +0 -125
  94. package/dist/mmd/admin/index.d.mts +0 -487
  95. package/dist/mmd/admin/index.d.ts +0 -487
  96. package/dist/mmd/index.d.mts +0 -599
  97. package/dist/mmd/index.d.ts +0 -599
  98. package/dist/mmd/server/index.d.mts +0 -138
  99. package/dist/mmd/server/index.d.ts +0 -138
  100. package/dist/music/index.d.mts +0 -79
  101. package/dist/music/index.d.ts +0 -79
  102. package/dist/music/server/index.d.mts +0 -1
  103. package/dist/music/server/index.d.ts +0 -1
  104. package/dist/request/index.d.mts +0 -51
  105. package/dist/request/index.d.ts +0 -51
  106. package/dist/storage/index.d.mts +0 -75
  107. package/dist/storage/index.d.ts +0 -75
  108. package/dist/testYourself/admin/index.d.mts +0 -58
  109. package/dist/testYourself/admin/index.d.ts +0 -58
  110. package/dist/testYourself/index.d.mts +0 -53
  111. package/dist/testYourself/index.d.ts +0 -53
  112. package/dist/testYourself/server/index.d.mts +0 -1029
  113. package/dist/testYourself/server/index.d.ts +0 -1029
  114. package/dist/types-B60F7EZZ.d.mts +0 -248
  115. package/dist/types-B60F7EZZ.d.ts +0 -248
  116. package/dist/types-BINlP9MK.d.mts +0 -286
  117. package/dist/types-BINlP9MK.d.ts +0 -286
  118. package/dist/types-BaZccpvk.d.mts +0 -48
  119. package/dist/types-BaZccpvk.d.ts +0 -48
  120. package/dist/types-CK4We_aI.d.mts +0 -270
  121. package/dist/types-CK4We_aI.d.ts +0 -270
  122. package/dist/types-CbTsi9CZ.d.mts +0 -31
  123. package/dist/types-CbTsi9CZ.d.ts +0 -31
  124. package/dist/types-CroexXnI.d.ts +0 -99
  125. package/dist/types-DmsXCWvm.d.mts +0 -99
  126. package/dist/types-Dt0oqeFM.d.mts +0 -70
  127. package/dist/types-zK6kDzDQ.d.ts +0 -70
  128. package/dist/universalExport/index.d.mts +0 -235
  129. package/dist/universalExport/index.d.ts +0 -235
  130. package/dist/universalExport/server/index.d.mts +0 -1270
  131. package/dist/universalExport/server/index.d.ts +0 -1270
  132. package/dist/universalFile/index.d.mts +0 -480
  133. package/dist/universalFile/index.d.ts +0 -480
  134. package/dist/universalFile/server/index.d.mts +0 -4516
  135. package/dist/universalFile/server/index.d.ts +0 -4516
  136. package/dist/useElectronStorage-Dj0rcorG.d.mts +0 -65
  137. package/dist/useElectronStorage-DwnNfIhl.d.ts +0 -65
  138. package/dist/utils/index.d.mts +0 -192
  139. package/dist/utils/index.d.ts +0 -192
@@ -1,4516 +0,0 @@
1
- import { a as UniversalFileServiceConfig, S as StorageConfig, I as IStorageProvider, b as StorageType, c as UploadFileInfo, d as StorageResult, e as ICDNProvider, C as CDNType, f as CDNConfig, g as CDNResult, h as IFileProcessor, P as ProcessorType, i as ProcessingOptions, j as ProcessingResult, k as IFileMetadataRepository, A as AliyunOSSConfig, l as AliyunCDNConfig, L as LocalStorageConfig, U as UniversalFileService } from '../../UniversalFileService-BuHN-jrR.js';
2
- export { B as CDNProviderError, o as CDNStats, m as CacheConfig, t as FileEvent, u as FileEventListener, v as FileEventType, y as FileProcessingError, r as FileQueryOptions, q as FileRecord, w as FileServiceError, F as FileServicePersistenceConfig, x as FileUploadError, s as PaginatedResult, p as ProcessorInfo, n as StorageMetadata, z as StorageProviderError } from '../../UniversalFileService-BuHN-jrR.js';
3
- import { I as ImageProcessingOptions, l as AudioProcessingOptions, V as VideoProcessingOptions } from '../../types-CK4We_aI.js';
4
- import { EventEmitter } from 'events';
5
- import { NextResponse } from 'next/server';
6
- import * as drizzle_orm from 'drizzle-orm';
7
- import * as drizzle_orm_pg_core from 'drizzle-orm/pg-core';
8
-
9
- /**
10
- * UniversalFile Service 工厂函数
11
- * 提供简化的服务初始化方式
12
- */
13
-
14
- /**
15
- * 创建文件服务配置(带智能默认值)
16
- */
17
- declare function createFileServiceConfig(options: Partial<UniversalFileServiceConfig> & {
18
- storage: StorageConfig | 'local';
19
- }): UniversalFileServiceConfig;
20
- /**
21
- * 创建文件服务实例(简化版)
22
- *
23
- * @example
24
- * ```typescript
25
- * // 最简配置 - 使用本地存储
26
- * const service = createUniversalFileService({ storage: 'local' });
27
- *
28
- * // 标准配置 - 使用阿里云 OSS
29
- * const service = createUniversalFileService({
30
- * storage: {
31
- * type: 'aliyun-oss',
32
- * config: {
33
- * accessKeyId: process.env.OSS_KEY!,
34
- * accessKeySecret: process.env.OSS_SECRET!,
35
- * bucket: process.env.OSS_BUCKET!,
36
- * region: process.env.OSS_REGION!,
37
- * },
38
- * },
39
- * db: drizzleDb,
40
- * });
41
- * ```
42
- */
43
- declare function createUniversalFileService(options: Partial<UniversalFileServiceConfig> & {
44
- storage: StorageConfig | 'local';
45
- }): {
46
- config: UniversalFileServiceConfig;
47
- upload(): Promise<never>;
48
- download(): Promise<never>;
49
- };
50
- /**
51
- * 从环境变量创建配置(便利函数)
52
- *
53
- * @example
54
- * ```typescript
55
- * // .env
56
- * // STORAGE_TYPE=aliyun-oss
57
- * // OSS_ACCESS_KEY_ID=xxx
58
- * // OSS_ACCESS_KEY_SECRET=xxx
59
- * // OSS_BUCKET=my-bucket
60
- * // OSS_REGION=oss-cn-hangzhou
61
- *
62
- * const service = createFileServiceFromEnv();
63
- * ```
64
- */
65
- declare function createFileServiceFromEnv(db?: any): {
66
- config: UniversalFileServiceConfig;
67
- upload(): Promise<never>;
68
- download(): Promise<never>;
69
- };
70
-
71
- /**
72
- * UniversalFile 预设配置
73
- * 提供常见场景的开箱即用配置
74
- */
75
-
76
- /**
77
- * 本地开发环境预设
78
- */
79
- declare function createLocalDevPreset(baseUrl?: string): StorageConfig;
80
- /**
81
- * 生产环境 OSS 预设
82
- */
83
- declare function createAliyunOSSPreset(config: {
84
- accessKeyId: string;
85
- accessKeySecret: string;
86
- bucket: string;
87
- region?: string;
88
- }): StorageConfig;
89
- /**
90
- * 智能预设:根据环境自动选择
91
- */
92
- declare function createSmartPreset(): StorageConfig;
93
- /**
94
- * 图片服务预设(针对图片处理优化)
95
- */
96
- declare function createImageServicePreset(storage: StorageConfig): {
97
- storage: StorageConfig;
98
- maxFileSize: number;
99
- allowedMimeTypes: string[];
100
- };
101
- /**
102
- * 视频服务预设(针对大文件优化)
103
- */
104
- declare function createVideoServicePreset(storage: StorageConfig): {
105
- storage: StorageConfig;
106
- maxFileSize: number;
107
- allowedMimeTypes: string[];
108
- enableStreaming: boolean;
109
- };
110
- /**
111
- * 文档服务预设
112
- */
113
- declare function createDocumentServicePreset(storage: StorageConfig): {
114
- storage: StorageConfig;
115
- maxFileSize: number;
116
- allowedMimeTypes: string[];
117
- };
118
-
119
- /**
120
- * UniversalFile 配置验证
121
- */
122
-
123
- declare class ConfigValidationError extends Error {
124
- field: string;
125
- constructor(message: string, field: string);
126
- }
127
- /**
128
- * 验证存储配置
129
- */
130
- declare function validateStorageConfig(storage: StorageConfig): void;
131
- /**
132
- * 验证完整的服务配置
133
- */
134
- declare function validateServiceConfig(config: UniversalFileServiceConfig): void;
135
- /**
136
- * 验证环境变量
137
- */
138
- declare function validateEnvironment(requiredVars: string[]): void;
139
- /**
140
- * 获取环境变量所需的变量列表(根据存储类型)
141
- */
142
- declare function getRequiredEnvVars(storageType: string): string[];
143
-
144
- /**
145
- * 本地存储提供者实现
146
- */
147
-
148
- /**
149
- * 本地文件系统存储提供者
150
- */
151
- declare class LocalStorageProvider implements IStorageProvider {
152
- readonly type: StorageType;
153
- private config;
154
- private isInitialized;
155
- /**
156
- * 初始化存储提供者
157
- */
158
- initialize(config: StorageConfig): Promise<void>;
159
- /**
160
- * 上传文件
161
- */
162
- upload(fileInfo: UploadFileInfo, filePath: string): Promise<StorageResult>;
163
- /**
164
- * 下载文件
165
- */
166
- download(path: string): Promise<Buffer>;
167
- /**
168
- * 删除文件
169
- */
170
- delete(path: string): Promise<StorageResult>;
171
- /**
172
- * 获取文件信息
173
- */
174
- getFileInfo(path: string): Promise<StorageResult>;
175
- /**
176
- * 生成访问URL
177
- */
178
- getAccessUrl(path: string, _expiresIn?: number): Promise<string>;
179
- /**
180
- * 生成预签名上传URL
181
- */
182
- getUploadUrl(path: string, _expiresIn?: number): Promise<string>;
183
- /**
184
- * 检查文件是否存在
185
- */
186
- exists(path: string): Promise<boolean>;
187
- /**
188
- * 列出文件
189
- */
190
- list(prefix: string, maxKeys?: number): Promise<string[]>;
191
- /**
192
- * 确保已初始化
193
- */
194
- private ensureInitialized;
195
- /**
196
- * 获取完整文件路径
197
- */
198
- private getFullPath;
199
- /**
200
- * 生成访问URL
201
- */
202
- private generateAccessUrl;
203
- /**
204
- * 确保目录存在
205
- */
206
- private ensureDirectoryExists;
207
- /**
208
- * 验证目录访问权限
209
- */
210
- private validateDirectoryAccess;
211
- /**
212
- * 流式上传大文件(可选实现)
213
- */
214
- uploadStream(readableStream: NodeJS.ReadableStream, filePath: string): Promise<StorageResult>;
215
- /**
216
- * 流式下载大文件(可选实现)
217
- */
218
- createDownloadStream(path: string): NodeJS.ReadableStream;
219
- }
220
-
221
- /**
222
- * 阿里云OSS存储提供者实现
223
- */
224
-
225
- /**
226
- * 阿里云OSS存储提供者
227
- */
228
- declare class AliyunOSSProvider implements IStorageProvider {
229
- readonly type: StorageType;
230
- private config;
231
- private client;
232
- private isInitialized;
233
- /**
234
- * 初始化存储提供者
235
- */
236
- initialize(config: StorageConfig): Promise<void>;
237
- /**
238
- * 重新初始化存储提供者(支持配置热更新)
239
- */
240
- reinitialize(config: StorageConfig): Promise<void>;
241
- /**
242
- * 上传文件
243
- */
244
- upload(fileInfo: UploadFileInfo, filePath: string): Promise<StorageResult>;
245
- /**
246
- * 下载文件
247
- */
248
- download(filePath: string): Promise<Buffer>;
249
- /**
250
- * 删除文件
251
- */
252
- delete(filePath: string): Promise<StorageResult>;
253
- /**
254
- * 获取文件信息
255
- */
256
- getFileInfo(filePath: string): Promise<StorageResult>;
257
- /**
258
- * 生成访问URL
259
- */
260
- getAccessUrl(filePath: string, expiresIn?: number): Promise<string>;
261
- /**
262
- * 生成预签名上传URL
263
- */
264
- getUploadUrl(filePath: string, expiresIn?: number): Promise<string>;
265
- /**
266
- * 检查文件是否存在
267
- */
268
- exists(filePath: string): Promise<boolean>;
269
- /**
270
- * 列出文件(详细信息)
271
- */
272
- listFiles(prefix: string, delimiter?: string, maxKeys?: number): Promise<{
273
- files: Array<{
274
- name: string;
275
- url: string;
276
- size: number;
277
- lastModified: string;
278
- etag: string;
279
- type: string;
280
- }>;
281
- folders: string[];
282
- nextMarker?: string;
283
- }>;
284
- /**
285
- * 列出文件
286
- */
287
- list(prefix: string, maxKeys?: number): Promise<string[]>;
288
- /**
289
- * 确保已初始化
290
- */
291
- private ensureInitialized;
292
- /**
293
- * 验证配置
294
- */
295
- private validateConfig;
296
- /**
297
- * 测试连接
298
- */
299
- private testConnection;
300
- /**
301
- * 分片上传大文件
302
- */
303
- private multipartUpload;
304
- /**
305
- * 生成公开访问URL
306
- */
307
- private generateAccessUrl;
308
- /**
309
- * 判断是否为OSS错误
310
- */
311
- private isOSSError;
312
- /**
313
- * 格式化OSS错误信息
314
- */
315
- private formatOSSError;
316
- /**
317
- * 流式上传(可选实现)
318
- */
319
- uploadStream(readableStream: NodeJS.ReadableStream, filePath: string, contentType?: string, contentLength?: number): Promise<StorageResult>;
320
- /**
321
- * 批量删除文件
322
- */
323
- batchDelete(filePaths: string[]): Promise<StorageResult>;
324
- /**
325
- * 复制文件
326
- */
327
- copy(sourcePath: string, targetPath: string): Promise<StorageResult>;
328
- /**
329
- * 编码元数据,避免中文字符在HTTP头部中的问题
330
- */
331
- private encodeMetadata;
332
- }
333
-
334
- /**
335
- * 阿里云CDN提供者实现
336
- */
337
-
338
- /**
339
- * 阿里云CDN提供者
340
- */
341
- declare class AliyunCDNProvider implements ICDNProvider {
342
- readonly type: CDNType;
343
- private config;
344
- private client;
345
- private isInitialized;
346
- /**
347
- * 初始化CDN提供者
348
- */
349
- initialize(config: CDNConfig): Promise<void>;
350
- /**
351
- * 生成CDN URL
352
- */
353
- generateUrl(originalUrl: string): Promise<string>;
354
- /**
355
- * 刷新缓存
356
- */
357
- refreshCache(urls: string[]): Promise<CDNResult>;
358
- /**
359
- * 预热缓存
360
- */
361
- preheatCache(urls: string[]): Promise<CDNResult>;
362
- /**
363
- * 获取访问统计
364
- */
365
- getAccessStats(startTime: Date, endTime: Date): Promise<CDNResult>;
366
- /**
367
- * 生成防盗链签名URL
368
- */
369
- generateSignedUrl(originalUrl: string, expiresIn?: number, authKey?: string): Promise<string>;
370
- /**
371
- * 查询刷新任务状态
372
- */
373
- getRefreshTaskStatus(taskId: string): Promise<CDNResult>;
374
- /**
375
- * 查询预热任务状态
376
- */
377
- getPreheatTaskStatus(taskId: string): Promise<CDNResult>;
378
- /**
379
- * 获取域名配置
380
- */
381
- getDomainConfig(): Promise<CDNResult>;
382
- /**
383
- * 优化URL (添加图像处理参数等)
384
- */
385
- optimizeUrl(originalUrl: string, options?: {
386
- imageQuality?: number;
387
- imageFormat?: 'webp' | 'jpg' | 'png';
388
- imageResize?: {
389
- width?: number;
390
- height?: number;
391
- };
392
- enableGzip?: boolean;
393
- }): Promise<string>;
394
- /**
395
- * 确保已初始化
396
- */
397
- private ensureInitialized;
398
- /**
399
- * 验证配置
400
- */
401
- private validateConfig;
402
- /**
403
- * 验证域名格式
404
- */
405
- private isValidDomain;
406
- /**
407
- * 测试连接
408
- */
409
- private testConnection;
410
- /**
411
- * 创建模拟客户端(用于开发测试)
412
- */
413
- private createMockClient;
414
- /**
415
- * 批量刷新缓存(带进度回调)
416
- */
417
- batchRefreshCache(urls: string[], batchSize?: number, onProgress?: (completed: number, total: number) => void): Promise<CDNResult>;
418
- }
419
-
420
- /**
421
- * CDN缓存策略管理
422
- * 优化静态资源缓存策略和预热机制
423
- */
424
- /**
425
- * 缓存策略类型
426
- */
427
- declare enum CacheStrategyType$1 {
428
- /** 图片资源 */
429
- IMAGE = "image",
430
- /** 视频资源 */
431
- VIDEO = "video",
432
- /** 音频资源 */
433
- AUDIO = "audio",
434
- /** 文档资源 */
435
- DOCUMENT = "document",
436
- /** 压缩包 */
437
- ARCHIVE = "archive",
438
- /** 静态资源 */
439
- STATIC = "static",
440
- /** 其他 */
441
- OTHER = "other"
442
- }
443
- /**
444
- * 缓存策略配置
445
- */
446
- interface CacheStrategyConfig$1 {
447
- /** 缓存策略类型 */
448
- type: CacheStrategyType$1;
449
- /** 缓存时间(秒) */
450
- ttl: number;
451
- /** 是否启用浏览器缓存 */
452
- browserCache: boolean;
453
- /** 浏览器缓存时间(秒) */
454
- browserCacheTtl: number;
455
- /** 是否启用CDN缓存 */
456
- cdnCache: boolean;
457
- /** CDN缓存时间(秒) */
458
- cdnCacheTtl: number;
459
- /** 是否启用预热 */
460
- enableWarmup: boolean;
461
- /** 缓存控制头 */
462
- cacheControl: string;
463
- /** 允许的文件类型 */
464
- allowedMimeTypes: string[];
465
- /** 文件大小限制(字节) */
466
- maxFileSize?: number;
467
- }
468
- /**
469
- * 缓存统计信息
470
- */
471
- interface CacheStats$2 {
472
- /** 命中次数 */
473
- hits: number;
474
- /** 未命中次数 */
475
- misses: number;
476
- /** 命中率 */
477
- hitRate: number;
478
- /** 总请求数 */
479
- totalRequests: number;
480
- /** 缓存大小估算 */
481
- estimatedSize: number;
482
- /** 节省的带宽(字节) */
483
- bandwidthSaved: number;
484
- }
485
- /**
486
- * CDN缓存策略管理器
487
- */
488
- declare class CdnCacheStrategy$1 {
489
- private strategies;
490
- private stats;
491
- constructor();
492
- /**
493
- * 初始化默认缓存策略
494
- */
495
- private initializeDefaultStrategies;
496
- /**
497
- * 根据MIME类型获取缓存策略
498
- */
499
- getStrategyByMimeType(mimeType: string): CacheStrategyConfig$1;
500
- /**
501
- * 生成缓存控制头
502
- */
503
- generateCacheHeaders(mimeType: string, fileSize?: number): Record<string, string>;
504
- /**
505
- * 检查是否需要缓存预热
506
- */
507
- shouldWarmupCache(mimeType: string): boolean;
508
- /**
509
- * 记录缓存命中
510
- */
511
- recordCacheHit(mimeType: string, fileSize?: number): void;
512
- /**
513
- * 记录缓存未命中
514
- */
515
- recordCacheMiss(mimeType: string, fileSize?: number): void;
516
- /**
517
- * 获取缓存统计信息
518
- */
519
- getCacheStats(): Map<CacheStrategyType$1, CacheStats$2>;
520
- /**
521
- * 获取总体缓存统计
522
- */
523
- getOverallStats(): CacheStats$2;
524
- /**
525
- * 生成缓存优化建议
526
- */
527
- generateOptimizationSuggestions(): Array<{
528
- type: CacheStrategyType$1;
529
- issue: string;
530
- suggestion: string;
531
- severity: 'low' | 'medium' | 'high';
532
- }>;
533
- /**
534
- * 更新缓存策略
535
- */
536
- updateStrategy(type: CacheStrategyType$1, config: Partial<CacheStrategyConfig$1>): void;
537
- /**
538
- * 重置统计信息
539
- */
540
- resetStats(): void;
541
- }
542
- /**
543
- * 单例CDN缓存策略管理器
544
- */
545
- declare const cdnCacheStrategy: CdnCacheStrategy$1;
546
-
547
- /**
548
- * 图片处理器实现
549
- * 支持压缩、裁剪、水印、格式转换等功能
550
- */
551
-
552
- /**
553
- * 图片处理器
554
- * 使用Sharp库进行高性能图片处理
555
- */
556
- declare class ImageProcessor implements IFileProcessor {
557
- readonly type: ProcessorType;
558
- private sharp;
559
- private isInitialized;
560
- /**
561
- * 初始化图片处理器
562
- */
563
- initialize(): Promise<void>;
564
- /**
565
- * 处理图片文件
566
- */
567
- process(inputPath: string, outputPath: string, options: ProcessingOptions): Promise<ProcessingResult>;
568
- /**
569
- * 检查文件是否支持处理
570
- */
571
- supports(mimeType: string): boolean;
572
- /**
573
- * 获取图片文件信息
574
- */
575
- getFileInfo(filePath: string): Promise<Record<string, any>>;
576
- /**
577
- * 确保处理器已初始化
578
- */
579
- private ensureInitialized;
580
- /**
581
- * 获取图片元数据
582
- */
583
- private getImageMetadata;
584
- /**
585
- * 应用图片处理操作
586
- */
587
- private applyImageOperations;
588
- /**
589
- * 应用水印
590
- */
591
- private applyWatermark;
592
- /**
593
- * 创建文字水印SVG
594
- */
595
- private createTextWatermarkSvg;
596
- /**
597
- * 获取水印位置对应的gravity值
598
- */
599
- private getWatermarkGravity;
600
- /**
601
- * 确定输出格式
602
- */
603
- private determineOutputFormat;
604
- /**
605
- * 应用输出设置
606
- */
607
- private applyOutputSettings;
608
- /**
609
- * 是否需要生成缩略图
610
- */
611
- private shouldGenerateThumbnail;
612
- /**
613
- * 生成缩略图
614
- */
615
- private generateThumbnail;
616
- /**
617
- * 获取缩略图路径
618
- */
619
- private getThumbnailPath;
620
- /**
621
- * 创建模拟Sharp对象(开发测试用)
622
- */
623
- private createMockSharp;
624
- /**
625
- * 批量图片处理
626
- */
627
- batchProcess(inputPaths: string[], outputDir: string, options: ImageProcessingOptions, onProgress?: (completed: number, total: number) => void): Promise<ProcessingResult[]>;
628
- }
629
-
630
- /**
631
- * 音频处理器实现
632
- * 支持格式转换、压缩、音质调整等功能
633
- */
634
-
635
- /**
636
- * 音频处理器
637
- * 使用FFmpeg进行音频处理
638
- */
639
- declare class AudioProcessor implements IFileProcessor {
640
- readonly type: ProcessorType;
641
- private ffmpeg;
642
- private isInitialized;
643
- /**
644
- * 初始化音频处理器
645
- */
646
- initialize(): Promise<void>;
647
- /**
648
- * 处理音频文件
649
- */
650
- process(inputPath: string, outputPath: string, options: ProcessingOptions): Promise<ProcessingResult>;
651
- /**
652
- * 检查文件是否支持处理
653
- */
654
- supports(mimeType: string): boolean;
655
- /**
656
- * 获取音频文件信息
657
- */
658
- getFileInfo(filePath: string): Promise<Record<string, any>>;
659
- /**
660
- * 确保处理器已初始化
661
- */
662
- private ensureInitialized;
663
- /**
664
- * 获取音频元数据
665
- */
666
- private getAudioMetadata;
667
- /**
668
- * 执行音频处理
669
- */
670
- private processAudio;
671
- /**
672
- * 设置音频编解码器
673
- */
674
- private setAudioCodec;
675
- /**
676
- * 确定输出格式
677
- */
678
- private determineOutputFormat;
679
- /**
680
- * 格式化时长显示
681
- */
682
- private formatDuration;
683
- /**
684
- * 获取声道描述
685
- */
686
- private getChannelsDescription;
687
- /**
688
- * 获取音质描述
689
- */
690
- private getQualityDescription;
691
- /**
692
- * 创建模拟FFmpeg对象(开发测试用)
693
- */
694
- private createMockFFmpeg;
695
- /**
696
- * 批量音频处理
697
- */
698
- batchProcess(inputPaths: string[], outputDir: string, options: AudioProcessingOptions, onProgress?: (completed: number, total: number) => void): Promise<ProcessingResult[]>;
699
- /**
700
- * 提取音频封面
701
- */
702
- extractCover(inputPath: string, outputPath: string): Promise<boolean>;
703
- /**
704
- * 音频降噪处理
705
- */
706
- denoise(inputPath: string, outputPath: string): Promise<ProcessingResult>;
707
- }
708
-
709
- /**
710
- * 视频处理器实现
711
- * 支持缩略图生成、格式转换、压缩等功能
712
- */
713
-
714
- /**
715
- * 视频处理器
716
- * 使用FFmpeg进行视频处理
717
- */
718
- declare class VideoProcessor implements IFileProcessor {
719
- readonly type: ProcessorType;
720
- private ffmpeg;
721
- private isInitialized;
722
- /**
723
- * 初始化视频处理器
724
- */
725
- initialize(): Promise<void>;
726
- /**
727
- * 处理视频文件
728
- */
729
- process(inputPath: string, outputPath: string, options: ProcessingOptions): Promise<ProcessingResult>;
730
- /**
731
- * 检查文件是否支持处理
732
- */
733
- supports(mimeType: string): boolean;
734
- /**
735
- * 获取视频文件信息
736
- */
737
- getFileInfo(filePath: string): Promise<Record<string, any>>;
738
- /**
739
- * 确保处理器已初始化
740
- */
741
- private ensureInitialized;
742
- /**
743
- * 获取视频元数据
744
- */
745
- private getVideoMetadata;
746
- /**
747
- * 解析帧率
748
- */
749
- private parseFPS;
750
- /**
751
- * 执行视频处理
752
- */
753
- private processVideo;
754
- /**
755
- * 设置视频编解码器
756
- */
757
- private setVideoCodec;
758
- /**
759
- * 设置视频质量
760
- */
761
- private setVideoQuality;
762
- /**
763
- * 确定输出格式
764
- */
765
- private determineOutputFormat;
766
- /**
767
- * 生成缩略图
768
- */
769
- private generateThumbnail;
770
- /**
771
- * 获取缩略图路径
772
- */
773
- private getThumbnailPath;
774
- /**
775
- * 格式化时长显示
776
- */
777
- private formatDuration;
778
- /**
779
- * 获取分辨率描述
780
- */
781
- private getResolutionDescription;
782
- /**
783
- * 获取视频质量描述
784
- */
785
- private getQualityDescription;
786
- /**
787
- * 创建模拟FFmpeg对象(开发测试用)
788
- */
789
- private createMockFFmpeg;
790
- /**
791
- * 批量视频处理
792
- */
793
- batchProcess(inputPaths: string[], outputDir: string, options: VideoProcessingOptions, onProgress?: (completed: number, total: number) => void): Promise<ProcessingResult[]>;
794
- /**
795
- * 提取视频帧
796
- */
797
- extractFrames(inputPath: string, outputDir: string, options?: {
798
- count?: number;
799
- interval?: number;
800
- format?: 'jpg' | 'png';
801
- }): Promise<string[]>;
802
- /**
803
- * 视频压缩
804
- */
805
- compress(inputPath: string, outputPath: string, compressionLevel?: 'low' | 'medium' | 'high'): Promise<ProcessingResult>;
806
- /**
807
- * 获取压缩质量
808
- */
809
- private getCompressionQuality;
810
- }
811
-
812
- /**
813
- * 文件处理队列管理系统
814
- * 支持异步任务调度、优先级排序、并发控制等功能
815
- */
816
-
817
- interface QueueTask {
818
- id: string;
819
- inputPath: string;
820
- outputPath: string;
821
- options: ProcessingOptions;
822
- priority: TaskPriority;
823
- status: TaskStatus;
824
- processor?: IFileProcessor;
825
- startTime?: number;
826
- endTime?: number;
827
- result?: ProcessingResult;
828
- error?: string;
829
- retries: number;
830
- maxRetries: number;
831
- onProgress?: (task: QueueTask, progress: number) => void;
832
- onComplete?: (task: QueueTask, result: ProcessingResult) => void;
833
- onError?: (task: QueueTask, error: string) => void;
834
- }
835
- type TaskPriority = 'low' | 'normal' | 'high' | 'urgent';
836
- type TaskStatus = 'pending' | 'running' | 'completed' | 'failed' | 'cancelled';
837
- interface QueueOptions {
838
- maxConcurrentTasks?: number;
839
- maxRetries?: number;
840
- retryDelay?: number;
841
- taskTimeout?: number;
842
- autoStart?: boolean;
843
- }
844
- interface QueueStats {
845
- totalTasks: number;
846
- pendingTasks: number;
847
- runningTasks: number;
848
- completedTasks: number;
849
- failedTasks: number;
850
- cancelledTasks: number;
851
- averageProcessingTime: number;
852
- successRate: number;
853
- }
854
- /**
855
- * 文件处理队列管理器
856
- */
857
- declare class ProcessingQueue extends EventEmitter {
858
- private tasks;
859
- private runningTasks;
860
- private processors;
861
- private options;
862
- private isStarted;
863
- private processInterval;
864
- constructor(options?: QueueOptions);
865
- /**
866
- * 注册文件处理器
867
- */
868
- registerProcessor(processor: IFileProcessor): void;
869
- /**
870
- * 添加任务到队列
871
- */
872
- addTask(inputPath: string, outputPath: string, options: ProcessingOptions, taskOptions?: Partial<Pick<QueueTask, 'priority' | 'maxRetries' | 'onProgress' | 'onComplete' | 'onError'>>): string;
873
- /**
874
- * 启动队列处理
875
- */
876
- start(): void;
877
- /**
878
- * 停止队列处理
879
- */
880
- stop(): void;
881
- /**
882
- * 暂停任务
883
- */
884
- pauseTask(taskId: string): boolean;
885
- /**
886
- * 取消任务
887
- */
888
- cancelTask(taskId: string): boolean;
889
- /**
890
- * 获取任务状态
891
- */
892
- getTask(taskId: string): QueueTask | undefined;
893
- /**
894
- * 获取所有任务
895
- */
896
- getAllTasks(): QueueTask[];
897
- /**
898
- * 获取待处理任务
899
- */
900
- getPendingTasks(): QueueTask[];
901
- /**
902
- * 获取正在运行的任务
903
- */
904
- getRunningTasks(): QueueTask[];
905
- /**
906
- * 获取队列统计信息
907
- */
908
- getStats(): QueueStats;
909
- /**
910
- * 清理已完成的任务
911
- */
912
- cleanup(): void;
913
- /**
914
- * 处理下一个任务
915
- */
916
- private processNext;
917
- /**
918
- * 获取下一个待处理任务(按优先级排序)
919
- */
920
- private getNextTask;
921
- /**
922
- * 处理单个任务
923
- */
924
- private processTask;
925
- /**
926
- * 完成任务
927
- */
928
- private completeTask;
929
- /**
930
- * 重试或失败任务
931
- */
932
- private retryOrFailTask;
933
- /**
934
- * 失败任务
935
- */
936
- private failTask;
937
- /**
938
- * 生成唯一任务ID
939
- */
940
- private generateTaskId;
941
- /**
942
- * 批量添加任务
943
- */
944
- addBatchTasks(tasks: Array<{
945
- inputPath: string;
946
- outputPath: string;
947
- options: ProcessingOptions;
948
- priority?: TaskPriority;
949
- }>, onBatchProgress?: (completed: number, total: number) => void, onBatchComplete?: (results: Map<string, ProcessingResult>) => void): string[];
950
- /**
951
- * 获取队列健康状态
952
- */
953
- getHealthStatus(): {
954
- isHealthy: boolean;
955
- issues: string[];
956
- recommendations: string[];
957
- };
958
- }
959
-
960
- /**
961
- * MIME 类型工具函数
962
- */
963
- /**
964
- * 根据文件名获取 MIME 类型
965
- *
966
- * @param filename 文件名
967
- * @returns MIME 类型
968
- *
969
- * @example
970
- * ```typescript
971
- * getMimeType('photo.jpg') // 'image/jpeg'
972
- * getMimeType('video.mp4') // 'video/mp4'
973
- * getMimeType('unknown.xyz') // 'application/octet-stream'
974
- * ```
975
- */
976
- declare function getMimeType(filename: string): string;
977
-
978
- /**
979
- * 通用文件服务缓存管理器
980
- * 支持多层缓存策略:内存缓存 + Redis缓存
981
- */
982
- /**
983
- * 缓存项接口
984
- */
985
- interface CacheItem<T = any> {
986
- /** 缓存数据 */
987
- data: T;
988
- /** 创建时间 */
989
- createdAt: number;
990
- /** 过期时间 */
991
- expiresAt: number;
992
- /** 访问次数 */
993
- accessCount: number;
994
- /** 最后访问时间 */
995
- lastAccessAt: number;
996
- }
997
- /**
998
- * 缓存统计信息
999
- */
1000
- interface CacheStats$1 {
1001
- /** 总请求次数 */
1002
- totalRequests: number;
1003
- /** 命中次数 */
1004
- hits: number;
1005
- /** 未命中次数 */
1006
- misses: number;
1007
- /** 命中率 */
1008
- hitRate: number;
1009
- /** 内存缓存大小 */
1010
- memorySize: number;
1011
- /** Redis缓存状态 */
1012
- redisConnected: boolean;
1013
- }
1014
- /**
1015
- * 缓存配置选项
1016
- */
1017
- interface CacheOptions {
1018
- /** 默认过期时间(秒) */
1019
- defaultTTL?: number;
1020
- /** 内存缓存最大条目数 */
1021
- maxMemoryItems?: number;
1022
- /** 是否启用Redis缓存 */
1023
- enableRedis?: boolean;
1024
- /** Redis连接配置 */
1025
- redisConfig?: {
1026
- host: string;
1027
- port: number;
1028
- password?: string;
1029
- db?: number;
1030
- };
1031
- /** 缓存键前缀 */
1032
- keyPrefix?: string;
1033
- }
1034
- /**
1035
- * 缓存管理器
1036
- */
1037
- declare class CacheManager {
1038
- private memoryCache;
1039
- private redisClient;
1040
- private stats;
1041
- private options;
1042
- constructor(options?: CacheOptions);
1043
- /**
1044
- * 初始化Redis连接
1045
- */
1046
- private initRedis;
1047
- /**
1048
- * 生成缓存键
1049
- */
1050
- private generateKey;
1051
- /**
1052
- * 获取缓存数据
1053
- */
1054
- get<T = any>(key: string): Promise<T | null>;
1055
- /**
1056
- * 设置缓存数据
1057
- */
1058
- set<T = any>(key: string, data: T, ttl?: number): Promise<void>;
1059
- /**
1060
- * 删除缓存数据
1061
- */
1062
- delete(key: string): Promise<void>;
1063
- /**
1064
- * 批量删除缓存(支持模式匹配)
1065
- */
1066
- deletePattern(pattern: string): Promise<void>;
1067
- /**
1068
- * 清空所有缓存
1069
- */
1070
- clear(): Promise<void>;
1071
- /**
1072
- * 获取缓存统计信息
1073
- */
1074
- getStats(): CacheStats$1;
1075
- /**
1076
- * 获取缓存项详情(用于调试)
1077
- */
1078
- getCacheItem(key: string): CacheItem | null;
1079
- /**
1080
- * 预热缓存
1081
- */
1082
- warmup<T>(items: Array<{
1083
- key: string;
1084
- data: T;
1085
- ttl?: number;
1086
- }>): Promise<void>;
1087
- /**
1088
- * 更新命中率
1089
- */
1090
- private updateHitRate;
1091
- /**
1092
- * 更新内存使用量
1093
- */
1094
- private updateMemorySize;
1095
- /**
1096
- * 模式匹配函数
1097
- */
1098
- private matchPattern;
1099
- /**
1100
- * 获取或设置缓存(如果不存在则调用生成函数)
1101
- */
1102
- getOrSet<T>(key: string, generator: () => Promise<T>, ttl?: number): Promise<T>;
1103
- /**
1104
- * 关闭缓存管理器
1105
- */
1106
- close(): Promise<void>;
1107
- }
1108
-
1109
- /**
1110
- * 通用文件服务性能监控器
1111
- * 监控API响应时间、数据库查询性能、缓存命中率等指标
1112
- */
1113
- /**
1114
- * 性能指标类型
1115
- */
1116
- interface PerformanceMetric {
1117
- /** 指标名称 */
1118
- name: string;
1119
- /** 指标值 */
1120
- value: number;
1121
- /** 单位 */
1122
- unit: string;
1123
- /** 时间戳 */
1124
- timestamp: number;
1125
- /** 标签 */
1126
- labels?: Record<string, string>;
1127
- }
1128
- /**
1129
- * 性能统计信息
1130
- */
1131
- interface PerformanceStats {
1132
- /** API响应时间统计 */
1133
- apiResponseTimes: {
1134
- /** 平均响应时间(毫秒) */
1135
- average: number;
1136
- /** 最小响应时间 */
1137
- min: number;
1138
- /** 最大响应时间 */
1139
- max: number;
1140
- /** P95响应时间 */
1141
- p95: number;
1142
- /** P99响应时间 */
1143
- p99: number;
1144
- /** 总请求数 */
1145
- totalRequests: number;
1146
- };
1147
- /** 数据库查询性能 */
1148
- databasePerformance: {
1149
- /** 平均查询时间(毫秒) */
1150
- averageQueryTime: number;
1151
- /** 慢查询数量 */
1152
- slowQueries: number;
1153
- /** 总查询数 */
1154
- totalQueries: number;
1155
- /** 查询错误数 */
1156
- queryErrors: number;
1157
- };
1158
- /** 文件操作性能 */
1159
- fileOperations: {
1160
- /** 文件上传统计 */
1161
- uploads: {
1162
- /** 总上传数 */
1163
- total: number;
1164
- /** 成功上传数 */
1165
- successful: number;
1166
- /** 失败上传数 */
1167
- failed: number;
1168
- /** 平均上传时间 */
1169
- averageTime: number;
1170
- /** 平均文件大小 */
1171
- averageSize: number;
1172
- };
1173
- /** 文件下载统计 */
1174
- downloads: {
1175
- /** 总下载数 */
1176
- total: number;
1177
- /** 成功下载数 */
1178
- successful: number;
1179
- /** 失败下载数 */
1180
- failed: number;
1181
- /** 平均下载时间 */
1182
- averageTime: number;
1183
- };
1184
- };
1185
- /** 系统资源使用 */
1186
- systemResources: {
1187
- /** 内存使用量(MB) */
1188
- memoryUsage: number;
1189
- /** CPU使用率(%) */
1190
- cpuUsage: number;
1191
- /** 磁盘使用量(MB) */
1192
- diskUsage: number;
1193
- };
1194
- }
1195
- /**
1196
- * 请求跟踪信息
1197
- */
1198
- interface RequestTrace {
1199
- /** 请求ID */
1200
- requestId: string;
1201
- /** 请求路径 */
1202
- path: string;
1203
- /** HTTP方法 */
1204
- method: string;
1205
- /** 开始时间 */
1206
- startTime: number;
1207
- /** 结束时间 */
1208
- endTime?: number;
1209
- /** 响应时间(毫秒) */
1210
- duration?: number;
1211
- /** 状态码 */
1212
- statusCode?: number;
1213
- /** 错误信息 */
1214
- error?: string;
1215
- /** 用户ID */
1216
- userId?: string;
1217
- /** 文件大小(字节) */
1218
- fileSize?: number;
1219
- }
1220
- /**
1221
- * 性能监控器
1222
- */
1223
- declare class PerformanceMonitor {
1224
- private metrics;
1225
- private requestTraces;
1226
- private stats;
1227
- private readonly maxMetrics;
1228
- private readonly maxTraces;
1229
- constructor();
1230
- /**
1231
- * 初始化统计信息
1232
- */
1233
- private initializeStats;
1234
- /**
1235
- * 开始请求跟踪
1236
- */
1237
- startRequest(requestId: string, path: string, method: string, userId?: string): void;
1238
- /**
1239
- * 结束请求跟踪
1240
- */
1241
- endRequest(requestId: string, statusCode: number, error?: string, fileSize?: number): void;
1242
- /**
1243
- * 记录数据库查询性能
1244
- */
1245
- recordDatabaseQuery(queryTime: number, isError?: boolean): void;
1246
- /**
1247
- * 记录系统资源使用情况
1248
- */
1249
- recordSystemResources(): void;
1250
- /**
1251
- * 记录自定义指标
1252
- */
1253
- recordMetric(name: string, value: number, unit: string, labels?: Record<string, string>): void;
1254
- /**
1255
- * 获取性能统计信息
1256
- */
1257
- getStats(): PerformanceStats;
1258
- /**
1259
- * 获取指定时间范围内的指标
1260
- */
1261
- getMetrics(name?: string, startTime?: number, endTime?: number): PerformanceMetric[];
1262
- /**
1263
- * 获取请求跟踪信息
1264
- */
1265
- getRequestTraces(limit?: number): RequestTrace[];
1266
- /**
1267
- * 获取慢请求列表
1268
- */
1269
- getSlowRequests(threshold?: number): RequestTrace[];
1270
- /**
1271
- * 获取错误请求列表
1272
- */
1273
- getErrorRequests(): RequestTrace[];
1274
- /**
1275
- * 生成性能报告
1276
- */
1277
- generateReport(): {
1278
- summary: any;
1279
- topSlowRequests: RequestTrace[];
1280
- recentErrors: RequestTrace[];
1281
- systemHealth: any;
1282
- };
1283
- /**
1284
- * 更新API统计信息
1285
- */
1286
- private updateApiStats;
1287
- /**
1288
- * 更新上传统计信息
1289
- */
1290
- private updateUploadStats;
1291
- /**
1292
- * 更新下载统计信息
1293
- */
1294
- private updateDownloadStats;
1295
- /**
1296
- * 清理过期数据
1297
- */
1298
- private cleanupOldData;
1299
- /**
1300
- * 重置统计信息
1301
- */
1302
- reset(): void;
1303
- }
1304
-
1305
- /**
1306
- * CDN缓存策略管理
1307
- * 优化静态资源缓存策略和预热机制
1308
- */
1309
- /**
1310
- * 缓存策略类型
1311
- */
1312
- declare enum CacheStrategyType {
1313
- /** 图片资源 */
1314
- IMAGE = "image",
1315
- /** 视频资源 */
1316
- VIDEO = "video",
1317
- /** 音频资源 */
1318
- AUDIO = "audio",
1319
- /** 文档资源 */
1320
- DOCUMENT = "document",
1321
- /** 压缩包 */
1322
- ARCHIVE = "archive",
1323
- /** 静态资源 */
1324
- STATIC = "static",
1325
- /** 其他 */
1326
- OTHER = "other"
1327
- }
1328
- /**
1329
- * 缓存策略配置
1330
- */
1331
- interface CacheStrategyConfig {
1332
- /** 缓存策略类型 */
1333
- type: CacheStrategyType;
1334
- /** 缓存时间(秒) */
1335
- ttl: number;
1336
- /** 是否启用浏览器缓存 */
1337
- browserCache: boolean;
1338
- /** 浏览器缓存时间(秒) */
1339
- browserCacheTtl: number;
1340
- /** 是否启用CDN缓存 */
1341
- cdnCache: boolean;
1342
- /** CDN缓存时间(秒) */
1343
- cdnCacheTtl: number;
1344
- /** 是否启用预热 */
1345
- enableWarmup: boolean;
1346
- /** 缓存控制头 */
1347
- cacheControl: string;
1348
- /** 允许的文件类型 */
1349
- allowedMimeTypes: string[];
1350
- /** 文件大小限制(字节) */
1351
- maxFileSize?: number;
1352
- }
1353
- /**
1354
- * 缓存统计信息
1355
- */
1356
- interface CacheStats {
1357
- /** 命中次数 */
1358
- hits: number;
1359
- /** 未命中次数 */
1360
- misses: number;
1361
- /** 命中率 */
1362
- hitRate: number;
1363
- /** 总请求数 */
1364
- totalRequests: number;
1365
- /** 缓存大小估算 */
1366
- estimatedSize: number;
1367
- /** 节省的带宽(字节) */
1368
- bandwidthSaved: number;
1369
- }
1370
- /**
1371
- * CDN缓存策略管理器
1372
- */
1373
- declare class CdnCacheStrategy {
1374
- private strategies;
1375
- private stats;
1376
- constructor();
1377
- /**
1378
- * 初始化默认缓存策略
1379
- */
1380
- private initializeDefaultStrategies;
1381
- /**
1382
- * 根据MIME类型获取缓存策略
1383
- */
1384
- getStrategyByMimeType(mimeType: string): CacheStrategyConfig;
1385
- /**
1386
- * 生成缓存控制头
1387
- */
1388
- generateCacheHeaders(mimeType: string, fileSize?: number): Record<string, string>;
1389
- /**
1390
- * 检查是否需要缓存预热
1391
- */
1392
- shouldWarmupCache(mimeType: string): boolean;
1393
- /**
1394
- * 记录缓存命中
1395
- */
1396
- recordCacheHit(mimeType: string, fileSize?: number): void;
1397
- /**
1398
- * 记录缓存未命中
1399
- */
1400
- recordCacheMiss(mimeType: string, fileSize?: number): void;
1401
- /**
1402
- * 获取缓存统计信息
1403
- */
1404
- getCacheStats(): Map<CacheStrategyType, CacheStats>;
1405
- /**
1406
- * 获取总体缓存统计
1407
- */
1408
- getOverallStats(): CacheStats;
1409
- /**
1410
- * 生成缓存优化建议
1411
- */
1412
- generateOptimizationSuggestions(): Array<{
1413
- type: CacheStrategyType;
1414
- issue: string;
1415
- suggestion: string;
1416
- severity: 'low' | 'medium' | 'high';
1417
- }>;
1418
- /**
1419
- * 更新缓存策略
1420
- */
1421
- updateStrategy(type: CacheStrategyType, config: Partial<CacheStrategyConfig>): void;
1422
- /**
1423
- * 重置统计信息
1424
- */
1425
- resetStats(): void;
1426
- }
1427
-
1428
- /**
1429
- * 通用文件服务 API 类型定义
1430
- * 定义所有API接口的请求和响应格式
1431
- */
1432
- /**
1433
- * API响应的基础接口
1434
- */
1435
- interface ApiResponse<T = any> {
1436
- /** 是否成功 */
1437
- success: boolean;
1438
- /** 响应数据 */
1439
- data?: T;
1440
- /** 错误信息 */
1441
- error?: {
1442
- /** 错误代码 */
1443
- code: string;
1444
- /** 错误消息 */
1445
- message: string;
1446
- /** 详细错误信息 */
1447
- details?: any;
1448
- };
1449
- /** 元数据 */
1450
- meta?: {
1451
- /** 总记录数 */
1452
- total?: number;
1453
- /** 当前页码 */
1454
- page?: number;
1455
- /** 每页大小 */
1456
- pageSize?: number;
1457
- /** 总页数 */
1458
- totalPages?: number;
1459
- /** 请求ID */
1460
- requestId?: string;
1461
- /** 时间戳 */
1462
- timestamp?: string;
1463
- };
1464
- }
1465
- /**
1466
- * 分页查询参数
1467
- */
1468
- interface PaginationParams {
1469
- /** 页码,从1开始 */
1470
- page?: number;
1471
- /** 每页大小 */
1472
- pageSize?: number;
1473
- /** 排序字段 */
1474
- orderBy?: string;
1475
- /** 排序方向 */
1476
- orderDirection?: 'asc' | 'desc';
1477
- }
1478
- /**
1479
- * 文件上传响应
1480
- */
1481
- interface UploadResponse {
1482
- /** 文件ID */
1483
- fileId: string;
1484
- /** 原始文件名 */
1485
- originalName: string;
1486
- /** 文件大小 */
1487
- size: number;
1488
- /** MIME类型 */
1489
- mimeType: string;
1490
- /** 访问URL */
1491
- url: string;
1492
- /** CDN URL */
1493
- cdnUrl?: string;
1494
- /** MD5哈希 */
1495
- md5Hash: string;
1496
- /** 上传时间 */
1497
- uploadTime: string;
1498
- }
1499
- /**
1500
- * 文件上传请求参数
1501
- */
1502
- interface FileUploadParams {
1503
- /** 目标文件夹ID */
1504
- folderId?: string;
1505
- /** 模块ID */
1506
- moduleId?: string;
1507
- /** 业务ID */
1508
- businessId?: string;
1509
- /** 文件标签 */
1510
- tags?: string[];
1511
- /** 是否为临时文件 */
1512
- isTemporary?: boolean;
1513
- /** 过期时间 */
1514
- expiresAt?: string;
1515
- /** 自定义元数据 */
1516
- metadata?: Record<string, any>;
1517
- }
1518
- /**
1519
- * 文件查询参数
1520
- */
1521
- interface FileQueryParams extends PaginationParams {
1522
- /** 模块ID */
1523
- moduleId?: string;
1524
- /** 业务ID */
1525
- businessId?: string;
1526
- /** 文件夹ID */
1527
- folderId?: string;
1528
- /** MIME类型过滤 */
1529
- mimeType?: string;
1530
- /** 文件名搜索 */
1531
- search?: string;
1532
- /** 标签过滤 */
1533
- tags?: string[];
1534
- /** 文件大小范围 */
1535
- sizeMin?: number;
1536
- sizeMax?: number;
1537
- /** 上传时间范围 */
1538
- uploadTimeStart?: string;
1539
- uploadTimeEnd?: string;
1540
- /** 是否已删除 */
1541
- isDeleted?: boolean;
1542
- /** 是否临时文件 */
1543
- isTemporary?: boolean;
1544
- /** 上传者ID */
1545
- uploaderId?: string;
1546
- }
1547
- /**
1548
- * 文件信息响应
1549
- */
1550
- interface FileInfo {
1551
- /** 文件ID */
1552
- id: string;
1553
- /** 原始文件名 */
1554
- originalName: string;
1555
- /** 存储文件名 */
1556
- storedName: string;
1557
- /** 文件扩展名 */
1558
- extension?: string;
1559
- /** MIME类型 */
1560
- mimeType: string;
1561
- /** 文件大小 */
1562
- size: number;
1563
- /** MD5哈希 */
1564
- md5Hash: string;
1565
- /** SHA256哈希 */
1566
- sha256Hash?: string;
1567
- /** 存储路径 */
1568
- storagePath: string;
1569
- /** CDN访问URL */
1570
- cdnUrl?: string;
1571
- /** 所属文件夹ID */
1572
- folderId?: string;
1573
- /** 模块ID */
1574
- moduleId?: string;
1575
- /** 业务ID */
1576
- businessId?: string;
1577
- /** 文件标签 */
1578
- tags?: string[];
1579
- /** 文件元信息 */
1580
- metadata?: Record<string, any>;
1581
- /** 是否为临时文件 */
1582
- isTemporary: boolean;
1583
- /** 是否已删除 */
1584
- isDeleted: boolean;
1585
- /** 访问次数 */
1586
- accessCount: number;
1587
- /** 下载次数 */
1588
- downloadCount: number;
1589
- /** 上传者ID */
1590
- uploaderId: string;
1591
- /** 上传时间 */
1592
- uploadTime: string;
1593
- /** 最后访问时间 */
1594
- lastAccessTime?: string;
1595
- /** 过期时间 */
1596
- expiresAt?: string;
1597
- /** 创建时间 */
1598
- createdAt: string;
1599
- /** 更新时间 */
1600
- updatedAt: string;
1601
- }
1602
- /**
1603
- * 文件列表响应
1604
- */
1605
- interface FileListResponse {
1606
- /** 文件列表 */
1607
- files: FileInfo[];
1608
- /** 分页信息 */
1609
- pagination: {
1610
- /** 总记录数 */
1611
- total: number;
1612
- /** 当前页码 */
1613
- page: number;
1614
- /** 每页大小 */
1615
- pageSize: number;
1616
- /** 总页数 */
1617
- totalPages: number;
1618
- };
1619
- }
1620
- /**
1621
- * 文件更新参数
1622
- */
1623
- interface FileUpdateParams {
1624
- /** 新的文件名 */
1625
- originalName?: string;
1626
- /** 文件夹ID */
1627
- folderId?: string;
1628
- /** 文件标签 */
1629
- tags?: string[];
1630
- /** 自定义元数据 */
1631
- metadata?: Record<string, any>;
1632
- /** 过期时间 */
1633
- expiresAt?: string;
1634
- }
1635
- /**
1636
- * 文件夹创建参数
1637
- */
1638
- interface FolderCreateParams {
1639
- /** 文件夹名称 */
1640
- name: string;
1641
- /** 父文件夹ID */
1642
- parentId?: string;
1643
- /** 模块ID */
1644
- moduleId?: string;
1645
- /** 业务ID */
1646
- businessId?: string;
1647
- /** 文件夹描述 */
1648
- description?: string;
1649
- /** 显示顺序 */
1650
- sortOrder?: number;
1651
- }
1652
- /**
1653
- * 文件夹信息响应
1654
- */
1655
- interface FolderInfo {
1656
- /** 文件夹ID */
1657
- id: string;
1658
- /** 文件夹名称 */
1659
- name: string;
1660
- /** 父文件夹ID */
1661
- parentId?: string;
1662
- /** 模块ID */
1663
- moduleId?: string;
1664
- /** 业务ID */
1665
- businessId?: string;
1666
- /** 文件夹路径 */
1667
- path: string;
1668
- /** 层级深度 */
1669
- depth: number;
1670
- /** 显示顺序 */
1671
- sortOrder: number;
1672
- /** 文件夹描述 */
1673
- description?: string;
1674
- /** 是否为系统文件夹 */
1675
- isSystem: boolean;
1676
- /** 创建者ID */
1677
- createdBy: string;
1678
- /** 创建时间 */
1679
- createdAt: string;
1680
- /** 更新时间 */
1681
- updatedAt: string;
1682
- /** 子文件夹列表 */
1683
- children?: FolderInfo[];
1684
- /** 文件数量 */
1685
- fileCount?: number;
1686
- }
1687
- /**
1688
- * 文件夹更新参数
1689
- */
1690
- interface FolderUpdateParams {
1691
- /** 文件夹名称 */
1692
- name?: string;
1693
- /** 父文件夹ID */
1694
- parentId?: string;
1695
- /** 文件夹描述 */
1696
- description?: string;
1697
- /** 显示顺序 */
1698
- sortOrder?: number;
1699
- }
1700
- /**
1701
- * 文件处理请求参数
1702
- */
1703
- interface FileProcessParams {
1704
- /** 处理类型 */
1705
- type: 'compress' | 'resize' | 'convert' | 'thumbnail' | 'watermark';
1706
- /** 处理参数 */
1707
- parameters: Record<string, any>;
1708
- /** 优先级 */
1709
- priority?: number;
1710
- }
1711
- /**
1712
- * 文件处理状态响应
1713
- */
1714
- interface ProcessingStatus {
1715
- /** 处理记录ID */
1716
- id: string;
1717
- /** 文件ID */
1718
- fileId: string;
1719
- /** 处理类型 */
1720
- type: string;
1721
- /** 处理状态 */
1722
- status: 'pending' | 'processing' | 'completed' | 'failed';
1723
- /** 处理进度 */
1724
- progress?: number;
1725
- /** 处理参数 */
1726
- parameters?: Record<string, any>;
1727
- /** 处理结果 */
1728
- result?: Record<string, any>;
1729
- /** 输出文件路径 */
1730
- outputPath?: string;
1731
- /** 错误信息 */
1732
- errorMessage?: string;
1733
- /** 开始时间 */
1734
- startedAt?: string;
1735
- /** 完成时间 */
1736
- completedAt?: string;
1737
- /** 创建时间 */
1738
- createdAt: string;
1739
- }
1740
- /**
1741
- * 文件分享创建参数
1742
- */
1743
- interface ShareCreateParams {
1744
- /** 分享的文件ID列表 */
1745
- fileIds: string[];
1746
- /** 分享标题 */
1747
- title?: string;
1748
- /** 分享描述 */
1749
- description?: string;
1750
- /** 访问密码 */
1751
- password?: string;
1752
- /** 访问权限 */
1753
- permission?: 'view' | 'download';
1754
- /** 最大下载次数 */
1755
- maxDownloads?: number;
1756
- /** 最大访问次数 */
1757
- maxAccess?: number;
1758
- /** 过期时间 */
1759
- expiresAt?: string;
1760
- }
1761
- /**
1762
- * 文件分享信息响应
1763
- */
1764
- interface ShareInfo {
1765
- /** 分享ID */
1766
- id: string;
1767
- /** 分享代码 */
1768
- shareCode: string;
1769
- /** 分享的文件ID列表 */
1770
- fileIds: string[];
1771
- /** 分享标题 */
1772
- title?: string;
1773
- /** 分享描述 */
1774
- description?: string;
1775
- /** 是否有密码保护 */
1776
- hasPassword: boolean;
1777
- /** 访问权限 */
1778
- permission: 'view' | 'download';
1779
- /** 最大下载次数 */
1780
- maxDownloads?: number;
1781
- /** 当前下载次数 */
1782
- downloadCount: number;
1783
- /** 最大访问次数 */
1784
- maxAccess?: number;
1785
- /** 当前访问次数 */
1786
- accessCount: number;
1787
- /** 是否启用 */
1788
- isActive: boolean;
1789
- /** 过期时间 */
1790
- expiresAt?: string;
1791
- /** 创建者ID */
1792
- createdBy: string;
1793
- /** 创建时间 */
1794
- createdAt: string;
1795
- /** 分享链接 */
1796
- shareUrl: string;
1797
- }
1798
- /**
1799
- * 分享访问验证参数
1800
- */
1801
- interface ShareAccessParams {
1802
- /** 分享代码 */
1803
- shareCode: string;
1804
- /** 访问密码 */
1805
- password?: string;
1806
- }
1807
- /**
1808
- * 文件统计信息响应
1809
- */
1810
- interface FileStats {
1811
- /** 总文件数 */
1812
- totalFiles: number;
1813
- /** 总文件大小 */
1814
- totalSize: number;
1815
- /** 按类型统计 */
1816
- byType: Array<{
1817
- /** MIME类型 */
1818
- mimeType: string;
1819
- /** 文件数量 */
1820
- count: number;
1821
- /** 总大小 */
1822
- totalSize: number;
1823
- }>;
1824
- /** 按日期统计(最近30天) */
1825
- byDate: Array<{
1826
- /** 日期 */
1827
- date: string;
1828
- /** 上传数量 */
1829
- count: number;
1830
- /** 总大小 */
1831
- totalSize: number;
1832
- }>;
1833
- /** 按模块统计 */
1834
- byModule: Array<{
1835
- /** 模块ID */
1836
- moduleId: string;
1837
- /** 文件数量 */
1838
- count: number;
1839
- /** 总大小 */
1840
- totalSize: number;
1841
- }>;
1842
- }
1843
- /**
1844
- * API错误代码枚举
1845
- */
1846
- declare enum ApiErrorCode {
1847
- UNKNOWN_ERROR = "UNKNOWN_ERROR",
1848
- VALIDATION_ERROR = "VALIDATION_ERROR",
1849
- AUTHENTICATION_ERROR = "AUTHENTICATION_ERROR",
1850
- AUTHORIZATION_ERROR = "AUTHORIZATION_ERROR",
1851
- NOT_FOUND = "NOT_FOUND",
1852
- CONFLICT = "CONFLICT",
1853
- RATE_LIMIT_EXCEEDED = "RATE_LIMIT_EXCEEDED",
1854
- FILE_NOT_FOUND = "FILE_NOT_FOUND",
1855
- FILE_TOO_LARGE = "FILE_TOO_LARGE",
1856
- FILE_TYPE_NOT_SUPPORTED = "FILE_TYPE_NOT_SUPPORTED",
1857
- FILE_UPLOAD_FAILED = "FILE_UPLOAD_FAILED",
1858
- FILE_PROCESSING_FAILED = "FILE_PROCESSING_FAILED",
1859
- FILE_ALREADY_EXISTS = "FILE_ALREADY_EXISTS",
1860
- FILE_CORRUPTED = "FILE_CORRUPTED",
1861
- FOLDER_NOT_FOUND = "FOLDER_NOT_FOUND",
1862
- FOLDER_NOT_EMPTY = "FOLDER_NOT_EMPTY",
1863
- FOLDER_NAME_CONFLICT = "FOLDER_NAME_CONFLICT",
1864
- FOLDER_DEPTH_EXCEEDED = "FOLDER_DEPTH_EXCEEDED",
1865
- STORAGE_PROVIDER_ERROR = "STORAGE_PROVIDER_ERROR",
1866
- STORAGE_QUOTA_EXCEEDED = "STORAGE_QUOTA_EXCEEDED",
1867
- STORAGE_UNAVAILABLE = "STORAGE_UNAVAILABLE",
1868
- SHARE_NOT_FOUND = "SHARE_NOT_FOUND",
1869
- SHARE_EXPIRED = "SHARE_EXPIRED",
1870
- SHARE_PASSWORD_INCORRECT = "SHARE_PASSWORD_INCORRECT",
1871
- SHARE_ACCESS_DENIED = "SHARE_ACCESS_DENIED",
1872
- SHARE_DOWNLOAD_LIMIT_EXCEEDED = "SHARE_DOWNLOAD_LIMIT_EXCEEDED"
1873
- }
1874
- /**
1875
- * 错误消息映射
1876
- */
1877
- declare const ErrorMessages: Record<ApiErrorCode, string>;
1878
- /**
1879
- * 错误代码到HTTP状态码的映射
1880
- */
1881
- declare const ErrorHttpStatusMap: Record<ApiErrorCode, number>;
1882
-
1883
- /**
1884
- * API错误处理工具类
1885
- * 提供标准化的错误处理和响应格式
1886
- */
1887
-
1888
- /**
1889
- * API错误类
1890
- * 继承自Error,添加错误代码和详细信息
1891
- */
1892
- declare class ApiError extends Error {
1893
- readonly code: ApiErrorCode;
1894
- readonly statusCode: number;
1895
- readonly details?: any;
1896
- constructor(code: ApiErrorCode, message?: string, details?: any, statusCode?: number);
1897
- /**
1898
- * 转换为API响应格式
1899
- */
1900
- toApiResponse(): ApiResponse;
1901
- /**
1902
- * 转换为NextResponse
1903
- */
1904
- toNextResponse(): NextResponse;
1905
- }
1906
-
1907
- /**
1908
- * Drizzle ORM 文件元数据持久化适配器
1909
- *
1910
- * 提供基于 Drizzle ORM 的数据库持久化实现
1911
- */
1912
-
1913
- /**
1914
- * Drizzle 表定义类型(兼容多种 Drizzle 表结构)
1915
- */
1916
- type DrizzleTable = any;
1917
- /**
1918
- * Drizzle 数据库连接类型
1919
- */
1920
- type DrizzleDb = any;
1921
- /**
1922
- * 字段映射配置
1923
- *
1924
- * 将 FileMetadata 的字段映射到数据库表的列名
1925
- */
1926
- interface FieldMapping {
1927
- id?: string;
1928
- filename?: string;
1929
- originalName?: string;
1930
- mimeType?: string;
1931
- size?: string;
1932
- hash?: string;
1933
- storageType?: string;
1934
- storagePath?: string;
1935
- url?: string;
1936
- cdnUrl?: string;
1937
- moduleId?: string;
1938
- businessId?: string;
1939
- userId?: string;
1940
- uploadedAt?: string;
1941
- expiresAt?: string;
1942
- metadata?: string;
1943
- status?: string;
1944
- processingStatus?: string;
1945
- versions?: string;
1946
- tags?: string;
1947
- }
1948
- /**
1949
- * Drizzle 仓储配置
1950
- */
1951
- interface DrizzleRepositoryConfig {
1952
- /** Drizzle 数据库实例 */
1953
- db: DrizzleDb;
1954
- /** 文件元数据表 */
1955
- table: DrizzleTable;
1956
- /** 字段映射(如果数据库列名与 FileMetadata 字段不同) */
1957
- fieldMapping?: FieldMapping;
1958
- }
1959
- /**
1960
- * 创建 Drizzle ORM 文件仓储
1961
- *
1962
- * @example
1963
- * ```typescript
1964
- * import { createDrizzleRepository } from '@qhr123/sa2kit/universalFile/server';
1965
- * import { db } from './db';
1966
- * import { fileMetadata } from './schema';
1967
- *
1968
- * const repository = createDrizzleRepository({
1969
- * db,
1970
- * table: fileMetadata,
1971
- * fieldMapping: {
1972
- * // 如果列名与 FileMetadata 字段不同,可以在这里映射
1973
- * originalName: 'original_filename',
1974
- * }
1975
- * });
1976
- * ```
1977
- */
1978
- declare function createDrizzleRepository(config: DrizzleRepositoryConfig): IFileMetadataRepository;
1979
-
1980
- /**
1981
- * 文件服务配置加载辅助工具
1982
- *
1983
- * 提供从环境变量加载配置、默认配置常量等通用功能
1984
- */
1985
-
1986
- /**
1987
- * 默认文件大小限制(字节)
1988
- */
1989
- declare const DEFAULT_MAX_FILE_SIZE = 104857600;
1990
- /**
1991
- * 默认允许的 MIME 类型
1992
- */
1993
- declare const DEFAULT_ALLOWED_MIME_TYPES: string[];
1994
- /**
1995
- * 默认缓存配置
1996
- */
1997
- declare const DEFAULT_CACHE_CONFIG: {
1998
- enabled: boolean;
1999
- metadataTTL: number;
2000
- urlTTL: number;
2001
- };
2002
- /**
2003
- * 默认文件服务配置
2004
- */
2005
- declare const DEFAULT_FILE_SERVICE_CONFIG: {
2006
- readonly maxFileSize: 104857600;
2007
- readonly allowedMimeTypes: string[];
2008
- readonly cache: {
2009
- enabled: boolean;
2010
- metadataTTL: number;
2011
- urlTTL: number;
2012
- };
2013
- readonly enableMonitoring: false;
2014
- };
2015
- /**
2016
- * 从环境变量加载阿里云 OSS 配置
2017
- *
2018
- * 支持的环境变量:
2019
- * - ALIYUN_OSS_REGION
2020
- * - ALIYUN_OSS_BUCKET
2021
- * - ALIYUN_OSS_ACCESS_KEY_ID
2022
- * - ALIYUN_OSS_ACCESS_KEY_SECRET
2023
- * - ALIYUN_OSS_CUSTOM_DOMAIN (可选)
2024
- * - ALIYUN_OSS_SECURE (可选,默认 false)
2025
- * - ALIYUN_OSS_INTERNAL (可选,默认 false)
2026
- */
2027
- declare function loadOSSConfigFromEnv(): AliyunOSSConfig | null;
2028
- /**
2029
- * 从环境变量加载阿里云 CDN 配置
2030
- *
2031
- * 支持的环境变量:
2032
- * - ALIYUN_CDN_DOMAIN
2033
- * - ALIYUN_CDN_ACCESS_KEY_ID
2034
- * - ALIYUN_CDN_ACCESS_KEY_SECRET
2035
- * - ALIYUN_CDN_REGION (可选)
2036
- */
2037
- declare function loadCDNConfigFromEnv(): AliyunCDNConfig | null;
2038
- /**
2039
- * 获取默认本地存储配置
2040
- *
2041
- * 支持的环境变量:
2042
- * - FILE_STORAGE_PATH (可选,默认 'uploads')
2043
- * - FILE_BASE_URL (可选,默认 '/uploads')
2044
- */
2045
- declare function getDefaultLocalStorage(): LocalStorageConfig;
2046
- /**
2047
- * 从环境变量加载完整的文件服务配置
2048
- *
2049
- * 配置优先级:
2050
- * 1. 阿里云 OSS(如果配置完整)
2051
- * 2. 本地存储(备用方案)
2052
- *
2053
- * 支持的环境变量:
2054
- * - MAX_FILE_SIZE (可选,默认 100MB)
2055
- * - ENABLE_CACHE (可选,默认 false)
2056
- * - METADATA_CACHE_TTL (可选,默认 3600秒)
2057
- * - URL_CACHE_TTL (可选,默认 1800秒)
2058
- * - ENABLE_FILE_MONITORING (可选,默认 false)
2059
- */
2060
- declare function loadConfigFromEnv(): Partial<UniversalFileServiceConfig>;
2061
- /**
2062
- * 配置服务接口
2063
- *
2064
- * 用于从配置管理系统加载配置
2065
- */
2066
- interface IConfigService {
2067
- /**
2068
- * 获取配置值
2069
- */
2070
- getConfig(key: string, defaultValue?: any): Promise<any>;
2071
- }
2072
- /**
2073
- * 配置键映射
2074
- */
2075
- interface OSSConfigKeyMapping {
2076
- region: string;
2077
- bucket: string;
2078
- accessKeyId: string;
2079
- accessKeySecret: string;
2080
- customDomain?: string;
2081
- secure?: string;
2082
- internal?: string;
2083
- }
2084
- /**
2085
- * 默认的 OSS 配置键映射(阿里云标准)
2086
- */
2087
- declare const DEFAULT_OSS_CONFIG_KEYS: OSSConfigKeyMapping;
2088
- /**
2089
- * 从配置服务加载 OSS 配置
2090
- *
2091
- * 通用函数,可用于任何实现了 IConfigService 接口的配置系统
2092
- *
2093
- * @param configService - 配置服务实例
2094
- * @param keyMapping - 配置键映射(可选,默认使用标准键名)
2095
- *
2096
- * @example
2097
- * ```typescript
2098
- * import { loadOSSConfigFromService } from 'sa2kit/universalFile/server';
2099
- *
2100
- * const config = await loadOSSConfigFromService(myConfigService, {
2101
- * region: 'oss_region',
2102
- * bucket: 'oss_bucket',
2103
- * // ...
2104
- * });
2105
- * ```
2106
- */
2107
- declare function loadOSSConfigFromService(configService: IConfigService, keyMapping?: Partial<OSSConfigKeyMapping>): Promise<AliyunOSSConfig | null>;
2108
- /**
2109
- * 组合多个配置源
2110
- *
2111
- * 按优先级顺序尝试加载配置,返回第一个成功的配置
2112
- *
2113
- * @param loaders - 配置加载器数组(按优先级排序)
2114
- *
2115
- * @example
2116
- * ```typescript
2117
- * const config = await loadConfigWithFallback([
2118
- * async () => loadOSSConfigFromService(configService),
2119
- * () => loadOSSConfigFromEnv(),
2120
- * ]);
2121
- * ```
2122
- */
2123
- declare function loadConfigWithFallback<T>(loaders: Array<() => Promise<T | null>>): Promise<T | null>;
2124
- /**
2125
- * 文件服务工厂选项
2126
- */
2127
- interface FileServiceFactoryOptions {
2128
- /**
2129
- * 配置加载器(按优先级排序)
2130
- */
2131
- configLoaders?: Array<() => Promise<Partial<UniversalFileServiceConfig> | null>>;
2132
- /**
2133
- * 持久化仓储(可选)
2134
- */
2135
- repository?: any;
2136
- /**
2137
- * 自定义配置(会覆盖加载的配置)
2138
- */
2139
- customConfig?: Partial<UniversalFileServiceConfig>;
2140
- /**
2141
- * 是否自动初始化服务
2142
- */
2143
- autoInitialize?: boolean;
2144
- }
2145
- /**
2146
- * 创建文件服务(工厂函数)
2147
- *
2148
- * 通用的服务创建函数,支持多种配置源和可选的持久化
2149
- *
2150
- * @param options - 工厂选项
2151
- *
2152
- * @example
2153
- * ```typescript
2154
- * import {
2155
- * createFileServiceWithFactory,
2156
- * loadOSSConfigFromService,
2157
- * loadConfigFromEnv
2158
- * } from 'sa2kit/universalFile/server';
2159
- *
2160
- * const service = await createFileServiceWithFactory({
2161
- * configLoaders: [
2162
- * async () => {
2163
- * const ossConfig = await loadOSSConfigFromService(configService);
2164
- * return ossConfig ? { storage: ossConfig, defaultStorage: 'aliyun-oss' } : null;
2165
- * },
2166
- * () => Promise.resolve(loadConfigFromEnv()),
2167
- * ],
2168
- * repository: myRepository,
2169
- * autoInitialize: true,
2170
- * });
2171
- * ```
2172
- */
2173
- declare function createFileServiceWithFactory(options?: FileServiceFactoryOptions): Promise<UniversalFileService>;
2174
- /**
2175
- * 单例工厂返回值
2176
- */
2177
- interface SingletonFactory<T> {
2178
- /**
2179
- * 获取单例实例
2180
- */
2181
- get(): Promise<T>;
2182
- /**
2183
- * 重置单例(主要用于测试)
2184
- */
2185
- reset(): void;
2186
- /**
2187
- * 检查单例是否已创建
2188
- */
2189
- isCreated(): boolean;
2190
- }
2191
- /**
2192
- * 创建单例工厂
2193
- *
2194
- * 提供单例模式的通用实现,适用于需要单例的服务
2195
- *
2196
- * @param factory - 创建实例的工厂函数
2197
- * @param options - 单例选项
2198
- *
2199
- * @example
2200
- * ```typescript
2201
- * const fileServiceSingleton = createSingleton(
2202
- * async () => {
2203
- * const service = new UniversalFileService(config);
2204
- * await service.initialize();
2205
- * return service;
2206
- * },
2207
- * { autoInitialize: true }
2208
- * );
2209
- *
2210
- * // 获取单例
2211
- * const service = await fileServiceSingleton.get();
2212
- *
2213
- * // 重置(测试用)
2214
- * fileServiceSingleton.reset();
2215
- * ```
2216
- */
2217
- declare function createSingleton<T>(factory: () => Promise<T>, options?: {
2218
- /** 是否在第一次获取时自动初始化(默认 true) */
2219
- autoInitialize?: boolean;
2220
- /** 单例名称(用于日志) */
2221
- name?: string;
2222
- }): SingletonFactory<T>;
2223
-
2224
- /**
2225
- * 通用文件服务 - PostgreSQL 数据库表结构定义
2226
- *
2227
- * 这个文件定义了通用文件服务的完整数据库表结构,使用Drizzle ORM框架。
2228
- * 支持多模块文件管理、版本控制、分享功能、处理记录等。
2229
- *
2230
- * 表结构概览:
2231
- * - file_storage_providers: 存储提供者配置表
2232
- * - file_folders: 文件夹表(支持层级结构)
2233
- * - file_metadata: 文件元数据主表
2234
- * - file_versions: 文件版本表
2235
- * - file_processing_records: 文件处理记录表
2236
- * - file_shares: 文件分享表
2237
- * - file_access_logs: 文件访问日志表
2238
- * - file_thumbnails: 文件缩略图表
2239
- *
2240
- * 设计特点:
2241
- * - 支持多存储提供者(本地、OSS、CDN等)
2242
- * - 完整的文件版本管理
2243
- * - 灵活的文件夹层级结构
2244
- * - 详细的访问日志和统计
2245
- * - 文件处理流水线记录
2246
- * - 安全的分享机制
2247
- *
2248
- * @fileoverview 数据库表结构 - 通用文件服务 (PostgreSQL)
2249
- * @package sa2kit/universalFile/server
2250
- */
2251
- /**
2252
- * 存储提供者配置表 (file_storage_providers)
2253
- *
2254
- * 管理不同的文件存储提供者配置,支持本地存储、云存储等多种方式。
2255
- * 每个提供者有独立的配置和优先级设置。
2256
- */
2257
- declare const fileStorageProviders: drizzle_orm_pg_core.PgTableWithColumns<{
2258
- name: "file_storage_providers";
2259
- schema: undefined;
2260
- columns: {
2261
- id: drizzle_orm_pg_core.PgColumn<{
2262
- name: "id";
2263
- tableName: "file_storage_providers";
2264
- dataType: "number";
2265
- columnType: "PgSerial";
2266
- data: number;
2267
- driverParam: number;
2268
- notNull: true;
2269
- hasDefault: true;
2270
- isPrimaryKey: true;
2271
- isAutoincrement: false;
2272
- hasRuntimeDefault: false;
2273
- enumValues: undefined;
2274
- baseColumn: never;
2275
- identity: undefined;
2276
- generated: undefined;
2277
- }, {}, {}>;
2278
- name: drizzle_orm_pg_core.PgColumn<{
2279
- name: "name";
2280
- tableName: "file_storage_providers";
2281
- dataType: "string";
2282
- columnType: "PgVarchar";
2283
- data: string;
2284
- driverParam: string;
2285
- notNull: true;
2286
- hasDefault: false;
2287
- isPrimaryKey: false;
2288
- isAutoincrement: false;
2289
- hasRuntimeDefault: false;
2290
- enumValues: [string, ...string[]];
2291
- baseColumn: never;
2292
- identity: undefined;
2293
- generated: undefined;
2294
- }, {}, {
2295
- length: 100;
2296
- }>;
2297
- type: drizzle_orm_pg_core.PgColumn<{
2298
- name: "type";
2299
- tableName: "file_storage_providers";
2300
- dataType: "string";
2301
- columnType: "PgVarchar";
2302
- data: string;
2303
- driverParam: string;
2304
- notNull: true;
2305
- hasDefault: false;
2306
- isPrimaryKey: false;
2307
- isAutoincrement: false;
2308
- hasRuntimeDefault: false;
2309
- enumValues: [string, ...string[]];
2310
- baseColumn: never;
2311
- identity: undefined;
2312
- generated: undefined;
2313
- }, {}, {
2314
- length: 50;
2315
- }>;
2316
- config: drizzle_orm_pg_core.PgColumn<{
2317
- name: "config";
2318
- tableName: "file_storage_providers";
2319
- dataType: "json";
2320
- columnType: "PgJson";
2321
- data: unknown;
2322
- driverParam: unknown;
2323
- notNull: true;
2324
- hasDefault: false;
2325
- isPrimaryKey: false;
2326
- isAutoincrement: false;
2327
- hasRuntimeDefault: false;
2328
- enumValues: undefined;
2329
- baseColumn: never;
2330
- identity: undefined;
2331
- generated: undefined;
2332
- }, {}, {}>;
2333
- isActive: drizzle_orm_pg_core.PgColumn<{
2334
- name: "is_active";
2335
- tableName: "file_storage_providers";
2336
- dataType: "boolean";
2337
- columnType: "PgBoolean";
2338
- data: boolean;
2339
- driverParam: boolean;
2340
- notNull: true;
2341
- hasDefault: true;
2342
- isPrimaryKey: false;
2343
- isAutoincrement: false;
2344
- hasRuntimeDefault: false;
2345
- enumValues: undefined;
2346
- baseColumn: never;
2347
- identity: undefined;
2348
- generated: undefined;
2349
- }, {}, {}>;
2350
- isDefault: drizzle_orm_pg_core.PgColumn<{
2351
- name: "is_default";
2352
- tableName: "file_storage_providers";
2353
- dataType: "boolean";
2354
- columnType: "PgBoolean";
2355
- data: boolean;
2356
- driverParam: boolean;
2357
- notNull: true;
2358
- hasDefault: true;
2359
- isPrimaryKey: false;
2360
- isAutoincrement: false;
2361
- hasRuntimeDefault: false;
2362
- enumValues: undefined;
2363
- baseColumn: never;
2364
- identity: undefined;
2365
- generated: undefined;
2366
- }, {}, {}>;
2367
- priority: drizzle_orm_pg_core.PgColumn<{
2368
- name: "priority";
2369
- tableName: "file_storage_providers";
2370
- dataType: "number";
2371
- columnType: "PgInteger";
2372
- data: number;
2373
- driverParam: string | number;
2374
- notNull: true;
2375
- hasDefault: true;
2376
- isPrimaryKey: false;
2377
- isAutoincrement: false;
2378
- hasRuntimeDefault: false;
2379
- enumValues: undefined;
2380
- baseColumn: never;
2381
- identity: undefined;
2382
- generated: undefined;
2383
- }, {}, {}>;
2384
- maxFileSize: drizzle_orm_pg_core.PgColumn<{
2385
- name: "max_file_size";
2386
- tableName: "file_storage_providers";
2387
- dataType: "number";
2388
- columnType: "PgBigInt53";
2389
- data: number;
2390
- driverParam: string | number;
2391
- notNull: false;
2392
- hasDefault: false;
2393
- isPrimaryKey: false;
2394
- isAutoincrement: false;
2395
- hasRuntimeDefault: false;
2396
- enumValues: undefined;
2397
- baseColumn: never;
2398
- identity: undefined;
2399
- generated: undefined;
2400
- }, {}, {}>;
2401
- supportedMimeTypes: drizzle_orm_pg_core.PgColumn<{
2402
- name: "supported_mime_types";
2403
- tableName: "file_storage_providers";
2404
- dataType: "json";
2405
- columnType: "PgJson";
2406
- data: unknown;
2407
- driverParam: unknown;
2408
- notNull: false;
2409
- hasDefault: false;
2410
- isPrimaryKey: false;
2411
- isAutoincrement: false;
2412
- hasRuntimeDefault: false;
2413
- enumValues: undefined;
2414
- baseColumn: never;
2415
- identity: undefined;
2416
- generated: undefined;
2417
- }, {}, {}>;
2418
- createdAt: drizzle_orm_pg_core.PgColumn<{
2419
- name: "created_at";
2420
- tableName: "file_storage_providers";
2421
- dataType: "date";
2422
- columnType: "PgTimestamp";
2423
- data: Date;
2424
- driverParam: string;
2425
- notNull: true;
2426
- hasDefault: true;
2427
- isPrimaryKey: false;
2428
- isAutoincrement: false;
2429
- hasRuntimeDefault: false;
2430
- enumValues: undefined;
2431
- baseColumn: never;
2432
- identity: undefined;
2433
- generated: undefined;
2434
- }, {}, {}>;
2435
- updatedAt: drizzle_orm_pg_core.PgColumn<{
2436
- name: "updated_at";
2437
- tableName: "file_storage_providers";
2438
- dataType: "date";
2439
- columnType: "PgTimestamp";
2440
- data: Date;
2441
- driverParam: string;
2442
- notNull: true;
2443
- hasDefault: true;
2444
- isPrimaryKey: false;
2445
- isAutoincrement: false;
2446
- hasRuntimeDefault: false;
2447
- enumValues: undefined;
2448
- baseColumn: never;
2449
- identity: undefined;
2450
- generated: undefined;
2451
- }, {}, {}>;
2452
- };
2453
- dialect: "pg";
2454
- }>;
2455
- /**
2456
- * 文件夹表 (file_folders)
2457
- *
2458
- * 支持层级结构的文件夹管理,每个模块可以有独立的文件夹结构。
2459
- */
2460
- declare const fileFolders: drizzle_orm_pg_core.PgTableWithColumns<{
2461
- name: "file_folders";
2462
- schema: undefined;
2463
- columns: {
2464
- id: drizzle_orm_pg_core.PgColumn<{
2465
- name: "id";
2466
- tableName: "file_folders";
2467
- dataType: "string";
2468
- columnType: "PgUUID";
2469
- data: string;
2470
- driverParam: string;
2471
- notNull: true;
2472
- hasDefault: true;
2473
- isPrimaryKey: true;
2474
- isAutoincrement: false;
2475
- hasRuntimeDefault: false;
2476
- enumValues: undefined;
2477
- baseColumn: never;
2478
- identity: undefined;
2479
- generated: undefined;
2480
- }, {}, {}>;
2481
- name: drizzle_orm_pg_core.PgColumn<{
2482
- name: "name";
2483
- tableName: "file_folders";
2484
- dataType: "string";
2485
- columnType: "PgVarchar";
2486
- data: string;
2487
- driverParam: string;
2488
- notNull: true;
2489
- hasDefault: false;
2490
- isPrimaryKey: false;
2491
- isAutoincrement: false;
2492
- hasRuntimeDefault: false;
2493
- enumValues: [string, ...string[]];
2494
- baseColumn: never;
2495
- identity: undefined;
2496
- generated: undefined;
2497
- }, {}, {
2498
- length: 255;
2499
- }>;
2500
- parentId: drizzle_orm_pg_core.PgColumn<{
2501
- name: "parent_id";
2502
- tableName: "file_folders";
2503
- dataType: "string";
2504
- columnType: "PgUUID";
2505
- data: string;
2506
- driverParam: string;
2507
- notNull: false;
2508
- hasDefault: false;
2509
- isPrimaryKey: false;
2510
- isAutoincrement: false;
2511
- hasRuntimeDefault: false;
2512
- enumValues: undefined;
2513
- baseColumn: never;
2514
- identity: undefined;
2515
- generated: undefined;
2516
- }, {}, {}>;
2517
- moduleId: drizzle_orm_pg_core.PgColumn<{
2518
- name: "module_id";
2519
- tableName: "file_folders";
2520
- dataType: "string";
2521
- columnType: "PgVarchar";
2522
- data: string;
2523
- driverParam: string;
2524
- notNull: false;
2525
- hasDefault: false;
2526
- isPrimaryKey: false;
2527
- isAutoincrement: false;
2528
- hasRuntimeDefault: false;
2529
- enumValues: [string, ...string[]];
2530
- baseColumn: never;
2531
- identity: undefined;
2532
- generated: undefined;
2533
- }, {}, {
2534
- length: 100;
2535
- }>;
2536
- businessId: drizzle_orm_pg_core.PgColumn<{
2537
- name: "business_id";
2538
- tableName: "file_folders";
2539
- dataType: "string";
2540
- columnType: "PgVarchar";
2541
- data: string;
2542
- driverParam: string;
2543
- notNull: false;
2544
- hasDefault: false;
2545
- isPrimaryKey: false;
2546
- isAutoincrement: false;
2547
- hasRuntimeDefault: false;
2548
- enumValues: [string, ...string[]];
2549
- baseColumn: never;
2550
- identity: undefined;
2551
- generated: undefined;
2552
- }, {}, {
2553
- length: 255;
2554
- }>;
2555
- path: drizzle_orm_pg_core.PgColumn<{
2556
- name: "path";
2557
- tableName: "file_folders";
2558
- dataType: "string";
2559
- columnType: "PgText";
2560
- data: string;
2561
- driverParam: string;
2562
- notNull: true;
2563
- hasDefault: false;
2564
- isPrimaryKey: false;
2565
- isAutoincrement: false;
2566
- hasRuntimeDefault: false;
2567
- enumValues: [string, ...string[]];
2568
- baseColumn: never;
2569
- identity: undefined;
2570
- generated: undefined;
2571
- }, {}, {}>;
2572
- depth: drizzle_orm_pg_core.PgColumn<{
2573
- name: "depth";
2574
- tableName: "file_folders";
2575
- dataType: "number";
2576
- columnType: "PgInteger";
2577
- data: number;
2578
- driverParam: string | number;
2579
- notNull: true;
2580
- hasDefault: true;
2581
- isPrimaryKey: false;
2582
- isAutoincrement: false;
2583
- hasRuntimeDefault: false;
2584
- enumValues: undefined;
2585
- baseColumn: never;
2586
- identity: undefined;
2587
- generated: undefined;
2588
- }, {}, {}>;
2589
- sortOrder: drizzle_orm_pg_core.PgColumn<{
2590
- name: "sort_order";
2591
- tableName: "file_folders";
2592
- dataType: "number";
2593
- columnType: "PgInteger";
2594
- data: number;
2595
- driverParam: string | number;
2596
- notNull: true;
2597
- hasDefault: true;
2598
- isPrimaryKey: false;
2599
- isAutoincrement: false;
2600
- hasRuntimeDefault: false;
2601
- enumValues: undefined;
2602
- baseColumn: never;
2603
- identity: undefined;
2604
- generated: undefined;
2605
- }, {}, {}>;
2606
- description: drizzle_orm_pg_core.PgColumn<{
2607
- name: "description";
2608
- tableName: "file_folders";
2609
- dataType: "string";
2610
- columnType: "PgText";
2611
- data: string;
2612
- driverParam: string;
2613
- notNull: false;
2614
- hasDefault: false;
2615
- isPrimaryKey: false;
2616
- isAutoincrement: false;
2617
- hasRuntimeDefault: false;
2618
- enumValues: [string, ...string[]];
2619
- baseColumn: never;
2620
- identity: undefined;
2621
- generated: undefined;
2622
- }, {}, {}>;
2623
- isSystem: drizzle_orm_pg_core.PgColumn<{
2624
- name: "is_system";
2625
- tableName: "file_folders";
2626
- dataType: "boolean";
2627
- columnType: "PgBoolean";
2628
- data: boolean;
2629
- driverParam: boolean;
2630
- notNull: true;
2631
- hasDefault: true;
2632
- isPrimaryKey: false;
2633
- isAutoincrement: false;
2634
- hasRuntimeDefault: false;
2635
- enumValues: undefined;
2636
- baseColumn: never;
2637
- identity: undefined;
2638
- generated: undefined;
2639
- }, {}, {}>;
2640
- createdBy: drizzle_orm_pg_core.PgColumn<{
2641
- name: "created_by";
2642
- tableName: "file_folders";
2643
- dataType: "string";
2644
- columnType: "PgVarchar";
2645
- data: string;
2646
- driverParam: string;
2647
- notNull: true;
2648
- hasDefault: false;
2649
- isPrimaryKey: false;
2650
- isAutoincrement: false;
2651
- hasRuntimeDefault: false;
2652
- enumValues: [string, ...string[]];
2653
- baseColumn: never;
2654
- identity: undefined;
2655
- generated: undefined;
2656
- }, {}, {
2657
- length: 255;
2658
- }>;
2659
- createdAt: drizzle_orm_pg_core.PgColumn<{
2660
- name: "created_at";
2661
- tableName: "file_folders";
2662
- dataType: "date";
2663
- columnType: "PgTimestamp";
2664
- data: Date;
2665
- driverParam: string;
2666
- notNull: true;
2667
- hasDefault: true;
2668
- isPrimaryKey: false;
2669
- isAutoincrement: false;
2670
- hasRuntimeDefault: false;
2671
- enumValues: undefined;
2672
- baseColumn: never;
2673
- identity: undefined;
2674
- generated: undefined;
2675
- }, {}, {}>;
2676
- updatedAt: drizzle_orm_pg_core.PgColumn<{
2677
- name: "updated_at";
2678
- tableName: "file_folders";
2679
- dataType: "date";
2680
- columnType: "PgTimestamp";
2681
- data: Date;
2682
- driverParam: string;
2683
- notNull: true;
2684
- hasDefault: true;
2685
- isPrimaryKey: false;
2686
- isAutoincrement: false;
2687
- hasRuntimeDefault: false;
2688
- enumValues: undefined;
2689
- baseColumn: never;
2690
- identity: undefined;
2691
- generated: undefined;
2692
- }, {}, {}>;
2693
- };
2694
- dialect: "pg";
2695
- }>;
2696
- /**
2697
- * 文件元数据主表 (file_metadata)
2698
- *
2699
- * 存储文件的完整元数据信息,是文件服务的核心表。
2700
- */
2701
- declare const fileMetadata: drizzle_orm_pg_core.PgTableWithColumns<{
2702
- name: "file_metadata";
2703
- schema: undefined;
2704
- columns: {
2705
- id: drizzle_orm_pg_core.PgColumn<{
2706
- name: "id";
2707
- tableName: "file_metadata";
2708
- dataType: "string";
2709
- columnType: "PgUUID";
2710
- data: string;
2711
- driverParam: string;
2712
- notNull: true;
2713
- hasDefault: true;
2714
- isPrimaryKey: true;
2715
- isAutoincrement: false;
2716
- hasRuntimeDefault: false;
2717
- enumValues: undefined;
2718
- baseColumn: never;
2719
- identity: undefined;
2720
- generated: undefined;
2721
- }, {}, {}>;
2722
- originalName: drizzle_orm_pg_core.PgColumn<{
2723
- name: "original_name";
2724
- tableName: "file_metadata";
2725
- dataType: "string";
2726
- columnType: "PgVarchar";
2727
- data: string;
2728
- driverParam: string;
2729
- notNull: true;
2730
- hasDefault: false;
2731
- isPrimaryKey: false;
2732
- isAutoincrement: false;
2733
- hasRuntimeDefault: false;
2734
- enumValues: [string, ...string[]];
2735
- baseColumn: never;
2736
- identity: undefined;
2737
- generated: undefined;
2738
- }, {}, {
2739
- length: 500;
2740
- }>;
2741
- storedName: drizzle_orm_pg_core.PgColumn<{
2742
- name: "stored_name";
2743
- tableName: "file_metadata";
2744
- dataType: "string";
2745
- columnType: "PgVarchar";
2746
- data: string;
2747
- driverParam: string;
2748
- notNull: true;
2749
- hasDefault: false;
2750
- isPrimaryKey: false;
2751
- isAutoincrement: false;
2752
- hasRuntimeDefault: false;
2753
- enumValues: [string, ...string[]];
2754
- baseColumn: never;
2755
- identity: undefined;
2756
- generated: undefined;
2757
- }, {}, {
2758
- length: 500;
2759
- }>;
2760
- extension: drizzle_orm_pg_core.PgColumn<{
2761
- name: "extension";
2762
- tableName: "file_metadata";
2763
- dataType: "string";
2764
- columnType: "PgVarchar";
2765
- data: string;
2766
- driverParam: string;
2767
- notNull: false;
2768
- hasDefault: false;
2769
- isPrimaryKey: false;
2770
- isAutoincrement: false;
2771
- hasRuntimeDefault: false;
2772
- enumValues: [string, ...string[]];
2773
- baseColumn: never;
2774
- identity: undefined;
2775
- generated: undefined;
2776
- }, {}, {
2777
- length: 20;
2778
- }>;
2779
- mimeType: drizzle_orm_pg_core.PgColumn<{
2780
- name: "mime_type";
2781
- tableName: "file_metadata";
2782
- dataType: "string";
2783
- columnType: "PgVarchar";
2784
- data: string;
2785
- driverParam: string;
2786
- notNull: true;
2787
- hasDefault: false;
2788
- isPrimaryKey: false;
2789
- isAutoincrement: false;
2790
- hasRuntimeDefault: false;
2791
- enumValues: [string, ...string[]];
2792
- baseColumn: never;
2793
- identity: undefined;
2794
- generated: undefined;
2795
- }, {}, {
2796
- length: 100;
2797
- }>;
2798
- size: drizzle_orm_pg_core.PgColumn<{
2799
- name: "size";
2800
- tableName: "file_metadata";
2801
- dataType: "number";
2802
- columnType: "PgBigInt53";
2803
- data: number;
2804
- driverParam: string | number;
2805
- notNull: true;
2806
- hasDefault: false;
2807
- isPrimaryKey: false;
2808
- isAutoincrement: false;
2809
- hasRuntimeDefault: false;
2810
- enumValues: undefined;
2811
- baseColumn: never;
2812
- identity: undefined;
2813
- generated: undefined;
2814
- }, {}, {}>;
2815
- md5Hash: drizzle_orm_pg_core.PgColumn<{
2816
- name: "md5_hash";
2817
- tableName: "file_metadata";
2818
- dataType: "string";
2819
- columnType: "PgVarchar";
2820
- data: string;
2821
- driverParam: string;
2822
- notNull: true;
2823
- hasDefault: false;
2824
- isPrimaryKey: false;
2825
- isAutoincrement: false;
2826
- hasRuntimeDefault: false;
2827
- enumValues: [string, ...string[]];
2828
- baseColumn: never;
2829
- identity: undefined;
2830
- generated: undefined;
2831
- }, {}, {
2832
- length: 32;
2833
- }>;
2834
- sha256Hash: drizzle_orm_pg_core.PgColumn<{
2835
- name: "sha256_hash";
2836
- tableName: "file_metadata";
2837
- dataType: "string";
2838
- columnType: "PgVarchar";
2839
- data: string;
2840
- driverParam: string;
2841
- notNull: false;
2842
- hasDefault: false;
2843
- isPrimaryKey: false;
2844
- isAutoincrement: false;
2845
- hasRuntimeDefault: false;
2846
- enumValues: [string, ...string[]];
2847
- baseColumn: never;
2848
- identity: undefined;
2849
- generated: undefined;
2850
- }, {}, {
2851
- length: 64;
2852
- }>;
2853
- storageProviderId: drizzle_orm_pg_core.PgColumn<{
2854
- name: "storage_provider_id";
2855
- tableName: "file_metadata";
2856
- dataType: "number";
2857
- columnType: "PgInteger";
2858
- data: number;
2859
- driverParam: string | number;
2860
- notNull: true;
2861
- hasDefault: false;
2862
- isPrimaryKey: false;
2863
- isAutoincrement: false;
2864
- hasRuntimeDefault: false;
2865
- enumValues: undefined;
2866
- baseColumn: never;
2867
- identity: undefined;
2868
- generated: undefined;
2869
- }, {}, {}>;
2870
- storagePath: drizzle_orm_pg_core.PgColumn<{
2871
- name: "storage_path";
2872
- tableName: "file_metadata";
2873
- dataType: "string";
2874
- columnType: "PgText";
2875
- data: string;
2876
- driverParam: string;
2877
- notNull: true;
2878
- hasDefault: false;
2879
- isPrimaryKey: false;
2880
- isAutoincrement: false;
2881
- hasRuntimeDefault: false;
2882
- enumValues: [string, ...string[]];
2883
- baseColumn: never;
2884
- identity: undefined;
2885
- generated: undefined;
2886
- }, {}, {}>;
2887
- cdnUrl: drizzle_orm_pg_core.PgColumn<{
2888
- name: "cdn_url";
2889
- tableName: "file_metadata";
2890
- dataType: "string";
2891
- columnType: "PgText";
2892
- data: string;
2893
- driverParam: string;
2894
- notNull: false;
2895
- hasDefault: false;
2896
- isPrimaryKey: false;
2897
- isAutoincrement: false;
2898
- hasRuntimeDefault: false;
2899
- enumValues: [string, ...string[]];
2900
- baseColumn: never;
2901
- identity: undefined;
2902
- generated: undefined;
2903
- }, {}, {}>;
2904
- folderId: drizzle_orm_pg_core.PgColumn<{
2905
- name: "folder_id";
2906
- tableName: "file_metadata";
2907
- dataType: "string";
2908
- columnType: "PgUUID";
2909
- data: string;
2910
- driverParam: string;
2911
- notNull: false;
2912
- hasDefault: false;
2913
- isPrimaryKey: false;
2914
- isAutoincrement: false;
2915
- hasRuntimeDefault: false;
2916
- enumValues: undefined;
2917
- baseColumn: never;
2918
- identity: undefined;
2919
- generated: undefined;
2920
- }, {}, {}>;
2921
- moduleId: drizzle_orm_pg_core.PgColumn<{
2922
- name: "module_id";
2923
- tableName: "file_metadata";
2924
- dataType: "string";
2925
- columnType: "PgVarchar";
2926
- data: string;
2927
- driverParam: string;
2928
- notNull: false;
2929
- hasDefault: false;
2930
- isPrimaryKey: false;
2931
- isAutoincrement: false;
2932
- hasRuntimeDefault: false;
2933
- enumValues: [string, ...string[]];
2934
- baseColumn: never;
2935
- identity: undefined;
2936
- generated: undefined;
2937
- }, {}, {
2938
- length: 100;
2939
- }>;
2940
- businessId: drizzle_orm_pg_core.PgColumn<{
2941
- name: "business_id";
2942
- tableName: "file_metadata";
2943
- dataType: "string";
2944
- columnType: "PgVarchar";
2945
- data: string;
2946
- driverParam: string;
2947
- notNull: false;
2948
- hasDefault: false;
2949
- isPrimaryKey: false;
2950
- isAutoincrement: false;
2951
- hasRuntimeDefault: false;
2952
- enumValues: [string, ...string[]];
2953
- baseColumn: never;
2954
- identity: undefined;
2955
- generated: undefined;
2956
- }, {}, {
2957
- length: 255;
2958
- }>;
2959
- tags: drizzle_orm_pg_core.PgColumn<{
2960
- name: "tags";
2961
- tableName: "file_metadata";
2962
- dataType: "json";
2963
- columnType: "PgJson";
2964
- data: unknown;
2965
- driverParam: unknown;
2966
- notNull: false;
2967
- hasDefault: false;
2968
- isPrimaryKey: false;
2969
- isAutoincrement: false;
2970
- hasRuntimeDefault: false;
2971
- enumValues: undefined;
2972
- baseColumn: never;
2973
- identity: undefined;
2974
- generated: undefined;
2975
- }, {}, {}>;
2976
- metadata: drizzle_orm_pg_core.PgColumn<{
2977
- name: "metadata";
2978
- tableName: "file_metadata";
2979
- dataType: "json";
2980
- columnType: "PgJson";
2981
- data: unknown;
2982
- driverParam: unknown;
2983
- notNull: false;
2984
- hasDefault: false;
2985
- isPrimaryKey: false;
2986
- isAutoincrement: false;
2987
- hasRuntimeDefault: false;
2988
- enumValues: undefined;
2989
- baseColumn: never;
2990
- identity: undefined;
2991
- generated: undefined;
2992
- }, {}, {}>;
2993
- isTemporary: drizzle_orm_pg_core.PgColumn<{
2994
- name: "is_temporary";
2995
- tableName: "file_metadata";
2996
- dataType: "boolean";
2997
- columnType: "PgBoolean";
2998
- data: boolean;
2999
- driverParam: boolean;
3000
- notNull: true;
3001
- hasDefault: true;
3002
- isPrimaryKey: false;
3003
- isAutoincrement: false;
3004
- hasRuntimeDefault: false;
3005
- enumValues: undefined;
3006
- baseColumn: never;
3007
- identity: undefined;
3008
- generated: undefined;
3009
- }, {}, {}>;
3010
- isDeleted: drizzle_orm_pg_core.PgColumn<{
3011
- name: "is_deleted";
3012
- tableName: "file_metadata";
3013
- dataType: "boolean";
3014
- columnType: "PgBoolean";
3015
- data: boolean;
3016
- driverParam: boolean;
3017
- notNull: true;
3018
- hasDefault: true;
3019
- isPrimaryKey: false;
3020
- isAutoincrement: false;
3021
- hasRuntimeDefault: false;
3022
- enumValues: undefined;
3023
- baseColumn: never;
3024
- identity: undefined;
3025
- generated: undefined;
3026
- }, {}, {}>;
3027
- accessCount: drizzle_orm_pg_core.PgColumn<{
3028
- name: "access_count";
3029
- tableName: "file_metadata";
3030
- dataType: "number";
3031
- columnType: "PgInteger";
3032
- data: number;
3033
- driverParam: string | number;
3034
- notNull: true;
3035
- hasDefault: true;
3036
- isPrimaryKey: false;
3037
- isAutoincrement: false;
3038
- hasRuntimeDefault: false;
3039
- enumValues: undefined;
3040
- baseColumn: never;
3041
- identity: undefined;
3042
- generated: undefined;
3043
- }, {}, {}>;
3044
- downloadCount: drizzle_orm_pg_core.PgColumn<{
3045
- name: "download_count";
3046
- tableName: "file_metadata";
3047
- dataType: "number";
3048
- columnType: "PgInteger";
3049
- data: number;
3050
- driverParam: string | number;
3051
- notNull: true;
3052
- hasDefault: true;
3053
- isPrimaryKey: false;
3054
- isAutoincrement: false;
3055
- hasRuntimeDefault: false;
3056
- enumValues: undefined;
3057
- baseColumn: never;
3058
- identity: undefined;
3059
- generated: undefined;
3060
- }, {}, {}>;
3061
- uploaderId: drizzle_orm_pg_core.PgColumn<{
3062
- name: "uploader_id";
3063
- tableName: "file_metadata";
3064
- dataType: "string";
3065
- columnType: "PgVarchar";
3066
- data: string;
3067
- driverParam: string;
3068
- notNull: true;
3069
- hasDefault: false;
3070
- isPrimaryKey: false;
3071
- isAutoincrement: false;
3072
- hasRuntimeDefault: false;
3073
- enumValues: [string, ...string[]];
3074
- baseColumn: never;
3075
- identity: undefined;
3076
- generated: undefined;
3077
- }, {}, {
3078
- length: 255;
3079
- }>;
3080
- uploadTime: drizzle_orm_pg_core.PgColumn<{
3081
- name: "upload_time";
3082
- tableName: "file_metadata";
3083
- dataType: "date";
3084
- columnType: "PgTimestamp";
3085
- data: Date;
3086
- driverParam: string;
3087
- notNull: true;
3088
- hasDefault: true;
3089
- isPrimaryKey: false;
3090
- isAutoincrement: false;
3091
- hasRuntimeDefault: false;
3092
- enumValues: undefined;
3093
- baseColumn: never;
3094
- identity: undefined;
3095
- generated: undefined;
3096
- }, {}, {}>;
3097
- lastAccessTime: drizzle_orm_pg_core.PgColumn<{
3098
- name: "last_access_time";
3099
- tableName: "file_metadata";
3100
- dataType: "date";
3101
- columnType: "PgTimestamp";
3102
- data: Date;
3103
- driverParam: string;
3104
- notNull: false;
3105
- hasDefault: false;
3106
- isPrimaryKey: false;
3107
- isAutoincrement: false;
3108
- hasRuntimeDefault: false;
3109
- enumValues: undefined;
3110
- baseColumn: never;
3111
- identity: undefined;
3112
- generated: undefined;
3113
- }, {}, {}>;
3114
- expiresAt: drizzle_orm_pg_core.PgColumn<{
3115
- name: "expires_at";
3116
- tableName: "file_metadata";
3117
- dataType: "date";
3118
- columnType: "PgTimestamp";
3119
- data: Date;
3120
- driverParam: string;
3121
- notNull: false;
3122
- hasDefault: false;
3123
- isPrimaryKey: false;
3124
- isAutoincrement: false;
3125
- hasRuntimeDefault: false;
3126
- enumValues: undefined;
3127
- baseColumn: never;
3128
- identity: undefined;
3129
- generated: undefined;
3130
- }, {}, {}>;
3131
- createdAt: drizzle_orm_pg_core.PgColumn<{
3132
- name: "created_at";
3133
- tableName: "file_metadata";
3134
- dataType: "date";
3135
- columnType: "PgTimestamp";
3136
- data: Date;
3137
- driverParam: string;
3138
- notNull: true;
3139
- hasDefault: true;
3140
- isPrimaryKey: false;
3141
- isAutoincrement: false;
3142
- hasRuntimeDefault: false;
3143
- enumValues: undefined;
3144
- baseColumn: never;
3145
- identity: undefined;
3146
- generated: undefined;
3147
- }, {}, {}>;
3148
- updatedAt: drizzle_orm_pg_core.PgColumn<{
3149
- name: "updated_at";
3150
- tableName: "file_metadata";
3151
- dataType: "date";
3152
- columnType: "PgTimestamp";
3153
- data: Date;
3154
- driverParam: string;
3155
- notNull: true;
3156
- hasDefault: true;
3157
- isPrimaryKey: false;
3158
- isAutoincrement: false;
3159
- hasRuntimeDefault: false;
3160
- enumValues: undefined;
3161
- baseColumn: never;
3162
- identity: undefined;
3163
- generated: undefined;
3164
- }, {}, {}>;
3165
- deletedAt: drizzle_orm_pg_core.PgColumn<{
3166
- name: "deleted_at";
3167
- tableName: "file_metadata";
3168
- dataType: "date";
3169
- columnType: "PgTimestamp";
3170
- data: Date;
3171
- driverParam: string;
3172
- notNull: false;
3173
- hasDefault: false;
3174
- isPrimaryKey: false;
3175
- isAutoincrement: false;
3176
- hasRuntimeDefault: false;
3177
- enumValues: undefined;
3178
- baseColumn: never;
3179
- identity: undefined;
3180
- generated: undefined;
3181
- }, {}, {}>;
3182
- };
3183
- dialect: "pg";
3184
- }>;
3185
- /**
3186
- * 文件版本表 (file_versions)
3187
- *
3188
- * 支持文件的版本管理,记录文件的历史版本信息。
3189
- */
3190
- declare const fileVersions: drizzle_orm_pg_core.PgTableWithColumns<{
3191
- name: "file_versions";
3192
- schema: undefined;
3193
- columns: {
3194
- id: drizzle_orm_pg_core.PgColumn<{
3195
- name: "id";
3196
- tableName: "file_versions";
3197
- dataType: "string";
3198
- columnType: "PgUUID";
3199
- data: string;
3200
- driverParam: string;
3201
- notNull: true;
3202
- hasDefault: true;
3203
- isPrimaryKey: true;
3204
- isAutoincrement: false;
3205
- hasRuntimeDefault: false;
3206
- enumValues: undefined;
3207
- baseColumn: never;
3208
- identity: undefined;
3209
- generated: undefined;
3210
- }, {}, {}>;
3211
- fileId: drizzle_orm_pg_core.PgColumn<{
3212
- name: "file_id";
3213
- tableName: "file_versions";
3214
- dataType: "string";
3215
- columnType: "PgUUID";
3216
- data: string;
3217
- driverParam: string;
3218
- notNull: true;
3219
- hasDefault: false;
3220
- isPrimaryKey: false;
3221
- isAutoincrement: false;
3222
- hasRuntimeDefault: false;
3223
- enumValues: undefined;
3224
- baseColumn: never;
3225
- identity: undefined;
3226
- generated: undefined;
3227
- }, {}, {}>;
3228
- version: drizzle_orm_pg_core.PgColumn<{
3229
- name: "version";
3230
- tableName: "file_versions";
3231
- dataType: "number";
3232
- columnType: "PgInteger";
3233
- data: number;
3234
- driverParam: string | number;
3235
- notNull: true;
3236
- hasDefault: false;
3237
- isPrimaryKey: false;
3238
- isAutoincrement: false;
3239
- hasRuntimeDefault: false;
3240
- enumValues: undefined;
3241
- baseColumn: never;
3242
- identity: undefined;
3243
- generated: undefined;
3244
- }, {}, {}>;
3245
- description: drizzle_orm_pg_core.PgColumn<{
3246
- name: "description";
3247
- tableName: "file_versions";
3248
- dataType: "string";
3249
- columnType: "PgText";
3250
- data: string;
3251
- driverParam: string;
3252
- notNull: false;
3253
- hasDefault: false;
3254
- isPrimaryKey: false;
3255
- isAutoincrement: false;
3256
- hasRuntimeDefault: false;
3257
- enumValues: [string, ...string[]];
3258
- baseColumn: never;
3259
- identity: undefined;
3260
- generated: undefined;
3261
- }, {}, {}>;
3262
- size: drizzle_orm_pg_core.PgColumn<{
3263
- name: "size";
3264
- tableName: "file_versions";
3265
- dataType: "number";
3266
- columnType: "PgBigInt53";
3267
- data: number;
3268
- driverParam: string | number;
3269
- notNull: true;
3270
- hasDefault: false;
3271
- isPrimaryKey: false;
3272
- isAutoincrement: false;
3273
- hasRuntimeDefault: false;
3274
- enumValues: undefined;
3275
- baseColumn: never;
3276
- identity: undefined;
3277
- generated: undefined;
3278
- }, {}, {}>;
3279
- md5Hash: drizzle_orm_pg_core.PgColumn<{
3280
- name: "md5_hash";
3281
- tableName: "file_versions";
3282
- dataType: "string";
3283
- columnType: "PgVarchar";
3284
- data: string;
3285
- driverParam: string;
3286
- notNull: true;
3287
- hasDefault: false;
3288
- isPrimaryKey: false;
3289
- isAutoincrement: false;
3290
- hasRuntimeDefault: false;
3291
- enumValues: [string, ...string[]];
3292
- baseColumn: never;
3293
- identity: undefined;
3294
- generated: undefined;
3295
- }, {}, {
3296
- length: 32;
3297
- }>;
3298
- storagePath: drizzle_orm_pg_core.PgColumn<{
3299
- name: "storage_path";
3300
- tableName: "file_versions";
3301
- dataType: "string";
3302
- columnType: "PgText";
3303
- data: string;
3304
- driverParam: string;
3305
- notNull: true;
3306
- hasDefault: false;
3307
- isPrimaryKey: false;
3308
- isAutoincrement: false;
3309
- hasRuntimeDefault: false;
3310
- enumValues: [string, ...string[]];
3311
- baseColumn: never;
3312
- identity: undefined;
3313
- generated: undefined;
3314
- }, {}, {}>;
3315
- cdnUrl: drizzle_orm_pg_core.PgColumn<{
3316
- name: "cdn_url";
3317
- tableName: "file_versions";
3318
- dataType: "string";
3319
- columnType: "PgText";
3320
- data: string;
3321
- driverParam: string;
3322
- notNull: false;
3323
- hasDefault: false;
3324
- isPrimaryKey: false;
3325
- isAutoincrement: false;
3326
- hasRuntimeDefault: false;
3327
- enumValues: [string, ...string[]];
3328
- baseColumn: never;
3329
- identity: undefined;
3330
- generated: undefined;
3331
- }, {}, {}>;
3332
- isCurrent: drizzle_orm_pg_core.PgColumn<{
3333
- name: "is_current";
3334
- tableName: "file_versions";
3335
- dataType: "boolean";
3336
- columnType: "PgBoolean";
3337
- data: boolean;
3338
- driverParam: boolean;
3339
- notNull: true;
3340
- hasDefault: true;
3341
- isPrimaryKey: false;
3342
- isAutoincrement: false;
3343
- hasRuntimeDefault: false;
3344
- enumValues: undefined;
3345
- baseColumn: never;
3346
- identity: undefined;
3347
- generated: undefined;
3348
- }, {}, {}>;
3349
- createdBy: drizzle_orm_pg_core.PgColumn<{
3350
- name: "created_by";
3351
- tableName: "file_versions";
3352
- dataType: "string";
3353
- columnType: "PgVarchar";
3354
- data: string;
3355
- driverParam: string;
3356
- notNull: true;
3357
- hasDefault: false;
3358
- isPrimaryKey: false;
3359
- isAutoincrement: false;
3360
- hasRuntimeDefault: false;
3361
- enumValues: [string, ...string[]];
3362
- baseColumn: never;
3363
- identity: undefined;
3364
- generated: undefined;
3365
- }, {}, {
3366
- length: 255;
3367
- }>;
3368
- createdAt: drizzle_orm_pg_core.PgColumn<{
3369
- name: "created_at";
3370
- tableName: "file_versions";
3371
- dataType: "date";
3372
- columnType: "PgTimestamp";
3373
- data: Date;
3374
- driverParam: string;
3375
- notNull: true;
3376
- hasDefault: true;
3377
- isPrimaryKey: false;
3378
- isAutoincrement: false;
3379
- hasRuntimeDefault: false;
3380
- enumValues: undefined;
3381
- baseColumn: never;
3382
- identity: undefined;
3383
- generated: undefined;
3384
- }, {}, {}>;
3385
- };
3386
- dialect: "pg";
3387
- }>;
3388
- /**
3389
- * 文件处理记录表 (file_processing_records)
3390
- *
3391
- * 记录文件的处理历史,包括压缩、格式转换、缩略图生成等操作。
3392
- */
3393
- declare const fileProcessingRecords: drizzle_orm_pg_core.PgTableWithColumns<{
3394
- name: "file_processing_records";
3395
- schema: undefined;
3396
- columns: {
3397
- id: drizzle_orm_pg_core.PgColumn<{
3398
- name: "id";
3399
- tableName: "file_processing_records";
3400
- dataType: "string";
3401
- columnType: "PgUUID";
3402
- data: string;
3403
- driverParam: string;
3404
- notNull: true;
3405
- hasDefault: true;
3406
- isPrimaryKey: true;
3407
- isAutoincrement: false;
3408
- hasRuntimeDefault: false;
3409
- enumValues: undefined;
3410
- baseColumn: never;
3411
- identity: undefined;
3412
- generated: undefined;
3413
- }, {}, {}>;
3414
- fileId: drizzle_orm_pg_core.PgColumn<{
3415
- name: "file_id";
3416
- tableName: "file_processing_records";
3417
- dataType: "string";
3418
- columnType: "PgUUID";
3419
- data: string;
3420
- driverParam: string;
3421
- notNull: true;
3422
- hasDefault: false;
3423
- isPrimaryKey: false;
3424
- isAutoincrement: false;
3425
- hasRuntimeDefault: false;
3426
- enumValues: undefined;
3427
- baseColumn: never;
3428
- identity: undefined;
3429
- generated: undefined;
3430
- }, {}, {}>;
3431
- processingType: drizzle_orm_pg_core.PgColumn<{
3432
- name: "processing_type";
3433
- tableName: "file_processing_records";
3434
- dataType: "string";
3435
- columnType: "PgVarchar";
3436
- data: string;
3437
- driverParam: string;
3438
- notNull: true;
3439
- hasDefault: false;
3440
- isPrimaryKey: false;
3441
- isAutoincrement: false;
3442
- hasRuntimeDefault: false;
3443
- enumValues: [string, ...string[]];
3444
- baseColumn: never;
3445
- identity: undefined;
3446
- generated: undefined;
3447
- }, {}, {
3448
- length: 50;
3449
- }>;
3450
- processorName: drizzle_orm_pg_core.PgColumn<{
3451
- name: "processor_name";
3452
- tableName: "file_processing_records";
3453
- dataType: "string";
3454
- columnType: "PgVarchar";
3455
- data: string;
3456
- driverParam: string;
3457
- notNull: true;
3458
- hasDefault: false;
3459
- isPrimaryKey: false;
3460
- isAutoincrement: false;
3461
- hasRuntimeDefault: false;
3462
- enumValues: [string, ...string[]];
3463
- baseColumn: never;
3464
- identity: undefined;
3465
- generated: undefined;
3466
- }, {}, {
3467
- length: 100;
3468
- }>;
3469
- status: drizzle_orm_pg_core.PgColumn<{
3470
- name: "status";
3471
- tableName: "file_processing_records";
3472
- dataType: "string";
3473
- columnType: "PgVarchar";
3474
- data: string;
3475
- driverParam: string;
3476
- notNull: true;
3477
- hasDefault: true;
3478
- isPrimaryKey: false;
3479
- isAutoincrement: false;
3480
- hasRuntimeDefault: false;
3481
- enumValues: [string, ...string[]];
3482
- baseColumn: never;
3483
- identity: undefined;
3484
- generated: undefined;
3485
- }, {}, {
3486
- length: 20;
3487
- }>;
3488
- parameters: drizzle_orm_pg_core.PgColumn<{
3489
- name: "parameters";
3490
- tableName: "file_processing_records";
3491
- dataType: "json";
3492
- columnType: "PgJson";
3493
- data: unknown;
3494
- driverParam: unknown;
3495
- notNull: false;
3496
- hasDefault: false;
3497
- isPrimaryKey: false;
3498
- isAutoincrement: false;
3499
- hasRuntimeDefault: false;
3500
- enumValues: undefined;
3501
- baseColumn: never;
3502
- identity: undefined;
3503
- generated: undefined;
3504
- }, {}, {}>;
3505
- result: drizzle_orm_pg_core.PgColumn<{
3506
- name: "result";
3507
- tableName: "file_processing_records";
3508
- dataType: "json";
3509
- columnType: "PgJson";
3510
- data: unknown;
3511
- driverParam: unknown;
3512
- notNull: false;
3513
- hasDefault: false;
3514
- isPrimaryKey: false;
3515
- isAutoincrement: false;
3516
- hasRuntimeDefault: false;
3517
- enumValues: undefined;
3518
- baseColumn: never;
3519
- identity: undefined;
3520
- generated: undefined;
3521
- }, {}, {}>;
3522
- outputPath: drizzle_orm_pg_core.PgColumn<{
3523
- name: "output_path";
3524
- tableName: "file_processing_records";
3525
- dataType: "string";
3526
- columnType: "PgText";
3527
- data: string;
3528
- driverParam: string;
3529
- notNull: false;
3530
- hasDefault: false;
3531
- isPrimaryKey: false;
3532
- isAutoincrement: false;
3533
- hasRuntimeDefault: false;
3534
- enumValues: [string, ...string[]];
3535
- baseColumn: never;
3536
- identity: undefined;
3537
- generated: undefined;
3538
- }, {}, {}>;
3539
- outputSize: drizzle_orm_pg_core.PgColumn<{
3540
- name: "output_size";
3541
- tableName: "file_processing_records";
3542
- dataType: "number";
3543
- columnType: "PgBigInt53";
3544
- data: number;
3545
- driverParam: string | number;
3546
- notNull: false;
3547
- hasDefault: false;
3548
- isPrimaryKey: false;
3549
- isAutoincrement: false;
3550
- hasRuntimeDefault: false;
3551
- enumValues: undefined;
3552
- baseColumn: never;
3553
- identity: undefined;
3554
- generated: undefined;
3555
- }, {}, {}>;
3556
- processingTimeMs: drizzle_orm_pg_core.PgColumn<{
3557
- name: "processing_time_ms";
3558
- tableName: "file_processing_records";
3559
- dataType: "number";
3560
- columnType: "PgInteger";
3561
- data: number;
3562
- driverParam: string | number;
3563
- notNull: false;
3564
- hasDefault: false;
3565
- isPrimaryKey: false;
3566
- isAutoincrement: false;
3567
- hasRuntimeDefault: false;
3568
- enumValues: undefined;
3569
- baseColumn: never;
3570
- identity: undefined;
3571
- generated: undefined;
3572
- }, {}, {}>;
3573
- errorMessage: drizzle_orm_pg_core.PgColumn<{
3574
- name: "error_message";
3575
- tableName: "file_processing_records";
3576
- dataType: "string";
3577
- columnType: "PgText";
3578
- data: string;
3579
- driverParam: string;
3580
- notNull: false;
3581
- hasDefault: false;
3582
- isPrimaryKey: false;
3583
- isAutoincrement: false;
3584
- hasRuntimeDefault: false;
3585
- enumValues: [string, ...string[]];
3586
- baseColumn: never;
3587
- identity: undefined;
3588
- generated: undefined;
3589
- }, {}, {}>;
3590
- retryCount: drizzle_orm_pg_core.PgColumn<{
3591
- name: "retry_count";
3592
- tableName: "file_processing_records";
3593
- dataType: "number";
3594
- columnType: "PgInteger";
3595
- data: number;
3596
- driverParam: string | number;
3597
- notNull: true;
3598
- hasDefault: true;
3599
- isPrimaryKey: false;
3600
- isAutoincrement: false;
3601
- hasRuntimeDefault: false;
3602
- enumValues: undefined;
3603
- baseColumn: never;
3604
- identity: undefined;
3605
- generated: undefined;
3606
- }, {}, {}>;
3607
- priority: drizzle_orm_pg_core.PgColumn<{
3608
- name: "priority";
3609
- tableName: "file_processing_records";
3610
- dataType: "number";
3611
- columnType: "PgInteger";
3612
- data: number;
3613
- driverParam: string | number;
3614
- notNull: true;
3615
- hasDefault: true;
3616
- isPrimaryKey: false;
3617
- isAutoincrement: false;
3618
- hasRuntimeDefault: false;
3619
- enumValues: undefined;
3620
- baseColumn: never;
3621
- identity: undefined;
3622
- generated: undefined;
3623
- }, {}, {}>;
3624
- startedAt: drizzle_orm_pg_core.PgColumn<{
3625
- name: "started_at";
3626
- tableName: "file_processing_records";
3627
- dataType: "date";
3628
- columnType: "PgTimestamp";
3629
- data: Date;
3630
- driverParam: string;
3631
- notNull: false;
3632
- hasDefault: false;
3633
- isPrimaryKey: false;
3634
- isAutoincrement: false;
3635
- hasRuntimeDefault: false;
3636
- enumValues: undefined;
3637
- baseColumn: never;
3638
- identity: undefined;
3639
- generated: undefined;
3640
- }, {}, {}>;
3641
- completedAt: drizzle_orm_pg_core.PgColumn<{
3642
- name: "completed_at";
3643
- tableName: "file_processing_records";
3644
- dataType: "date";
3645
- columnType: "PgTimestamp";
3646
- data: Date;
3647
- driverParam: string;
3648
- notNull: false;
3649
- hasDefault: false;
3650
- isPrimaryKey: false;
3651
- isAutoincrement: false;
3652
- hasRuntimeDefault: false;
3653
- enumValues: undefined;
3654
- baseColumn: never;
3655
- identity: undefined;
3656
- generated: undefined;
3657
- }, {}, {}>;
3658
- createdAt: drizzle_orm_pg_core.PgColumn<{
3659
- name: "created_at";
3660
- tableName: "file_processing_records";
3661
- dataType: "date";
3662
- columnType: "PgTimestamp";
3663
- data: Date;
3664
- driverParam: string;
3665
- notNull: true;
3666
- hasDefault: true;
3667
- isPrimaryKey: false;
3668
- isAutoincrement: false;
3669
- hasRuntimeDefault: false;
3670
- enumValues: undefined;
3671
- baseColumn: never;
3672
- identity: undefined;
3673
- generated: undefined;
3674
- }, {}, {}>;
3675
- updatedAt: drizzle_orm_pg_core.PgColumn<{
3676
- name: "updated_at";
3677
- tableName: "file_processing_records";
3678
- dataType: "date";
3679
- columnType: "PgTimestamp";
3680
- data: Date;
3681
- driverParam: string;
3682
- notNull: true;
3683
- hasDefault: true;
3684
- isPrimaryKey: false;
3685
- isAutoincrement: false;
3686
- hasRuntimeDefault: false;
3687
- enumValues: undefined;
3688
- baseColumn: never;
3689
- identity: undefined;
3690
- generated: undefined;
3691
- }, {}, {}>;
3692
- };
3693
- dialect: "pg";
3694
- }>;
3695
- /**
3696
- * 文件分享表 (file_shares)
3697
- *
3698
- * 管理文件的分享功能,支持密码保护、过期时间、访问限制等。
3699
- */
3700
- declare const fileShares: drizzle_orm_pg_core.PgTableWithColumns<{
3701
- name: "file_shares";
3702
- schema: undefined;
3703
- columns: {
3704
- id: drizzle_orm_pg_core.PgColumn<{
3705
- name: "id";
3706
- tableName: "file_shares";
3707
- dataType: "string";
3708
- columnType: "PgUUID";
3709
- data: string;
3710
- driverParam: string;
3711
- notNull: true;
3712
- hasDefault: true;
3713
- isPrimaryKey: true;
3714
- isAutoincrement: false;
3715
- hasRuntimeDefault: false;
3716
- enumValues: undefined;
3717
- baseColumn: never;
3718
- identity: undefined;
3719
- generated: undefined;
3720
- }, {}, {}>;
3721
- shareCode: drizzle_orm_pg_core.PgColumn<{
3722
- name: "share_code";
3723
- tableName: "file_shares";
3724
- dataType: "string";
3725
- columnType: "PgVarchar";
3726
- data: string;
3727
- driverParam: string;
3728
- notNull: true;
3729
- hasDefault: false;
3730
- isPrimaryKey: false;
3731
- isAutoincrement: false;
3732
- hasRuntimeDefault: false;
3733
- enumValues: [string, ...string[]];
3734
- baseColumn: never;
3735
- identity: undefined;
3736
- generated: undefined;
3737
- }, {}, {
3738
- length: 20;
3739
- }>;
3740
- fileIds: drizzle_orm_pg_core.PgColumn<{
3741
- name: "file_ids";
3742
- tableName: "file_shares";
3743
- dataType: "json";
3744
- columnType: "PgJson";
3745
- data: unknown;
3746
- driverParam: unknown;
3747
- notNull: true;
3748
- hasDefault: false;
3749
- isPrimaryKey: false;
3750
- isAutoincrement: false;
3751
- hasRuntimeDefault: false;
3752
- enumValues: undefined;
3753
- baseColumn: never;
3754
- identity: undefined;
3755
- generated: undefined;
3756
- }, {}, {}>;
3757
- title: drizzle_orm_pg_core.PgColumn<{
3758
- name: "title";
3759
- tableName: "file_shares";
3760
- dataType: "string";
3761
- columnType: "PgVarchar";
3762
- data: string;
3763
- driverParam: string;
3764
- notNull: false;
3765
- hasDefault: false;
3766
- isPrimaryKey: false;
3767
- isAutoincrement: false;
3768
- hasRuntimeDefault: false;
3769
- enumValues: [string, ...string[]];
3770
- baseColumn: never;
3771
- identity: undefined;
3772
- generated: undefined;
3773
- }, {}, {
3774
- length: 255;
3775
- }>;
3776
- description: drizzle_orm_pg_core.PgColumn<{
3777
- name: "description";
3778
- tableName: "file_shares";
3779
- dataType: "string";
3780
- columnType: "PgText";
3781
- data: string;
3782
- driverParam: string;
3783
- notNull: false;
3784
- hasDefault: false;
3785
- isPrimaryKey: false;
3786
- isAutoincrement: false;
3787
- hasRuntimeDefault: false;
3788
- enumValues: [string, ...string[]];
3789
- baseColumn: never;
3790
- identity: undefined;
3791
- generated: undefined;
3792
- }, {}, {}>;
3793
- password: drizzle_orm_pg_core.PgColumn<{
3794
- name: "password";
3795
- tableName: "file_shares";
3796
- dataType: "string";
3797
- columnType: "PgVarchar";
3798
- data: string;
3799
- driverParam: string;
3800
- notNull: false;
3801
- hasDefault: false;
3802
- isPrimaryKey: false;
3803
- isAutoincrement: false;
3804
- hasRuntimeDefault: false;
3805
- enumValues: [string, ...string[]];
3806
- baseColumn: never;
3807
- identity: undefined;
3808
- generated: undefined;
3809
- }, {}, {
3810
- length: 100;
3811
- }>;
3812
- permission: drizzle_orm_pg_core.PgColumn<{
3813
- name: "permission";
3814
- tableName: "file_shares";
3815
- dataType: "string";
3816
- columnType: "PgVarchar";
3817
- data: string;
3818
- driverParam: string;
3819
- notNull: true;
3820
- hasDefault: true;
3821
- isPrimaryKey: false;
3822
- isAutoincrement: false;
3823
- hasRuntimeDefault: false;
3824
- enumValues: [string, ...string[]];
3825
- baseColumn: never;
3826
- identity: undefined;
3827
- generated: undefined;
3828
- }, {}, {
3829
- length: 20;
3830
- }>;
3831
- maxDownloads: drizzle_orm_pg_core.PgColumn<{
3832
- name: "max_downloads";
3833
- tableName: "file_shares";
3834
- dataType: "number";
3835
- columnType: "PgInteger";
3836
- data: number;
3837
- driverParam: string | number;
3838
- notNull: false;
3839
- hasDefault: false;
3840
- isPrimaryKey: false;
3841
- isAutoincrement: false;
3842
- hasRuntimeDefault: false;
3843
- enumValues: undefined;
3844
- baseColumn: never;
3845
- identity: undefined;
3846
- generated: undefined;
3847
- }, {}, {}>;
3848
- downloadCount: drizzle_orm_pg_core.PgColumn<{
3849
- name: "download_count";
3850
- tableName: "file_shares";
3851
- dataType: "number";
3852
- columnType: "PgInteger";
3853
- data: number;
3854
- driverParam: string | number;
3855
- notNull: true;
3856
- hasDefault: true;
3857
- isPrimaryKey: false;
3858
- isAutoincrement: false;
3859
- hasRuntimeDefault: false;
3860
- enumValues: undefined;
3861
- baseColumn: never;
3862
- identity: undefined;
3863
- generated: undefined;
3864
- }, {}, {}>;
3865
- maxAccess: drizzle_orm_pg_core.PgColumn<{
3866
- name: "max_access";
3867
- tableName: "file_shares";
3868
- dataType: "number";
3869
- columnType: "PgInteger";
3870
- data: number;
3871
- driverParam: string | number;
3872
- notNull: false;
3873
- hasDefault: false;
3874
- isPrimaryKey: false;
3875
- isAutoincrement: false;
3876
- hasRuntimeDefault: false;
3877
- enumValues: undefined;
3878
- baseColumn: never;
3879
- identity: undefined;
3880
- generated: undefined;
3881
- }, {}, {}>;
3882
- accessCount: drizzle_orm_pg_core.PgColumn<{
3883
- name: "access_count";
3884
- tableName: "file_shares";
3885
- dataType: "number";
3886
- columnType: "PgInteger";
3887
- data: number;
3888
- driverParam: string | number;
3889
- notNull: true;
3890
- hasDefault: true;
3891
- isPrimaryKey: false;
3892
- isAutoincrement: false;
3893
- hasRuntimeDefault: false;
3894
- enumValues: undefined;
3895
- baseColumn: never;
3896
- identity: undefined;
3897
- generated: undefined;
3898
- }, {}, {}>;
3899
- isActive: drizzle_orm_pg_core.PgColumn<{
3900
- name: "is_active";
3901
- tableName: "file_shares";
3902
- dataType: "boolean";
3903
- columnType: "PgBoolean";
3904
- data: boolean;
3905
- driverParam: boolean;
3906
- notNull: true;
3907
- hasDefault: true;
3908
- isPrimaryKey: false;
3909
- isAutoincrement: false;
3910
- hasRuntimeDefault: false;
3911
- enumValues: undefined;
3912
- baseColumn: never;
3913
- identity: undefined;
3914
- generated: undefined;
3915
- }, {}, {}>;
3916
- expiresAt: drizzle_orm_pg_core.PgColumn<{
3917
- name: "expires_at";
3918
- tableName: "file_shares";
3919
- dataType: "date";
3920
- columnType: "PgTimestamp";
3921
- data: Date;
3922
- driverParam: string;
3923
- notNull: false;
3924
- hasDefault: false;
3925
- isPrimaryKey: false;
3926
- isAutoincrement: false;
3927
- hasRuntimeDefault: false;
3928
- enumValues: undefined;
3929
- baseColumn: never;
3930
- identity: undefined;
3931
- generated: undefined;
3932
- }, {}, {}>;
3933
- createdBy: drizzle_orm_pg_core.PgColumn<{
3934
- name: "created_by";
3935
- tableName: "file_shares";
3936
- dataType: "string";
3937
- columnType: "PgVarchar";
3938
- data: string;
3939
- driverParam: string;
3940
- notNull: true;
3941
- hasDefault: false;
3942
- isPrimaryKey: false;
3943
- isAutoincrement: false;
3944
- hasRuntimeDefault: false;
3945
- enumValues: [string, ...string[]];
3946
- baseColumn: never;
3947
- identity: undefined;
3948
- generated: undefined;
3949
- }, {}, {
3950
- length: 255;
3951
- }>;
3952
- createdAt: drizzle_orm_pg_core.PgColumn<{
3953
- name: "created_at";
3954
- tableName: "file_shares";
3955
- dataType: "date";
3956
- columnType: "PgTimestamp";
3957
- data: Date;
3958
- driverParam: string;
3959
- notNull: true;
3960
- hasDefault: true;
3961
- isPrimaryKey: false;
3962
- isAutoincrement: false;
3963
- hasRuntimeDefault: false;
3964
- enumValues: undefined;
3965
- baseColumn: never;
3966
- identity: undefined;
3967
- generated: undefined;
3968
- }, {}, {}>;
3969
- updatedAt: drizzle_orm_pg_core.PgColumn<{
3970
- name: "updated_at";
3971
- tableName: "file_shares";
3972
- dataType: "date";
3973
- columnType: "PgTimestamp";
3974
- data: Date;
3975
- driverParam: string;
3976
- notNull: true;
3977
- hasDefault: true;
3978
- isPrimaryKey: false;
3979
- isAutoincrement: false;
3980
- hasRuntimeDefault: false;
3981
- enumValues: undefined;
3982
- baseColumn: never;
3983
- identity: undefined;
3984
- generated: undefined;
3985
- }, {}, {}>;
3986
- };
3987
- dialect: "pg";
3988
- }>;
3989
- /**
3990
- * 文件访问日志表 (file_access_logs)
3991
- *
3992
- * 记录文件的访问历史,用于统计分析和安全审计。
3993
- */
3994
- declare const fileAccessLogs: drizzle_orm_pg_core.PgTableWithColumns<{
3995
- name: "file_access_logs";
3996
- schema: undefined;
3997
- columns: {
3998
- id: drizzle_orm_pg_core.PgColumn<{
3999
- name: "id";
4000
- tableName: "file_access_logs";
4001
- dataType: "string";
4002
- columnType: "PgUUID";
4003
- data: string;
4004
- driverParam: string;
4005
- notNull: true;
4006
- hasDefault: true;
4007
- isPrimaryKey: true;
4008
- isAutoincrement: false;
4009
- hasRuntimeDefault: false;
4010
- enumValues: undefined;
4011
- baseColumn: never;
4012
- identity: undefined;
4013
- generated: undefined;
4014
- }, {}, {}>;
4015
- fileId: drizzle_orm_pg_core.PgColumn<{
4016
- name: "file_id";
4017
- tableName: "file_access_logs";
4018
- dataType: "string";
4019
- columnType: "PgUUID";
4020
- data: string;
4021
- driverParam: string;
4022
- notNull: false;
4023
- hasDefault: false;
4024
- isPrimaryKey: false;
4025
- isAutoincrement: false;
4026
- hasRuntimeDefault: false;
4027
- enumValues: undefined;
4028
- baseColumn: never;
4029
- identity: undefined;
4030
- generated: undefined;
4031
- }, {}, {}>;
4032
- shareId: drizzle_orm_pg_core.PgColumn<{
4033
- name: "share_id";
4034
- tableName: "file_access_logs";
4035
- dataType: "string";
4036
- columnType: "PgUUID";
4037
- data: string;
4038
- driverParam: string;
4039
- notNull: false;
4040
- hasDefault: false;
4041
- isPrimaryKey: false;
4042
- isAutoincrement: false;
4043
- hasRuntimeDefault: false;
4044
- enumValues: undefined;
4045
- baseColumn: never;
4046
- identity: undefined;
4047
- generated: undefined;
4048
- }, {}, {}>;
4049
- accessType: drizzle_orm_pg_core.PgColumn<{
4050
- name: "access_type";
4051
- tableName: "file_access_logs";
4052
- dataType: "string";
4053
- columnType: "PgVarchar";
4054
- data: string;
4055
- driverParam: string;
4056
- notNull: true;
4057
- hasDefault: false;
4058
- isPrimaryKey: false;
4059
- isAutoincrement: false;
4060
- hasRuntimeDefault: false;
4061
- enumValues: [string, ...string[]];
4062
- baseColumn: never;
4063
- identity: undefined;
4064
- generated: undefined;
4065
- }, {}, {
4066
- length: 20;
4067
- }>;
4068
- userId: drizzle_orm_pg_core.PgColumn<{
4069
- name: "user_id";
4070
- tableName: "file_access_logs";
4071
- dataType: "string";
4072
- columnType: "PgVarchar";
4073
- data: string;
4074
- driverParam: string;
4075
- notNull: false;
4076
- hasDefault: false;
4077
- isPrimaryKey: false;
4078
- isAutoincrement: false;
4079
- hasRuntimeDefault: false;
4080
- enumValues: [string, ...string[]];
4081
- baseColumn: never;
4082
- identity: undefined;
4083
- generated: undefined;
4084
- }, {}, {
4085
- length: 255;
4086
- }>;
4087
- ipAddress: drizzle_orm_pg_core.PgColumn<{
4088
- name: "ip_address";
4089
- tableName: "file_access_logs";
4090
- dataType: "string";
4091
- columnType: "PgVarchar";
4092
- data: string;
4093
- driverParam: string;
4094
- notNull: false;
4095
- hasDefault: false;
4096
- isPrimaryKey: false;
4097
- isAutoincrement: false;
4098
- hasRuntimeDefault: false;
4099
- enumValues: [string, ...string[]];
4100
- baseColumn: never;
4101
- identity: undefined;
4102
- generated: undefined;
4103
- }, {}, {
4104
- length: 45;
4105
- }>;
4106
- userAgent: drizzle_orm_pg_core.PgColumn<{
4107
- name: "user_agent";
4108
- tableName: "file_access_logs";
4109
- dataType: "string";
4110
- columnType: "PgText";
4111
- data: string;
4112
- driverParam: string;
4113
- notNull: false;
4114
- hasDefault: false;
4115
- isPrimaryKey: false;
4116
- isAutoincrement: false;
4117
- hasRuntimeDefault: false;
4118
- enumValues: [string, ...string[]];
4119
- baseColumn: never;
4120
- identity: undefined;
4121
- generated: undefined;
4122
- }, {}, {}>;
4123
- referer: drizzle_orm_pg_core.PgColumn<{
4124
- name: "referer";
4125
- tableName: "file_access_logs";
4126
- dataType: "string";
4127
- columnType: "PgText";
4128
- data: string;
4129
- driverParam: string;
4130
- notNull: false;
4131
- hasDefault: false;
4132
- isPrimaryKey: false;
4133
- isAutoincrement: false;
4134
- hasRuntimeDefault: false;
4135
- enumValues: [string, ...string[]];
4136
- baseColumn: never;
4137
- identity: undefined;
4138
- generated: undefined;
4139
- }, {}, {}>;
4140
- statusCode: drizzle_orm_pg_core.PgColumn<{
4141
- name: "status_code";
4142
- tableName: "file_access_logs";
4143
- dataType: "number";
4144
- columnType: "PgInteger";
4145
- data: number;
4146
- driverParam: string | number;
4147
- notNull: false;
4148
- hasDefault: false;
4149
- isPrimaryKey: false;
4150
- isAutoincrement: false;
4151
- hasRuntimeDefault: false;
4152
- enumValues: undefined;
4153
- baseColumn: never;
4154
- identity: undefined;
4155
- generated: undefined;
4156
- }, {}, {}>;
4157
- bytesTransferred: drizzle_orm_pg_core.PgColumn<{
4158
- name: "bytes_transferred";
4159
- tableName: "file_access_logs";
4160
- dataType: "number";
4161
- columnType: "PgBigInt53";
4162
- data: number;
4163
- driverParam: string | number;
4164
- notNull: false;
4165
- hasDefault: false;
4166
- isPrimaryKey: false;
4167
- isAutoincrement: false;
4168
- hasRuntimeDefault: false;
4169
- enumValues: undefined;
4170
- baseColumn: never;
4171
- identity: undefined;
4172
- generated: undefined;
4173
- }, {}, {}>;
4174
- responseTimeMs: drizzle_orm_pg_core.PgColumn<{
4175
- name: "response_time_ms";
4176
- tableName: "file_access_logs";
4177
- dataType: "number";
4178
- columnType: "PgInteger";
4179
- data: number;
4180
- driverParam: string | number;
4181
- notNull: false;
4182
- hasDefault: false;
4183
- isPrimaryKey: false;
4184
- isAutoincrement: false;
4185
- hasRuntimeDefault: false;
4186
- enumValues: undefined;
4187
- baseColumn: never;
4188
- identity: undefined;
4189
- generated: undefined;
4190
- }, {}, {}>;
4191
- accessedAt: drizzle_orm_pg_core.PgColumn<{
4192
- name: "accessed_at";
4193
- tableName: "file_access_logs";
4194
- dataType: "date";
4195
- columnType: "PgTimestamp";
4196
- data: Date;
4197
- driverParam: string;
4198
- notNull: true;
4199
- hasDefault: true;
4200
- isPrimaryKey: false;
4201
- isAutoincrement: false;
4202
- hasRuntimeDefault: false;
4203
- enumValues: undefined;
4204
- baseColumn: never;
4205
- identity: undefined;
4206
- generated: undefined;
4207
- }, {}, {}>;
4208
- };
4209
- dialect: "pg";
4210
- }>;
4211
- /**
4212
- * 文件缩略图表 (file_thumbnails)
4213
- *
4214
- * 存储文件的缩略图信息,支持多种尺寸和格式。
4215
- */
4216
- declare const fileThumbnails: drizzle_orm_pg_core.PgTableWithColumns<{
4217
- name: "file_thumbnails";
4218
- schema: undefined;
4219
- columns: {
4220
- id: drizzle_orm_pg_core.PgColumn<{
4221
- name: "id";
4222
- tableName: "file_thumbnails";
4223
- dataType: "string";
4224
- columnType: "PgUUID";
4225
- data: string;
4226
- driverParam: string;
4227
- notNull: true;
4228
- hasDefault: true;
4229
- isPrimaryKey: true;
4230
- isAutoincrement: false;
4231
- hasRuntimeDefault: false;
4232
- enumValues: undefined;
4233
- baseColumn: never;
4234
- identity: undefined;
4235
- generated: undefined;
4236
- }, {}, {}>;
4237
- fileId: drizzle_orm_pg_core.PgColumn<{
4238
- name: "file_id";
4239
- tableName: "file_thumbnails";
4240
- dataType: "string";
4241
- columnType: "PgUUID";
4242
- data: string;
4243
- driverParam: string;
4244
- notNull: true;
4245
- hasDefault: false;
4246
- isPrimaryKey: false;
4247
- isAutoincrement: false;
4248
- hasRuntimeDefault: false;
4249
- enumValues: undefined;
4250
- baseColumn: never;
4251
- identity: undefined;
4252
- generated: undefined;
4253
- }, {}, {}>;
4254
- type: drizzle_orm_pg_core.PgColumn<{
4255
- name: "type";
4256
- tableName: "file_thumbnails";
4257
- dataType: "string";
4258
- columnType: "PgVarchar";
4259
- data: string;
4260
- driverParam: string;
4261
- notNull: true;
4262
- hasDefault: false;
4263
- isPrimaryKey: false;
4264
- isAutoincrement: false;
4265
- hasRuntimeDefault: false;
4266
- enumValues: [string, ...string[]];
4267
- baseColumn: never;
4268
- identity: undefined;
4269
- generated: undefined;
4270
- }, {}, {
4271
- length: 50;
4272
- }>;
4273
- size: drizzle_orm_pg_core.PgColumn<{
4274
- name: "size";
4275
- tableName: "file_thumbnails";
4276
- dataType: "string";
4277
- columnType: "PgVarchar";
4278
- data: string;
4279
- driverParam: string;
4280
- notNull: true;
4281
- hasDefault: false;
4282
- isPrimaryKey: false;
4283
- isAutoincrement: false;
4284
- hasRuntimeDefault: false;
4285
- enumValues: [string, ...string[]];
4286
- baseColumn: never;
4287
- identity: undefined;
4288
- generated: undefined;
4289
- }, {}, {
4290
- length: 20;
4291
- }>;
4292
- width: drizzle_orm_pg_core.PgColumn<{
4293
- name: "width";
4294
- tableName: "file_thumbnails";
4295
- dataType: "number";
4296
- columnType: "PgInteger";
4297
- data: number;
4298
- driverParam: string | number;
4299
- notNull: false;
4300
- hasDefault: false;
4301
- isPrimaryKey: false;
4302
- isAutoincrement: false;
4303
- hasRuntimeDefault: false;
4304
- enumValues: undefined;
4305
- baseColumn: never;
4306
- identity: undefined;
4307
- generated: undefined;
4308
- }, {}, {}>;
4309
- height: drizzle_orm_pg_core.PgColumn<{
4310
- name: "height";
4311
- tableName: "file_thumbnails";
4312
- dataType: "number";
4313
- columnType: "PgInteger";
4314
- data: number;
4315
- driverParam: string | number;
4316
- notNull: false;
4317
- hasDefault: false;
4318
- isPrimaryKey: false;
4319
- isAutoincrement: false;
4320
- hasRuntimeDefault: false;
4321
- enumValues: undefined;
4322
- baseColumn: never;
4323
- identity: undefined;
4324
- generated: undefined;
4325
- }, {}, {}>;
4326
- format: drizzle_orm_pg_core.PgColumn<{
4327
- name: "format";
4328
- tableName: "file_thumbnails";
4329
- dataType: "string";
4330
- columnType: "PgVarchar";
4331
- data: string;
4332
- driverParam: string;
4333
- notNull: true;
4334
- hasDefault: false;
4335
- isPrimaryKey: false;
4336
- isAutoincrement: false;
4337
- hasRuntimeDefault: false;
4338
- enumValues: [string, ...string[]];
4339
- baseColumn: never;
4340
- identity: undefined;
4341
- generated: undefined;
4342
- }, {}, {
4343
- length: 10;
4344
- }>;
4345
- fileSize: drizzle_orm_pg_core.PgColumn<{
4346
- name: "file_size";
4347
- tableName: "file_thumbnails";
4348
- dataType: "number";
4349
- columnType: "PgInteger";
4350
- data: number;
4351
- driverParam: string | number;
4352
- notNull: true;
4353
- hasDefault: false;
4354
- isPrimaryKey: false;
4355
- isAutoincrement: false;
4356
- hasRuntimeDefault: false;
4357
- enumValues: undefined;
4358
- baseColumn: never;
4359
- identity: undefined;
4360
- generated: undefined;
4361
- }, {}, {}>;
4362
- storagePath: drizzle_orm_pg_core.PgColumn<{
4363
- name: "storage_path";
4364
- tableName: "file_thumbnails";
4365
- dataType: "string";
4366
- columnType: "PgText";
4367
- data: string;
4368
- driverParam: string;
4369
- notNull: true;
4370
- hasDefault: false;
4371
- isPrimaryKey: false;
4372
- isAutoincrement: false;
4373
- hasRuntimeDefault: false;
4374
- enumValues: [string, ...string[]];
4375
- baseColumn: never;
4376
- identity: undefined;
4377
- generated: undefined;
4378
- }, {}, {}>;
4379
- cdnUrl: drizzle_orm_pg_core.PgColumn<{
4380
- name: "cdn_url";
4381
- tableName: "file_thumbnails";
4382
- dataType: "string";
4383
- columnType: "PgText";
4384
- data: string;
4385
- driverParam: string;
4386
- notNull: false;
4387
- hasDefault: false;
4388
- isPrimaryKey: false;
4389
- isAutoincrement: false;
4390
- hasRuntimeDefault: false;
4391
- enumValues: [string, ...string[]];
4392
- baseColumn: never;
4393
- identity: undefined;
4394
- generated: undefined;
4395
- }, {}, {}>;
4396
- quality: drizzle_orm_pg_core.PgColumn<{
4397
- name: "quality";
4398
- tableName: "file_thumbnails";
4399
- dataType: "number";
4400
- columnType: "PgInteger";
4401
- data: number;
4402
- driverParam: string | number;
4403
- notNull: false;
4404
- hasDefault: true;
4405
- isPrimaryKey: false;
4406
- isAutoincrement: false;
4407
- hasRuntimeDefault: false;
4408
- enumValues: undefined;
4409
- baseColumn: never;
4410
- identity: undefined;
4411
- generated: undefined;
4412
- }, {}, {}>;
4413
- isGenerated: drizzle_orm_pg_core.PgColumn<{
4414
- name: "is_generated";
4415
- tableName: "file_thumbnails";
4416
- dataType: "boolean";
4417
- columnType: "PgBoolean";
4418
- data: boolean;
4419
- driverParam: boolean;
4420
- notNull: true;
4421
- hasDefault: true;
4422
- isPrimaryKey: false;
4423
- isAutoincrement: false;
4424
- hasRuntimeDefault: false;
4425
- enumValues: undefined;
4426
- baseColumn: never;
4427
- identity: undefined;
4428
- generated: undefined;
4429
- }, {}, {}>;
4430
- generatedAt: drizzle_orm_pg_core.PgColumn<{
4431
- name: "generated_at";
4432
- tableName: "file_thumbnails";
4433
- dataType: "date";
4434
- columnType: "PgTimestamp";
4435
- data: Date;
4436
- driverParam: string;
4437
- notNull: false;
4438
- hasDefault: false;
4439
- isPrimaryKey: false;
4440
- isAutoincrement: false;
4441
- hasRuntimeDefault: false;
4442
- enumValues: undefined;
4443
- baseColumn: never;
4444
- identity: undefined;
4445
- generated: undefined;
4446
- }, {}, {}>;
4447
- createdAt: drizzle_orm_pg_core.PgColumn<{
4448
- name: "created_at";
4449
- tableName: "file_thumbnails";
4450
- dataType: "date";
4451
- columnType: "PgTimestamp";
4452
- data: Date;
4453
- driverParam: string;
4454
- notNull: true;
4455
- hasDefault: true;
4456
- isPrimaryKey: false;
4457
- isAutoincrement: false;
4458
- hasRuntimeDefault: false;
4459
- enumValues: undefined;
4460
- baseColumn: never;
4461
- identity: undefined;
4462
- generated: undefined;
4463
- }, {}, {}>;
4464
- };
4465
- dialect: "pg";
4466
- }>;
4467
- declare const fileStorageProvidersRelations: drizzle_orm.Relations<"file_storage_providers", {
4468
- files: drizzle_orm.Many<"file_metadata">;
4469
- }>;
4470
- declare const fileFoldersRelations: drizzle_orm.Relations<"file_folders", {
4471
- parent: drizzle_orm.One<"file_folders", false>;
4472
- children: drizzle_orm.Many<"file_folders">;
4473
- files: drizzle_orm.Many<"file_metadata">;
4474
- }>;
4475
- declare const fileMetadataRelations: drizzle_orm.Relations<"file_metadata", {
4476
- storageProvider: drizzle_orm.One<"file_storage_providers", true>;
4477
- folder: drizzle_orm.One<"file_folders", false>;
4478
- versions: drizzle_orm.Many<"file_versions">;
4479
- processingRecords: drizzle_orm.Many<"file_processing_records">;
4480
- accessLogs: drizzle_orm.Many<"file_access_logs">;
4481
- thumbnails: drizzle_orm.Many<"file_thumbnails">;
4482
- }>;
4483
- declare const fileVersionsRelations: drizzle_orm.Relations<"file_versions", {
4484
- file: drizzle_orm.One<"file_metadata", true>;
4485
- }>;
4486
- declare const fileProcessingRecordsRelations: drizzle_orm.Relations<"file_processing_records", {
4487
- file: drizzle_orm.One<"file_metadata", true>;
4488
- }>;
4489
- declare const fileSharesRelations: drizzle_orm.Relations<"file_shares", {
4490
- accessLogs: drizzle_orm.Many<"file_access_logs">;
4491
- }>;
4492
- declare const fileAccessLogsRelations: drizzle_orm.Relations<"file_access_logs", {
4493
- file: drizzle_orm.One<"file_metadata", false>;
4494
- share: drizzle_orm.One<"file_shares", false>;
4495
- }>;
4496
- declare const fileThumbnailsRelations: drizzle_orm.Relations<"file_thumbnails", {
4497
- file: drizzle_orm.One<"file_metadata", true>;
4498
- }>;
4499
- type FileStorageProvider = typeof fileStorageProviders.$inferSelect;
4500
- type NewFileStorageProvider = typeof fileStorageProviders.$inferInsert;
4501
- type FileFolder = typeof fileFolders.$inferSelect;
4502
- type NewFileFolder = typeof fileFolders.$inferInsert;
4503
- type FileMetadata = typeof fileMetadata.$inferSelect;
4504
- type NewFileMetadata = typeof fileMetadata.$inferInsert;
4505
- type FileVersion = typeof fileVersions.$inferSelect;
4506
- type NewFileVersion = typeof fileVersions.$inferInsert;
4507
- type FileProcessingRecord = typeof fileProcessingRecords.$inferSelect;
4508
- type NewFileProcessingRecord = typeof fileProcessingRecords.$inferInsert;
4509
- type FileShare = typeof fileShares.$inferSelect;
4510
- type NewFileShare = typeof fileShares.$inferInsert;
4511
- type FileAccessLog = typeof fileAccessLogs.$inferSelect;
4512
- type NewFileAccessLog = typeof fileAccessLogs.$inferInsert;
4513
- type FileThumbnail = typeof fileThumbnails.$inferSelect;
4514
- type NewFileThumbnail = typeof fileThumbnails.$inferInsert;
4515
-
4516
- export { AliyunCDNConfig, AliyunCDNProvider, AliyunOSSConfig, AliyunOSSProvider, ApiError, ApiErrorCode, type ApiResponse, AudioProcessor, CDNConfig, CDNResult, CDNType, CacheManager, CacheStrategyType$1 as CacheStrategyType, CdnCacheStrategy, ConfigValidationError, DEFAULT_ALLOWED_MIME_TYPES, DEFAULT_CACHE_CONFIG, DEFAULT_FILE_SERVICE_CONFIG, DEFAULT_MAX_FILE_SIZE, DEFAULT_OSS_CONFIG_KEYS, type DrizzleDb, type DrizzleRepositoryConfig, type DrizzleTable, ErrorHttpStatusMap, ErrorMessages, type FieldMapping, type FileAccessLog, type FileFolder, type FileInfo, type FileListResponse, type FileMetadata, type FileProcessParams, type FileProcessingRecord, type FileQueryParams, type FileServiceFactoryOptions, type FileShare, type FileStats, type FileStorageProvider, type FileThumbnail, type FileUpdateParams, type FileUploadParams, type FileVersion, type FolderCreateParams, type FolderInfo, type FolderUpdateParams, ICDNProvider, type IConfigService, IFileMetadataRepository, IFileProcessor, IStorageProvider, ImageProcessor, LocalStorageConfig, LocalStorageProvider, type NewFileAccessLog, type NewFileFolder, type NewFileMetadata, type NewFileProcessingRecord, type NewFileShare, type NewFileStorageProvider, type NewFileThumbnail, type NewFileVersion, type OSSConfigKeyMapping, type PaginationParams, PerformanceMonitor, ProcessingOptions, ProcessingQueue, ProcessingResult, type ProcessingStatus, ProcessorType, type ShareAccessParams, type ShareCreateParams, type ShareInfo, type SingletonFactory, StorageConfig, StorageResult, StorageType, UniversalFileService, UniversalFileServiceConfig, UploadFileInfo, type UploadResponse, VideoProcessor, cdnCacheStrategy, createAliyunOSSPreset, createDocumentServicePreset, createDrizzleRepository, createFileServiceConfig, createFileServiceFromEnv, createFileServiceWithFactory, createImageServicePreset, createLocalDevPreset, createSingleton, createSmartPreset, createUniversalFileService, createVideoServicePreset, fileAccessLogs, fileAccessLogsRelations, fileFolders, fileFoldersRelations, fileMetadata, fileMetadataRelations, fileProcessingRecords, fileProcessingRecordsRelations, fileShares, fileSharesRelations, fileStorageProviders, fileStorageProvidersRelations, fileThumbnails, fileThumbnailsRelations, fileVersions, fileVersionsRelations, getDefaultLocalStorage, getMimeType, getRequiredEnvVars, loadCDNConfigFromEnv, loadConfigFromEnv, loadConfigWithFallback, loadOSSConfigFromEnv, loadOSSConfigFromService, validateEnvironment, validateServiceConfig, validateStorageConfig };