mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-06-07 01:51:36 -04:00
feat(database): show information about migration status
Co-authored-by: Philip Molares <philip.molares@udo.edu> Signed-off-by: Philip Molares <philip.molares@udo.edu> Signed-off-by: Erik Michelson <github@erik.michelson.eu>
This commit is contained in:
parent
6e39b445e5
commit
04d19ebfbc
2 changed files with 58 additions and 3 deletions
|
@ -15,6 +15,7 @@ import { AuthConfig } from './config/auth.config';
|
||||||
import { MediaConfig } from './config/media.config';
|
import { MediaConfig } from './config/media.config';
|
||||||
import { ErrorExceptionMapping } from './errors/error-mapping';
|
import { ErrorExceptionMapping } from './errors/error-mapping';
|
||||||
import { ConsoleLoggerService } from './logger/console-logger.service';
|
import { ConsoleLoggerService } from './logger/console-logger.service';
|
||||||
|
import { runMigrations } from './migrate';
|
||||||
import { SessionService } from './sessions/session.service';
|
import { SessionService } from './sessions/session.service';
|
||||||
import { setupSessionMiddleware } from './utils/session';
|
import { setupSessionMiddleware } from './utils/session';
|
||||||
import { setupValidationPipe } from './utils/setup-pipes';
|
import { setupValidationPipe } from './utils/setup-pipes';
|
||||||
|
@ -44,11 +45,9 @@ export async function setupApp(
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
logger.log('Starting database migrations... ', 'AppBootstrap');
|
|
||||||
const knexConnectionToken = getConnectionToken();
|
const knexConnectionToken = getConnectionToken();
|
||||||
const knex: Knex = app.get<Knex>(knexConnectionToken);
|
const knex: Knex = app.get<Knex>(knexConnectionToken);
|
||||||
await knex.migrate.latest();
|
await runMigrations(knex, logger);
|
||||||
logger.log('Finished database migrations... ', 'AppBootstrap');
|
|
||||||
|
|
||||||
// Setup session handling
|
// Setup session handling
|
||||||
setupSessionMiddleware(
|
setupSessionMiddleware(
|
||||||
|
|
56
backend/src/migrate.ts
Normal file
56
backend/src/migrate.ts
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2025 The HedgeDoc developers (see AUTHORS file)
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
*/
|
||||||
|
import { Knex } from 'knex';
|
||||||
|
|
||||||
|
import { ConsoleLoggerService } from './logger/console-logger.service';
|
||||||
|
|
||||||
|
interface CompletedMigration {
|
||||||
|
name: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface PendingMigration {
|
||||||
|
file: string;
|
||||||
|
directory: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Runs the database migrations and informs the user about already completed and still pending ones
|
||||||
|
*
|
||||||
|
* @param knex The configured Knex instance to use
|
||||||
|
* @param logger The console logger service to use
|
||||||
|
*/
|
||||||
|
export async function runMigrations(
|
||||||
|
knex: Knex,
|
||||||
|
logger: ConsoleLoggerService,
|
||||||
|
): Promise<void> {
|
||||||
|
logger.log('Checking for pending database migrations... ', 'runMigrations');
|
||||||
|
try {
|
||||||
|
const [completedMigrations, pendingMigrations] =
|
||||||
|
(await knex.migrate.list()) as [CompletedMigration[], PendingMigration[]];
|
||||||
|
logger.log(
|
||||||
|
`Found ${completedMigrations.length} already completed migrations and ${pendingMigrations.length} pending migrations.`,
|
||||||
|
'runMigrations',
|
||||||
|
);
|
||||||
|
for (const migration of completedMigrations) {
|
||||||
|
logger.log(
|
||||||
|
`Already applied migration ${migration.name}`,
|
||||||
|
'runMigrations',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
for (const migration of pendingMigrations) {
|
||||||
|
logger.log(`Applying migration ${migration.file}`, 'runMigrations');
|
||||||
|
await knex.migrate.up();
|
||||||
|
logger.log('✅', 'runMigrations');
|
||||||
|
}
|
||||||
|
} catch (error: unknown) {
|
||||||
|
logger.error(
|
||||||
|
`Error while migrating database: ${String(error)}`,
|
||||||
|
'runMigrations',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.log('Finished database migrations... ', 'runMigrations');
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue