mirror of
https://github.com/alkimake/paperclip.git
synced 2026-06-17 11:20:37 +09:00
Add configurable automatic database backup scheduling
This commit is contained in:
parent
f6a09bcbea
commit
c145074daf
17 changed files with 722 additions and 351 deletions
|
|
@ -15,6 +15,7 @@ import {
|
|||
type StorageProvider,
|
||||
} from "@paperclipai/shared";
|
||||
import {
|
||||
resolveDefaultBackupDir,
|
||||
resolveDefaultEmbeddedPostgresDir,
|
||||
resolveDefaultSecretsKeyFilePath,
|
||||
resolveDefaultStorageDir,
|
||||
|
|
@ -40,6 +41,10 @@ export interface Config {
|
|||
databaseUrl: string | undefined;
|
||||
embeddedPostgresDataDir: string;
|
||||
embeddedPostgresPort: number;
|
||||
databaseBackupEnabled: boolean;
|
||||
databaseBackupIntervalMinutes: number;
|
||||
databaseBackupRetentionDays: number;
|
||||
databaseBackupDir: string;
|
||||
serveUi: boolean;
|
||||
uiDevMiddleware: boolean;
|
||||
secretsProvider: SecretProvider;
|
||||
|
|
@ -66,6 +71,7 @@ export function loadConfig(): Config {
|
|||
fileDatabaseMode === "postgres"
|
||||
? fileConfig?.database.connectionString
|
||||
: undefined;
|
||||
const fileDatabaseBackup = fileConfig?.database.backup;
|
||||
const fileSecrets = fileConfig?.secrets;
|
||||
const fileStorage = fileConfig?.storage;
|
||||
const strictModeFromEnv = process.env.PAPERCLIP_SECRETS_STRICT_MODE;
|
||||
|
|
@ -148,6 +154,27 @@ export function loadConfig(): Config {
|
|||
companyDeletionEnvRaw !== undefined
|
||||
? companyDeletionEnvRaw === "true"
|
||||
: deploymentMode === "local_trusted";
|
||||
const databaseBackupEnabled =
|
||||
process.env.PAPERCLIP_DB_BACKUP_ENABLED !== undefined
|
||||
? process.env.PAPERCLIP_DB_BACKUP_ENABLED === "true"
|
||||
: (fileDatabaseBackup?.enabled ?? true);
|
||||
const databaseBackupIntervalMinutes = Math.max(
|
||||
1,
|
||||
Number(process.env.PAPERCLIP_DB_BACKUP_INTERVAL_MINUTES) ||
|
||||
fileDatabaseBackup?.intervalMinutes ||
|
||||
60,
|
||||
);
|
||||
const databaseBackupRetentionDays = Math.max(
|
||||
1,
|
||||
Number(process.env.PAPERCLIP_DB_BACKUP_RETENTION_DAYS) ||
|
||||
fileDatabaseBackup?.retentionDays ||
|
||||
30,
|
||||
);
|
||||
const databaseBackupDir = resolveHomeAwarePath(
|
||||
process.env.PAPERCLIP_DB_BACKUP_DIR ??
|
||||
fileDatabaseBackup?.dir ??
|
||||
resolveDefaultBackupDir(),
|
||||
);
|
||||
|
||||
return {
|
||||
deploymentMode,
|
||||
|
|
@ -163,6 +190,10 @@ export function loadConfig(): Config {
|
|||
fileConfig?.database.embeddedPostgresDataDir ?? resolveDefaultEmbeddedPostgresDir(),
|
||||
),
|
||||
embeddedPostgresPort: fileConfig?.database.embeddedPostgresPort ?? 54329,
|
||||
databaseBackupEnabled,
|
||||
databaseBackupIntervalMinutes,
|
||||
databaseBackupRetentionDays,
|
||||
databaseBackupDir,
|
||||
serveUi:
|
||||
process.env.SERVE_UI !== undefined
|
||||
? process.env.SERVE_UI === "true"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue