From e0646650f0e37ebffe368ffc49643475cf2ed7b5 Mon Sep 17 00:00:00 2001 From: chenos Date: Thu, 18 May 2023 14:51:51 +0800 Subject: [PATCH] fix(database): migrations table name missing table prefix --- .../database/src/__tests__/migrator.test.ts | 4 ++++ packages/core/database/src/database.ts | 22 +++++++++---------- .../20221214072638-set-role-snippets.ts | 6 +++++ .../20230319111111-update-apps-collections.ts | 6 +++++ 4 files changed, 27 insertions(+), 11 deletions(-) diff --git a/packages/core/database/src/__tests__/migrator.test.ts b/packages/core/database/src/__tests__/migrator.test.ts index d93e6c089..8cfdcd03a 100644 --- a/packages/core/database/src/__tests__/migrator.test.ts +++ b/packages/core/database/src/__tests__/migrator.test.ts @@ -18,6 +18,10 @@ describe('migrator', () => { await db.close(); }); + test('migrations', async () => { + expect(db.getModel('migrations').tableName).toBe('test_migrations'); + }); + test('addMigrations', async () => { db.addMigrations({ directory: resolve(__dirname, './fixtures/migrations'), diff --git a/packages/core/database/src/database.ts b/packages/core/database/src/database.ts index b8e4a27e6..6d2158c04 100644 --- a/packages/core/database/src/database.ts +++ b/packages/core/database/src/database.ts @@ -62,13 +62,13 @@ import { } from './types'; import { patchSequelizeQueryInterface, snakeCase } from './utils'; -import DatabaseUtils from './database-utils'; -import { registerBuiltInListeners } from './listeners'; -import { BaseValueParser, registerFieldValueParsers } from './value-parsers'; -import buildQueryInterface from './query-interface/query-interface-builder'; -import QueryInterface from './query-interface/query-interface'; import { Logger } from '@nocobase/logger'; import { CollectionGroupManager } from './collection-group-manager'; +import DatabaseUtils from './database-utils'; +import { registerBuiltInListeners } from './listeners'; +import QueryInterface from './query-interface/query-interface'; +import buildQueryInterface from './query-interface/query-interface-builder'; +import { BaseValueParser, registerFieldValueParsers } from './value-parsers'; import { ViewCollection } from './view-collection'; export type MergeOptions = merge.Options; @@ -275,6 +275,12 @@ export class Database extends EventEmitter implements AsyncEmitter { }), }); + this.sequelize.beforeDefine((model, opts) => { + if (this.options.tablePrefix) { + opts.tableName = `${this.options.tablePrefix}${opts.tableName || opts.modelName || opts.name.plural}`; + } + }); + this.collection({ name: 'migrations', autoGenId: false, @@ -284,12 +290,6 @@ export class Database extends EventEmitter implements AsyncEmitter { fields: [{ type: 'string', name: 'name' }], }); - this.sequelize.beforeDefine((model, opts) => { - if (this.options.tablePrefix) { - opts.tableName = `${this.options.tablePrefix}${opts.tableName || opts.modelName || opts.name.plural}`; - } - }); - this.initListener(); patchSequelizeQueryInterface(this); } diff --git a/packages/plugins/acl/src/migrations/20221214072638-set-role-snippets.ts b/packages/plugins/acl/src/migrations/20221214072638-set-role-snippets.ts index de82169e9..7615ef898 100644 --- a/packages/plugins/acl/src/migrations/20221214072638-set-role-snippets.ts +++ b/packages/plugins/acl/src/migrations/20221214072638-set-role-snippets.ts @@ -2,6 +2,12 @@ import { Migration } from '@nocobase/server'; export default class extends Migration { async up() { + const result = await this.app.version.satisfies('<0.9.3-alpha.1'); + + if (!result) { + return; + } + await this.app.db.getRepository('roles').update({ filter: { $or: [{ allowConfigure: true }, { name: 'root' }], diff --git a/packages/plugins/multi-app-share-collection/src/server/migrations/20230319111111-update-apps-collections.ts b/packages/plugins/multi-app-share-collection/src/server/migrations/20230319111111-update-apps-collections.ts index 7f9d9d102..8e64b7bb2 100644 --- a/packages/plugins/multi-app-share-collection/src/server/migrations/20230319111111-update-apps-collections.ts +++ b/packages/plugins/multi-app-share-collection/src/server/migrations/20230319111111-update-apps-collections.ts @@ -3,6 +3,12 @@ import { CollectionsGraph } from '@nocobase/utils'; export default class extends Migration { async up() { + const result = await this.app.version.satisfies('<0.9.3-alpha.1'); + + if (!result) { + return; + } + if (!this.app.db.getCollection('applications')) return; await this.app.db.getCollection('collections').repository.destroy({