From 024cc102eab5ef97b5f083e29d6ec86e52f64a0d Mon Sep 17 00:00:00 2001 From: chenos Date: Fri, 25 Nov 2022 12:12:44 +0800 Subject: [PATCH] fix: field record not updated --- .../migrations/update-id-to-bigint.test.ts | 4 +-- ... => 20221121111113-update-id-to-bigint.ts} | 29 +++++++++---------- 2 files changed, 16 insertions(+), 17 deletions(-) rename packages/plugins/collection-manager/src/migrations/{20221121111112-update-id-to-bigint.ts => 20221121111113-update-id-to-bigint.ts} (92%) diff --git a/packages/plugins/collection-manager/src/__tests__/migrations/update-id-to-bigint.test.ts b/packages/plugins/collection-manager/src/__tests__/migrations/update-id-to-bigint.test.ts index f05f30fb1..546461f41 100644 --- a/packages/plugins/collection-manager/src/__tests__/migrations/update-id-to-bigint.test.ts +++ b/packages/plugins/collection-manager/src/__tests__/migrations/update-id-to-bigint.test.ts @@ -1,10 +1,10 @@ import { Database, MigrationContext } from '@nocobase/database'; -import Migrator from '../../migrations/20221121111112-update-id-to-bigint'; +import Migrator from '../../migrations/20221121111113-update-id-to-bigint'; const excludeSqlite = () => (process.env.DB_DIALECT != 'sqlite' ? describe : describe.skip); -import { createApp } from '../index'; import { MockServer } from '@nocobase/test'; +import { createApp } from '../index'; excludeSqlite()('update id to bigint test', () => { let app: MockServer; diff --git a/packages/plugins/collection-manager/src/migrations/20221121111112-update-id-to-bigint.ts b/packages/plugins/collection-manager/src/migrations/20221121111113-update-id-to-bigint.ts similarity index 92% rename from packages/plugins/collection-manager/src/migrations/20221121111112-update-id-to-bigint.ts rename to packages/plugins/collection-manager/src/migrations/20221121111113-update-id-to-bigint.ts index 3f361c830..e91c8b8b9 100644 --- a/packages/plugins/collection-manager/src/migrations/20221121111112-update-id-to-bigint.ts +++ b/packages/plugins/collection-manager/src/migrations/20221121111113-update-id-to-bigint.ts @@ -1,5 +1,5 @@ -import { Migration } from '@nocobase/server'; import { DataTypes } from '@nocobase/database'; +import { Migration } from '@nocobase/server'; export default class UpdateIdToBigIntMigrator extends Migration { async up() { @@ -32,6 +32,19 @@ export default class UpdateIdToBigIntMigrator extends Migration { const updateToBigInt = async (model, fieldName) => { let sql; + const fieldRecord = await db.getCollection('fields').repository.findOne({ + filter: { + collectionName: model.name, + name: fieldName, + type: 'integer', + }, + }); + + if (fieldRecord) { + fieldRecord.set('type', 'bigInt'); + await fieldRecord.save(); + } + const tableName = model.tableName; if (model.rawAttributes[fieldName].type instanceof DataTypes.INTEGER) { @@ -67,20 +80,6 @@ export default class UpdateIdToBigIntMigrator extends Migration { throw err; } - const collection = db.modelCollection.get(model); - const fieldRecord = await db.getCollection('fields').repository.findOne({ - filter: { - collectionName: collection.name, - name: fieldName, - type: 'integer', - }, - }); - - if (fieldRecord) { - fieldRecord.set('type', 'bigInt'); - await fieldRecord.save(); - } - if (db.inDialect('postgres')) { const sequenceQuery = `SELECT pg_get_serial_sequence('"${model.tableName}"', '${fieldName}');`; const [result] = await this.sequelize.query(sequenceQuery, {});