准备迁移1
This commit is contained in:
@@ -79,6 +79,13 @@ export function validateRuntimeConfig(
|
||||
min: 1,
|
||||
max: 100,
|
||||
})
|
||||
const storageMode = normalizeStorageMode(config.storage?.mode)
|
||||
if (!storageMode) {
|
||||
issues.push({
|
||||
path: 'storage.mode',
|
||||
message: '仅支持 minio、dual 或 oss',
|
||||
})
|
||||
}
|
||||
requireInteger(issues, 'orders.tokenTtlHours', config.orders?.tokenTtlHours, { min: 0 })
|
||||
requireInteger(issues, 'admin.sessionTtlHours', config.admin?.sessionTtlHours, { min: 1 })
|
||||
requireInteger(
|
||||
@@ -116,17 +123,17 @@ export function validateRuntimeConfig(
|
||||
|
||||
validateOptionalHttpUrl(issues, 'orders.claimBaseUrl', config.orders?.claimBaseUrl)
|
||||
validateOptionalStorageEndpoint(issues, 'storage.endpoint', config.storage?.endpoint)
|
||||
validateOptionalStorageEndpoint(issues, 'storage.oss.endpoint', config.storage?.oss?.endpoint)
|
||||
validateRequiredString(issues, 'data.root', config.data?.root)
|
||||
|
||||
if (productionLike) {
|
||||
validateRequiredString(issues, 'database.url', config.database?.url)
|
||||
validateRequiredString(issues, 'storage.endpoint', config.storage?.endpoint)
|
||||
validateOptionalStorageEndpoint(issues, 'storage.endpoint', config.storage?.endpoint)
|
||||
validateRequiredString(issues, 'storage.bucket', config.storage?.bucket)
|
||||
validateRequiredString(issues, 'storage.accessKeyId', config.storage?.accessKeyId)
|
||||
validateSecret(issues, 'storage.secretAccessKey', config.storage?.secretAccessKey, {
|
||||
minLength: 8,
|
||||
})
|
||||
if (storageMode === 'minio' || storageMode === 'dual') {
|
||||
validateStorageCredentials(issues, 'storage', config.storage)
|
||||
}
|
||||
if (storageMode === 'oss' || storageMode === 'dual') {
|
||||
validateStorageCredentials(issues, 'storage.oss', config.storage?.oss)
|
||||
}
|
||||
validateRequiredHttpUrl(issues, 'orders.claimBaseUrl', config.orders?.claimBaseUrl)
|
||||
validateSecret(issues, 'admin.sessionSecret', config.admin?.sessionSecret, { minLength: 32 })
|
||||
validateAdminDefaultUsers(issues, config.admin?.defaultUsers)
|
||||
@@ -135,6 +142,35 @@ export function validateRuntimeConfig(
|
||||
return issues
|
||||
}
|
||||
|
||||
function normalizeStorageMode(value: unknown): 'minio' | 'dual' | 'oss' | '' {
|
||||
const mode = String(value || 'minio')
|
||||
.trim()
|
||||
.toLowerCase()
|
||||
return mode === 'minio' || mode === 'dual' || mode === 'oss' ? mode : ''
|
||||
}
|
||||
|
||||
function validateStorageCredentials(
|
||||
issues: RuntimeConfigValidationIssue[],
|
||||
configPath: string,
|
||||
storage:
|
||||
| {
|
||||
endpoint?: unknown
|
||||
bucket?: unknown
|
||||
accessKeyId?: unknown
|
||||
secretAccessKey?: unknown
|
||||
}
|
||||
| null
|
||||
| undefined,
|
||||
): void {
|
||||
validateRequiredString(issues, `${configPath}.endpoint`, storage?.endpoint)
|
||||
validateOptionalStorageEndpoint(issues, `${configPath}.endpoint`, storage?.endpoint)
|
||||
validateRequiredString(issues, `${configPath}.bucket`, storage?.bucket)
|
||||
validateRequiredString(issues, `${configPath}.accessKeyId`, storage?.accessKeyId)
|
||||
validateSecret(issues, `${configPath}.secretAccessKey`, storage?.secretAccessKey, {
|
||||
minLength: 8,
|
||||
})
|
||||
}
|
||||
|
||||
export function isProductionLike(env: RuntimeEnvironment = process.env): boolean {
|
||||
return env.NODE_ENV === 'production'
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user