DOcs
This commit is contained in:
@@ -46,6 +46,23 @@ const LEGACY_PROFILE_SETTING_MIGRATIONS = [
|
|||||||
profileKeys: ['output_folder_template_bluray', 'output_folder_template_dvd']
|
profileKeys: ['output_folder_template_bluray', 'output_folder_template_dvd']
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
const INSTALL_PATH_SETTING_DEFAULTS = [
|
||||||
|
{
|
||||||
|
key: 'raw_dir',
|
||||||
|
pathParts: ['output', 'raw'],
|
||||||
|
legacyDefaults: ['data/output/raw', './data/output/raw']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'movie_dir',
|
||||||
|
pathParts: ['output', 'movies'],
|
||||||
|
legacyDefaults: ['data/output/movies', './data/output/movies']
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'log_dir',
|
||||||
|
pathParts: ['logs'],
|
||||||
|
legacyDefaults: ['data/logs', './data/logs']
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
let dbInstance;
|
let dbInstance;
|
||||||
|
|
||||||
@@ -521,6 +538,7 @@ async function openAndPrepareDatabase() {
|
|||||||
await applySchemaModel(dbInstance, schemaModel);
|
await applySchemaModel(dbInstance, schemaModel);
|
||||||
|
|
||||||
await seedFromSchemaFile(dbInstance);
|
await seedFromSchemaFile(dbInstance);
|
||||||
|
await syncInstallPathSettingDefaults(dbInstance);
|
||||||
await migrateLegacyProfiledToolSettings(dbInstance);
|
await migrateLegacyProfiledToolSettings(dbInstance);
|
||||||
await removeDeprecatedSettings(dbInstance);
|
await removeDeprecatedSettings(dbInstance);
|
||||||
await migrateSettingsSchemaMetadata(dbInstance);
|
await migrateSettingsSchemaMetadata(dbInstance);
|
||||||
@@ -580,6 +598,68 @@ async function seedFromSchemaFile(db) {
|
|||||||
logger.info('seed:settings', { count: statements.length });
|
logger.info('seed:settings', { count: statements.length });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function syncInstallPathSettingDefaults(db) {
|
||||||
|
const dataDir = path.dirname(dbPath);
|
||||||
|
const updates = INSTALL_PATH_SETTING_DEFAULTS.map((item) => ({
|
||||||
|
key: item.key,
|
||||||
|
value: path.join(dataDir, ...item.pathParts),
|
||||||
|
legacyDefaults: Array.isArray(item.legacyDefaults) ? item.legacyDefaults : []
|
||||||
|
}));
|
||||||
|
|
||||||
|
await db.exec('BEGIN');
|
||||||
|
try {
|
||||||
|
for (const update of updates) {
|
||||||
|
const placeholders = update.legacyDefaults.map(() => '?').join(', ');
|
||||||
|
|
||||||
|
await db.run(
|
||||||
|
`
|
||||||
|
UPDATE settings_schema
|
||||||
|
SET default_value = ?, updated_at = CURRENT_TIMESTAMP
|
||||||
|
WHERE key = ?
|
||||||
|
AND (
|
||||||
|
default_value IS NULL
|
||||||
|
OR TRIM(default_value) = ''
|
||||||
|
OR default_value IN (${placeholders})
|
||||||
|
)
|
||||||
|
`,
|
||||||
|
[update.value, update.key, ...update.legacyDefaults]
|
||||||
|
);
|
||||||
|
|
||||||
|
await db.run(
|
||||||
|
`
|
||||||
|
INSERT INTO settings_values (key, value, updated_at)
|
||||||
|
VALUES (?, ?, CURRENT_TIMESTAMP)
|
||||||
|
ON CONFLICT(key) DO NOTHING
|
||||||
|
`,
|
||||||
|
[update.key, update.value]
|
||||||
|
);
|
||||||
|
|
||||||
|
await db.run(
|
||||||
|
`
|
||||||
|
UPDATE settings_values
|
||||||
|
SET value = ?, updated_at = CURRENT_TIMESTAMP
|
||||||
|
WHERE key = ?
|
||||||
|
AND (
|
||||||
|
value IS NULL
|
||||||
|
OR TRIM(value) = ''
|
||||||
|
OR value IN (${placeholders})
|
||||||
|
)
|
||||||
|
`,
|
||||||
|
[update.value, update.key, ...update.legacyDefaults]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
await db.exec('COMMIT');
|
||||||
|
} catch (error) {
|
||||||
|
await db.exec('ROLLBACK');
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.info('seed:path-defaults-synced', {
|
||||||
|
dataDir,
|
||||||
|
settings: updates.map((item) => ({ key: item.key, value: item.value }))
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
async function readCurrentOrDefaultSettingValue(db, key) {
|
async function readCurrentOrDefaultSettingValue(db, key) {
|
||||||
if (!key) {
|
if (!key) {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
Reference in New Issue
Block a user