feat: allow unordered migrations in dev (#19881)

This commit is contained in:
Jason Rasmussen 2025-07-11 10:58:34 -04:00 committed by GitHub
parent a625921e8f
commit 1cc5ca14ca
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 8 additions and 4 deletions

View File

@ -334,6 +334,10 @@ export class ConfigRepository {
return cached;
}
isDev() {
return this.getEnv().environment === ImmichEnvironment.DEVELOPMENT;
}
getWorker() {
return this.worker;
}

View File

@ -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 },

View File

@ -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)) {

View File

@ -94,5 +94,6 @@ export const newConfigRepositoryMock = (): Mocked<RepositoryInterface<ConfigRepo
return {
getEnv: vitest.fn().mockReturnValue(mockEnvData({})),
getWorker: vitest.fn().mockReturnValue(ImmichWorker.API),
isDev: vitest.fn().mockReturnValue(false),
};
};