core: upgrade: use seperate pipeline for fresh install

This commit is contained in:
undefined committed 2023-01-08 20:48:25 +08:00
1 parent 9c40c8da47
commit 06e0223793
2 files changed
+36 -81

No files matched your search

+15 -10
View File
@@ -71,21 +71,26 @@ export async function apply(ctx: Context) {
await ctx.lifecycle.flush();
await ctx.parallel('app/started');
if (process.env.NODE_APP_INSTANCE === '0') {
const scripts = require('../upgrade').default;
const { default: scripts, init } = require('../upgrade');
let dbVer = (await modelSystem.get('db.ver')) ?? 0;
const isFresh = !dbVer;
const expected = scripts.length;
while (dbVer < expected) {
const func = scripts[dbVer];
if (typeof func !== 'function' || (isFresh && func.toString().includes('_FRESH_INSTALL_IGNORE'))) {
if (isFresh) {
await init();
await modelSystem.set('db.ver', expected);
} else {
while (dbVer < expected) {
const func = scripts[dbVer];
if (typeof func !== 'function') {
dbVer++;
continue;
}
logger.info('Upgrading database: from %d to %d', dbVer, expected);
const result = await func();
if (!result) break;
dbVer++;
continue;
await modelSystem.set('db.ver', dbVer);
}
logger.info('Upgrading database: from %d to %d', dbVer, expected);
const result = await func();
if (!result) break;
dbVer++;
await modelSystem.set('db.ver', dbVer);
}
}
logger.success('Server started');