ai-chatbot/lib/storage/migration-config.ts
Your Name 57b784f542
Some checks failed
Lint / build (20) (push) Has been cancelled
Playwright Tests / test (push) Has been cancelled
add switch for preferred aliyun oss uploads
2026-03-17 23:01:17 +08:00

64 lines
2.0 KiB
TypeScript

export const OSS_MIGRATION_CONFIG_KEY = "oss_image_migration_config";
export type OssImageMigrationConfig = {
enabled: boolean;
preferAliyunForUploads: boolean;
sourceStorageConfigId: string;
targetStorageConfigId: string;
migrateAfterHours: number;
cleanupAfterHours: number;
batchSize: number;
};
export const defaultOssImageMigrationConfig: OssImageMigrationConfig = {
enabled: true,
preferAliyunForUploads: true,
sourceStorageConfigId: "",
targetStorageConfigId: "",
migrateAfterHours: 48,
cleanupAfterHours: 72,
batchSize: 20,
};
export function normalizeOssImageMigrationConfig(
value: unknown
): OssImageMigrationConfig {
const raw =
value && typeof value === "object" && !Array.isArray(value)
? (value as Record<string, unknown>)
: {};
const migrateAfterHours = Number(raw.migrateAfterHours);
const cleanupAfterHours = Number(raw.cleanupAfterHours);
const batchSize = Number(raw.batchSize);
const normalizedMigrateAfterHours =
Number.isFinite(migrateAfterHours) && migrateAfterHours >= 1
? Math.min(720, Math.round(migrateAfterHours))
: defaultOssImageMigrationConfig.migrateAfterHours;
const normalizedCleanupAfterHours =
Number.isFinite(cleanupAfterHours) &&
cleanupAfterHours > normalizedMigrateAfterHours
? Math.min(1440, Math.round(cleanupAfterHours))
: Math.max(
defaultOssImageMigrationConfig.cleanupAfterHours,
normalizedMigrateAfterHours + 1
);
const normalizedBatchSize =
Number.isFinite(batchSize) && batchSize >= 1
? Math.min(100, Math.round(batchSize))
: defaultOssImageMigrationConfig.batchSize;
return {
enabled: raw.enabled !== false,
preferAliyunForUploads: raw.preferAliyunForUploads !== false,
sourceStorageConfigId: String(raw.sourceStorageConfigId || "").trim(),
targetStorageConfigId: String(raw.targetStorageConfigId || "").trim(),
migrateAfterHours: normalizedMigrateAfterHours,
cleanupAfterHours: normalizedCleanupAfterHours,
batchSize: normalizedBatchSize,
};
}