feat(db): removed requirement to have EnvVar for database location

By default the database directory is `/volumes/database`, but can be
changed by setting `DATABASE_DIR` env var
This commit is contained in:
Maieul BOYER 2025-12-30 16:01:56 +01:00 committed by Maix0
parent fbbc6d8f39
commit af13395f2f
2 changed files with 9 additions and 15 deletions

View file

@ -60,7 +60,6 @@ services:
- ./src/auth/config:/config
environment:
- JWT_SECRET=KRUGKIDROVUWG2ZAMJZG653OEBTG66BANJ2W24DTEBXXMZLSEB2GQZJANRQXU6JA
- DATABASE_DIR=/volumes/database
logging:
driver: gelf
options:
@ -84,7 +83,6 @@ services:
- static-volume:/volumes/static
environment:
- JWT_SECRET=KRUGKIDROVUWG2ZAMJZG653OEBTG66BANJ2W24DTEBXXMZLSEB2GQZJANRQXU6JA
- DATABASE_DIR=/volumes/database
logging:
driver: gelf
options:
@ -108,7 +106,6 @@ services:
- static-volume:/volumes/static
environment:
- JWT_SECRET=KRUGKIDROVUWG2ZAMJZG653OEBTG66BANJ2W24DTEBXXMZLSEB2GQZJANRQXU6JA
- DATABASE_DIR=/volumes/database
- PROVIDER_FILE=/extra/providers.toml
- SESSION_MANAGER=${SESSION_MANAGER}
logging:
@ -131,7 +128,6 @@ services:
- static-volume:/volumes/static
environment:
- JWT_SECRET=KRUGKIDROVUWG2ZAMJZG653OEBTG66BANJ2W24DTEBXXMZLSEB2GQZJANRQXU6JA
- DATABASE_DIR=/volumes/database
logging:
driver: gelf
options:

View file

@ -1,12 +1,10 @@
import fp from 'fastify-plugin';
import { FastifyInstance, FastifyPluginAsync } from 'fastify';
import { isNullish } from '@shared/utils';
import { Database as DbImpl } from './mixin/_base';
import { IUserDb, UserImpl } from './mixin/user';
import { IBlockedDb, BlockedImpl } from './mixin/blocked';
Object.assign(DbImpl.prototype, UserImpl);
Object.assign(DbImpl.prototype, BlockedImpl);
@ -23,18 +21,18 @@ let dbAdded = false;
export const useDatabase = fp<FastifyPluginAsync>(async function(
f: FastifyInstance,
_options: object) {
_options: object,
) {
void _options;
if (dbAdded) { return; }
dbAdded = true;
const path = process.env.DATABASE_DIR;
if (isNullish(path)) {
f.log.fatal('env `DATABASE_DIR` not defined');
throw 'env `DATABASE_DIR` not defined';
if (dbAdded) {
return;
}
dbAdded = true;
const path = process.env.DATABASE_DIR ?? '/volumes/database';
const db: Database = new DbImpl(`${path}/database.db`) as Database;
if (!f.hasDecorator('db')) { f.decorate('db', db); }
if (!f.hasDecorator('db')) {
f.decorate('db', db);
}
});
export default useDatabase;