fix: update to bigint (#1117)

* fix: update sequence and foreignKey

* chore: rename migration

* fix: single foreign field update

* fix: update bigint

* fix: rename

Co-authored-by: chenos <chenlinxh@gmail.com>
This commit is contained in:
ChengLei Shao 2022-11-21 18:50:23 +08:00 committed by GitHub
parent f4e850059a
commit d72123c5b0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -12,12 +12,6 @@ export default class UpdateIdToBigIntMigrator extends Migration {
name: 'id',
type: 'integer',
},
{
options: {
isForeignKey: true,
},
type: 'integer',
},
],
},
values: {
@ -39,6 +33,7 @@ export default class UpdateIdToBigIntMigrator extends Migration {
let sql;
const tableName = model.tableName;
if (model.rawAttributes[fieldName].type instanceof DataTypes.INTEGER) {
if (db.inDialect('postgres')) {
sql = `ALTER TABLE "${tableName}" ALTER COLUMN "${fieldName}" SET DATA TYPE BIGINT;`;
@ -66,7 +61,7 @@ export default class UpdateIdToBigIntMigrator extends Migration {
try {
await this.sequelize.query(sql, {});
} catch (err) {
if (err.message.includes('does not exist')) {
if (err.message.includes('does not exist') || err.message.includes('cannot alter inherited column')) {
return;
}
throw err;
@ -99,6 +94,24 @@ export default class UpdateIdToBigIntMigrator extends Migration {
}
};
const singleForeignFields = await db.getCollection('fields').repository.find({
filter: {
options: {
isForeignKey: true,
},
type: 'integer',
},
});
for (const field of singleForeignFields) {
const collection = db.getCollection(field.get('collectionName'));
if (!collection) {
console.log('collection not found', field.get('collectionName'));
}
await updateToBigInt(collection.model, field.get('name'));
}
//@ts-ignore
this.app.db.sequelize.modelManager.forEachModel((model) => {
models.push(model);