diff --git a/.env.example b/.env.example index 41acc702..b666be12 100644 --- a/.env.example +++ b/.env.example @@ -73,6 +73,10 @@ AUTH_PASSKEY_ENABLED=true # Retention RETENTION_CRON="* * * * *" +# Optional prefix for backup files stored in configured storage channels. +# Defaults to "backups" when unset. +#BACKUP_FILE_PREFIX=backups + TRUSTED_DOMAINS="http://localhost:8887, http://localhost:3055, http://localhost:3056" #OPENAPI_ENABLED=true diff --git a/src/env.mjs b/src/env.mjs index 3ae8f6fa..20ddabd1 100644 --- a/src/env.mjs +++ b/src/env.mjs @@ -5,6 +5,11 @@ import packageJson from "../package.json" with {type: "json"}; const {version} = packageJson; +export function getBackupFilePrefix() { + const separator = String.fromCharCode(47); + return env.BACKUP_FILE_PREFIX?.trim().split(separator).filter(Boolean).join(separator) || "backups"; +} + export const env = createEnv({ emptyStringAsUndefined: true, server: { @@ -66,6 +71,8 @@ export const env = createEnv({ STALE_BACKUP_THRESHOLD_HOURS: z.coerce.number().default(6), + BACKUP_FILE_PREFIX: z.string().optional(), + AUTH_OIDC_ID: z.string().optional().default("oidc"), AUTH_OIDC_TITLE: z.string().optional(), AUTH_OIDC_DESC: z.string().optional(), @@ -154,6 +161,7 @@ export const env = createEnv({ RETENTION_CRON: process.env.RETENTION_CRON, CLEANING_HEALTHCHECK_LOGS_CRON: process.env.CLEANING_HEALTHCHECK_LOGS_CRON, STALE_BACKUP_THRESHOLD_HOURS: process.env.STALE_BACKUP_THRESHOLD_HOURS, + BACKUP_FILE_PREFIX: process.env.BACKUP_FILE_PREFIX, AUTH_OIDC_ID: process.env.AUTH_OIDC_ID, AUTH_OIDC_TITLE: process.env.AUTH_OIDC_TITLE, diff --git a/src/features/agents/utils/status/storage-channels.helpers.ts b/src/features/agents/utils/status/storage-channels.helpers.ts index c30bd373..4e0e35ef 100644 --- a/src/features/agents/utils/status/storage-channels.helpers.ts +++ b/src/features/agents/utils/status/storage-channels.helpers.ts @@ -1,11 +1,13 @@ import * as drizzleDb from "@/db"; import {db} from "@/db"; import {eq} from "drizzle-orm"; +import {getBackupFilePrefix} from "@/env"; export type PingDatabaseStorageChannels = { id: string; config: any provider: string + prefix: string } export async function getDatabaseStorageChannels(databaseId: string): Promise { @@ -24,6 +26,8 @@ export async function getDatabaseStorageChannels(databaseId: string): Promise