diff --git a/packages/presets/nocobase/src/server/index.ts b/packages/presets/nocobase/src/server/index.ts index 4cbe3735d..03c2efc7b 100644 --- a/packages/presets/nocobase/src/server/index.ts +++ b/packages/presets/nocobase/src/server/index.ts @@ -69,6 +69,9 @@ export class PresetNocoBase extends Plugin { plugin: this, }, }); + this.app.on('beforeUpgrade', async () => { + await this.createIfNotExist(); + }); } get allPlugins() { @@ -79,6 +82,14 @@ export class PresetNocoBase extends Plugin { .concat(this.localPlugins.map((name) => ({ name }))); } + async createIfNotExist() { + const repository = this.app.db.getRepository('applicationPlugins'); + const existPlugins = await repository.find(); + const existPluginNames = existPlugins.map((item) => item.name); + const plugins = this.allPlugins.filter((item) => !existPluginNames.includes(item.name)); + await repository.create({ values: plugins }); + } + async install() { const repository = this.app.db.getRepository('applicationPlugins'); const existPlugins = await repository.find();