feat: добавить базовые сервисы image-platform
- добавлены backend, admin, gateway и worker skeleton - добавлены Drizzle schema, database package и initial migration - добавлены shared packages для RabbitMQ topology и S3 helpers - обновлены dev-инфраструктура, env example, scripts и dependencies - обновлена документация под versioned image URLs и read-through flow
This commit is contained in:
31
packages/storage/src/config.ts
Normal file
31
packages/storage/src/config.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
export type StorageConfig = {
|
||||
accessKeyId?: string
|
||||
bucket: string
|
||||
endpoint?: string
|
||||
forcePathStyle: boolean
|
||||
region: string
|
||||
secretAccessKey?: string
|
||||
}
|
||||
|
||||
export function loadStorageConfigFromEnv(env: NodeJS.ProcessEnv = process.env): StorageConfig {
|
||||
return {
|
||||
accessKeyId: normalizeOptionalString(env.S3_ACCESS_KEY_ID),
|
||||
bucket: env.S3_BUCKET ?? "image-platform",
|
||||
endpoint: normalizeOptionalString(env.S3_ENDPOINT),
|
||||
forcePathStyle: parseBoolean(env.S3_FORCE_PATH_STYLE, true),
|
||||
region: env.S3_REGION ?? "us-east-1",
|
||||
secretAccessKey: normalizeOptionalString(env.S3_SECRET_ACCESS_KEY),
|
||||
}
|
||||
}
|
||||
|
||||
function normalizeOptionalString(value: string | undefined) {
|
||||
return value && value.trim().length > 0 ? value : undefined
|
||||
}
|
||||
|
||||
function parseBoolean(value: string | undefined, fallback: boolean) {
|
||||
if (value === undefined) {
|
||||
return fallback
|
||||
}
|
||||
|
||||
return ["1", "true", "yes"].includes(value.toLowerCase())
|
||||
}
|
||||
Reference in New Issue
Block a user