diff --git a/packages/core/database/src/database.ts b/packages/core/database/src/database.ts index 1b65ea269..e9d3e13ec 100644 --- a/packages/core/database/src/database.ts +++ b/packages/core/database/src/database.ts @@ -2,6 +2,7 @@ import { Logger } from '@nocobase/logger'; import { applyMixins, AsyncEmitter, requireModule } from '@nocobase/utils'; import merge from 'deepmerge'; import { EventEmitter } from 'events'; +import { backOff } from 'exponential-backoff'; import glob from 'glob'; import lodash from 'lodash'; import { basename, isAbsolute, resolve } from 'path'; @@ -69,7 +70,6 @@ import { import { patchSequelizeQueryInterface, snakeCase } from './utils'; import { BaseValueParser, registerFieldValueParsers } from './value-parsers'; import { ViewCollection } from './view-collection'; -import { backOff } from 'exponential-backoff'; export type MergeOptions = merge.Options; @@ -285,6 +285,8 @@ export class Database extends EventEmitter implements AsyncEmitter { migrations: this.migrations.callback(), context, storage: new SequelizeStorage({ + tableName: `${this.options.tablePrefix || ''}migrations`, + modelName: 'migrations', ...migratorOptions.storage, sequelize: this.sequelize, }), diff --git a/packages/core/server/src/application.ts b/packages/core/server/src/application.ts index bf08beb03..692767e36 100644 --- a/packages/core/server/src/application.ts +++ b/packages/core/server/src/application.ts @@ -14,6 +14,7 @@ import Koa, { DefaultContext as KoaDefaultContext, DefaultState as KoaDefaultSta import compose from 'koa-compose'; import lodash from 'lodash'; import { createACL } from './acl'; +import { AppCommand } from './app-command'; import { AppSupervisor } from './app-supervisor'; import { registerCli } from './commands'; import { ApplicationNotInstall } from './errors/application-not-install'; @@ -22,7 +23,6 @@ import { ApplicationVersion } from './helpers/application-version'; import { Locale } from './locale'; import { Plugin } from './plugin'; import { InstallOptions, PluginManager } from './plugin-manager'; -import { AppCommand } from './app-command'; const packageJson = require('../package.json'); diff --git a/packages/presets/nocobase/src/server/index.ts b/packages/presets/nocobase/src/server/index.ts index da20c759d..dedd455dc 100644 --- a/packages/presets/nocobase/src/server/index.ts +++ b/packages/presets/nocobase/src/server/index.ts @@ -93,15 +93,19 @@ export class PresetNocoBase extends Plugin { } async updateOrCreatePlugins() { - const repository = this.app.db.getRepository('applicationPlugins'); - return Promise.all( - this.allPlugins.map((values) => - repository.updateOrCreate({ - values, - filterKeys: ['name'], - }), - ), - ); + const repository = this.app.db.getRepository('applicationPlugins'); + await this.db.sequelize.transaction((transaction) => { + return Promise.all( + this.allPlugins.map((values) => + repository.updateOrCreate({ + transaction, + values, + filterKeys: ['name'], + }), + ), + ); + }); + await this.app.reload(); } async createIfNotExists() {