Add migration for multiple widgets

This commit is contained in:
Meier Lukas
2023-03-30 21:46:59 +02:00
parent 1652f6e368
commit 66f9dd51dd
2 changed files with 36 additions and 2 deletions

View File

@@ -1,9 +1,13 @@
import Consola from 'consola';
import { v4 as uuidv4 } from 'uuid';
import { BackendConfigType, ConfigType } from '../../types/config';
import { backendMigrateConfig } from './backendMigrateConfig';
import { configExists } from './configExists';
import { getFallbackConfig } from './getFallbackConfig';
import { readConfig } from './readConfig';
import { writeConfig } from './writeConfig';
const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
export const getConfig = (name: string): BackendConfigType => {
if (!configExists(name)) return getFallbackConfig() as unknown as ConfigType;
@@ -12,9 +16,29 @@ export const getConfig = (name: string): BackendConfigType => {
// to the new format.
const config = readConfig(name);
if (config.schemaVersion === undefined) {
Consola.log('Migrating config file...', config);
Consola.log('Migrating config file...', config.name);
return backendMigrateConfig(config, name);
}
return config;
let backendConfig = config as BackendConfigType;
if (backendConfig.widgets.some((widget) => !uuidRegex.test(widget.id))) {
backendConfig = {
...backendConfig,
widgets: backendConfig.widgets.map((widget) => ({
...widget,
id: uuidv4(),
type: widget.id,
})),
};
Consola.log(
'Migrating config file to multiple widgets...',
backendConfig.configProperties.name
);
writeConfig(backendConfig);
}
return backendConfig;
};

View File

@@ -0,0 +1,10 @@
import fs from 'fs';
import { BackendConfigType } from '../../types/config';
import { generateConfigPath } from './generateConfigPath';
export function writeConfig(config: BackendConfigType) {
const path = generateConfigPath(config.configProperties.name);
return fs.writeFileSync(path, JSON.stringify(config, null, 4), {
encoding: 'utf8',
});
}