From 1cc5ca14cae90a5ff390d3ba6ffa949bdb20876a Mon Sep 17 00:00:00 2001 From: Jason Rasmussen Date: Fri, 11 Jul 2025 10:58:34 -0400 Subject: [PATCH] feat: allow unordered migrations in dev (#19881) --- server/src/repositories/config.repository.ts | 4 ++++ server/src/repositories/database.repository.ts | 1 + server/src/workers/api.ts | 6 ++---- server/test/repositories/config.repository.mock.ts | 1 + 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/server/src/repositories/config.repository.ts b/server/src/repositories/config.repository.ts index 9a0a24f70f..dbb57bb141 100644 --- a/server/src/repositories/config.repository.ts +++ b/server/src/repositories/config.repository.ts @@ -334,6 +334,10 @@ export class ConfigRepository { return cached; } + isDev() { + return this.getEnv().environment === ImmichEnvironment.DEVELOPMENT; + } + getWorker() { return this.worker; } diff --git a/server/src/repositories/database.repository.ts b/server/src/repositories/database.repository.ts index b611ff6c7f..b1aefe19f8 100644 --- a/server/src/repositories/database.repository.ts +++ b/server/src/repositories/database.repository.ts @@ -406,6 +406,7 @@ export class DatabaseRepository { const migrator = new Migrator({ db: this.db, migrationLockTableName: 'kysely_migrations_lock', + allowUnorderedMigrations: this.configRepository.isDev(), migrationTableName: 'kysely_migrations', provider: new FileMigrationProvider({ fs: { readdir }, diff --git a/server/src/workers/api.ts b/server/src/workers/api.ts index ce1520c475..f56adf3b68 100644 --- a/server/src/workers/api.ts +++ b/server/src/workers/api.ts @@ -7,7 +7,6 @@ import { existsSync } from 'node:fs'; import sirv from 'sirv'; import { ApiModule } from 'src/app.module'; import { excludePaths, serverVersion } from 'src/constants'; -import { ImmichEnvironment } from 'src/enum'; import { WebSocketAdapter } from 'src/middleware/websocket.adapter'; import { ConfigRepository } from 'src/repositories/config.repository'; import { LoggingRepository } from 'src/repositories/logging.repository'; @@ -27,7 +26,6 @@ async function bootstrap() { const configRepository = app.get(ConfigRepository); const { environment, host, port, resourcePaths } = configRepository.getEnv(); - const isDev = environment === ImmichEnvironment.DEVELOPMENT; logger.setContext('Bootstrap'); app.useLogger(logger); @@ -35,11 +33,11 @@ async function bootstrap() { app.set('etag', 'strong'); app.use(cookieParser()); app.use(json({ limit: '10mb' })); - if (isDev) { + if (configRepository.isDev()) { app.enableCors(); } app.useWebSocketAdapter(new WebSocketAdapter(app)); - useSwagger(app, { write: isDev }); + useSwagger(app, { write: configRepository.isDev() }); app.setGlobalPrefix('api', { exclude: excludePaths }); if (existsSync(resourcePaths.web.root)) { diff --git a/server/test/repositories/config.repository.mock.ts b/server/test/repositories/config.repository.mock.ts index a2585e3b9e..460dfeef57 100644 --- a/server/test/repositories/config.repository.mock.ts +++ b/server/test/repositories/config.repository.mock.ts @@ -94,5 +94,6 @@ export const newConfigRepositoryMock = (): Mocked