fix(db): clean config field names under db: object

Removed redundant pg prefix — fields already nested under db:.
pgHost→host, pgPort→port, pgDatabase→database, pgUser→user,
pgPassword→password, pgPoolMax→poolMax, pgUrl→url.

Updated all 3 plugin schemas, shared DbConfig type, init.ts,
and sec-config template.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Mitchell R 2026-05-24 05:12:53 +02:00
parent 6ec2dcbec4
commit 2e88d891e1
No known key found for this signature in database
6 changed files with 58 additions and 58 deletions

View file

@ -26,12 +26,12 @@ default:
db: db:
driver: ${BF_DB_DRIVER} driver: ${BF_DB_DRIVER}
sqlitePath: /var/lib/betterframe/betterframe.db sqlitePath: /var/lib/betterframe/betterframe.db
pgHost: ${BF_PG_HOST} host: ${BF_PG_HOST}
pgPort: ${BF_PG_PORT} port: ${BF_PG_PORT}
pgDatabase: ${BF_PG_DB} database: ${BF_PG_DB}
pgUser: ${BF_PG_USER} user: ${BF_PG_USER}
pgPassword: ${BF_PG_PASSWORD} password: ${BF_PG_PASSWORD}
pgPoolMax: ${BF_PG_POOL_MAX} poolMax: ${BF_PG_POOL_MAX}
host: 0.0.0.0 host: 0.0.0.0
port: 18080 port: 18080
dataDir: /var/lib/betterframe dataDir: /var/lib/betterframe
@ -59,12 +59,12 @@ default:
db: db:
driver: ${BF_DB_DRIVER} driver: ${BF_DB_DRIVER}
sqlitePath: /var/lib/betterframe/betterframe.db sqlitePath: /var/lib/betterframe/betterframe.db
pgHost: ${BF_PG_HOST} host: ${BF_PG_HOST}
pgPort: ${BF_PG_PORT} port: ${BF_PG_PORT}
pgDatabase: ${BF_PG_DB} database: ${BF_PG_DB}
pgUser: ${BF_PG_USER} user: ${BF_PG_USER}
pgPassword: ${BF_PG_PASSWORD} password: ${BF_PG_PASSWORD}
pgPoolMax: ${BF_PG_POOL_MAX} poolMax: ${BF_PG_POOL_MAX}
host: 0.0.0.0 host: 0.0.0.0
port: 18081 port: 18081
codeTtlSeconds: 600 codeTtlSeconds: 600
@ -88,12 +88,12 @@ default:
db: db:
driver: ${BF_DB_DRIVER} driver: ${BF_DB_DRIVER}
sqlitePath: /var/lib/betterframe/betterframe.db sqlitePath: /var/lib/betterframe/betterframe.db
pgHost: ${BF_PG_HOST} host: ${BF_PG_HOST}
pgPort: ${BF_PG_PORT} port: ${BF_PG_PORT}
pgDatabase: ${BF_PG_DB} database: ${BF_PG_DB}
pgUser: ${BF_PG_USER} user: ${BF_PG_USER}
pgPassword: ${BF_PG_PASSWORD} password: ${BF_PG_PASSWORD}
pgPoolMax: ${BF_PG_POOL_MAX} poolMax: ${BF_PG_POOL_MAX}
host: 0.0.0.0 host: 0.0.0.0
port: 18082 port: 18082
dataDir: /var/lib/betterframe dataDir: /var/lib/betterframe

View file

@ -43,13 +43,13 @@ const ConfigSchema = av.object(
{ {
driver: av.enum_(["sqlite", "postgres"] as const).default("postgres"), driver: av.enum_(["sqlite", "postgres"] as const).default("postgres"),
sqlitePath: av.string().minLength(1).default("/var/lib/betterframe/betterframe.db"), sqlitePath: av.string().minLength(1).default("/var/lib/betterframe/betterframe.db"),
pgUrl: av.string().default(""), url: av.string().default(""),
pgHost: av.string().default("postgres"), host: av.string().default("postgres"),
pgPort: av.int().min(1).max(65535).default(5432), port: av.int().min(1).max(65535).default(5432),
pgDatabase: av.string().default("betterframe"), database: av.string().default("betterframe"),
pgUser: av.string().default("betterframe"), user: av.string().default("betterframe"),
pgPassword: av.string().default("betterframe"), password: av.string().default("betterframe"),
pgPoolMax: av.int().min(1).max(1000).default(10), poolMax: av.int().min(1).max(1000).default(10),
}, },
{ unknownKeys: "strip" }, { unknownKeys: "strip" },
), ),

View file

@ -40,13 +40,13 @@ const ConfigSchema = av.object(
{ {
driver: av.enum_(["sqlite", "postgres"] as const).default("postgres"), driver: av.enum_(["sqlite", "postgres"] as const).default("postgres"),
sqlitePath: av.string().minLength(1).default("/var/lib/betterframe/betterframe.db"), sqlitePath: av.string().minLength(1).default("/var/lib/betterframe/betterframe.db"),
pgUrl: av.string().default(""), url: av.string().default(""),
pgHost: av.string().default("postgres"), host: av.string().default("postgres"),
pgPort: av.int().min(1).max(65535).default(5432), port: av.int().min(1).max(65535).default(5432),
pgDatabase: av.string().default("betterframe"), database: av.string().default("betterframe"),
pgUser: av.string().default("betterframe"), user: av.string().default("betterframe"),
pgPassword: av.string().default("betterframe"), password: av.string().default("betterframe"),
pgPoolMax: av.int().min(1).max(1000).default(10), poolMax: av.int().min(1).max(1000).default(10),
}, },
{ unknownKeys: "strip" }, { unknownKeys: "strip" },
), ),

View file

@ -38,13 +38,13 @@ const ConfigSchema = av.object(
{ {
driver: av.enum_(["sqlite", "postgres"] as const).default("postgres"), driver: av.enum_(["sqlite", "postgres"] as const).default("postgres"),
sqlitePath: av.string().minLength(1).default("/var/lib/betterframe/betterframe.db"), sqlitePath: av.string().minLength(1).default("/var/lib/betterframe/betterframe.db"),
pgUrl: av.string().default(""), url: av.string().default(""),
pgHost: av.string().default("postgres"), host: av.string().default("postgres"),
pgPort: av.int().min(1).max(65535).default(5432), port: av.int().min(1).max(65535).default(5432),
pgDatabase: av.string().default("betterframe"), database: av.string().default("betterframe"),
pgUser: av.string().default("betterframe"), user: av.string().default("betterframe"),
pgPassword: av.string().default("betterframe"), password: av.string().default("betterframe"),
pgPoolMax: av.int().min(1).max(1000).default(10), poolMax: av.int().min(1).max(1000).default(10),
}, },
{ unknownKeys: "strip" }, { unknownKeys: "strip" },
), ),

View file

@ -4,13 +4,13 @@ export const dbConfigSchema = av.object(
{ {
driver: av.enum_(["sqlite", "postgres"] as const).default("postgres"), driver: av.enum_(["sqlite", "postgres"] as const).default("postgres"),
sqlitePath: av.string().minLength(1).default("/var/lib/betterframe/betterframe.db"), sqlitePath: av.string().minLength(1).default("/var/lib/betterframe/betterframe.db"),
pgUrl: av.string().default(""), url: av.string().default(""),
pgHost: av.string().default("postgres"), host: av.string().default("postgres"),
pgPort: av.int().min(1).max(65535).default(5432), port: av.int().min(1).max(65535).default(5432),
pgDatabase: av.string().default("betterframe"), database: av.string().default("betterframe"),
pgUser: av.string().default("betterframe"), user: av.string().default("betterframe"),
pgPassword: av.string().default("betterframe"), password: av.string().default("betterframe"),
pgPoolMax: av.int().min(1).max(1000).default(10), poolMax: av.int().min(1).max(1000).default(10),
}, },
{ unknownKeys: "strip" }, { unknownKeys: "strip" },
); );
@ -18,11 +18,11 @@ export const dbConfigSchema = av.object(
export type DbConfig = { export type DbConfig = {
driver: "sqlite" | "postgres"; driver: "sqlite" | "postgres";
sqlitePath: string; sqlitePath: string;
pgUrl: string; url: string;
pgHost: string; host: string;
pgPort: number; port: number;
pgDatabase: string; database: string;
pgUser: string; user: string;
pgPassword: string; password: string;
pgPoolMax: number; poolMax: number;
}; };

View file

@ -26,16 +26,16 @@ export async function initDb(
const notify = notifyFn ?? (() => {}); const notify = notifyFn ?? (() => {});
if (driver === "postgres") { if (driver === "postgres") {
let pgUrl = config.pgUrl ?? ""; let pgUrl = config.url ?? "";
if (!pgUrl) { if (!pgUrl) {
const u = encodeURIComponent(config.pgUser); const u = encodeURIComponent(config.user);
const p = encodeURIComponent(config.pgPassword); const p = encodeURIComponent(config.password);
pgUrl = `postgres://${u}:${p}@${config.pgHost}:${config.pgPort}/${config.pgDatabase}`; pgUrl = `postgres://${u}:${p}@${config.host}:${config.port}/${config.database}`;
} }
log.info(`connecting to postgres at ${pgUrl.replace(/:[^:@]+@/, ":***@")}`); log.info(`connecting to postgres at ${pgUrl.replace(/:[^:@]+@/, ":***@")}`);
const { PgAdapter } = await import("./pg-adapter.js"); const { PgAdapter } = await import("./pg-adapter.js");
const adapter = new PgAdapter(pgUrl, config.pgPoolMax); const adapter = new PgAdapter(pgUrl, config.poolMax);
// Run PG migrations. Track version in schema_migrations table. // Run PG migrations. Track version in schema_migrations table.
const { TENANT_MIGRATIONS } = await import("./migrations-pg.js"); const { TENANT_MIGRATIONS } = await import("./migrations-pg.js");