mirror of
https://github.com/fallenbagel/jellyseerr.git
synced 2025-12-24 02:39:18 -05:00
34 lines
1.1 KiB
TypeScript
34 lines
1.1 KiB
TypeScript
import type { AllSettings } from '@server/lib/settings';
|
|
import fs from 'fs';
|
|
import path from 'path';
|
|
|
|
export class SettingsMigrator {
|
|
static async migrateSettings(settings: AllSettings): Promise<AllSettings> {
|
|
const migrations = await this.loadMigrations();
|
|
for (const migration of Object.values(migrations)) {
|
|
settings = await migration(settings);
|
|
}
|
|
return settings;
|
|
}
|
|
|
|
private static async loadMigrations(): Promise<
|
|
((settings: AllSettings) => AllSettings)[]
|
|
> {
|
|
const migrationDir = path.join(__dirname, 'migrations');
|
|
const migrationFiles = fs.readdirSync(migrationDir);
|
|
const migrationScripts: ((settings: AllSettings) => AllSettings)[] = [];
|
|
|
|
for (const file of migrationFiles) {
|
|
if (file.endsWith('.js') || file.endsWith('.ts')) {
|
|
const scriptPath = path.join(migrationDir, file);
|
|
const migrationScript = (await import(scriptPath)).default;
|
|
if (typeof migrationScript === 'function') {
|
|
migrationScripts.push(migrationScript);
|
|
}
|
|
}
|
|
}
|
|
|
|
return migrationScripts;
|
|
}
|
|
}
|