fix: migration in loop due to cornercase

This commit is contained in:
=
2024-11-16 00:37:57 +05:30
parent 796f76da46
commit d4cfd0b6ed

View File

@@ -2,7 +2,7 @@ import { Knex } from "knex";
import { TableName } from "../schemas";
const BATCH_SIZE = 30_000;
const BATCH_SIZE = 10_000;
export async function up(knex: Knex): Promise<void> {
const hasAuthMethodColumnAccessToken = await knex.schema.hasColumn(TableName.IdentityAccessToken, "authMethod");
@@ -12,7 +12,25 @@ export async function up(knex: Knex): Promise<void> {
t.string("authMethod").nullable();
});
let nullableAccessTokens = await knex(TableName.IdentityAccessToken).whereNull("authMethod").limit(BATCH_SIZE);
// first we remove identities without auth method that is unused
let nullableAuthMethodIdentities = [];
do {
const findNullableAuthMethodIdentities = knex(TableName.Identity)
.whereNull("authMethod")
.limit(BATCH_SIZE)
.select("id");
// eslint-disable-next-line no-await-in-loop
nullableAuthMethodIdentities = await knex(TableName.Identity)
.whereIn("id", findNullableAuthMethodIdentities)
.del()
.returning("id");
} while (nullableAuthMethodIdentities.length > 0);
let nullableAccessTokens = await knex(TableName.IdentityAccessToken)
.whereNull("authMethod")
.limit(BATCH_SIZE)
.select("id");
let totalUpdated = 0;
do {
@@ -33,7 +51,10 @@ export async function up(knex: Knex): Promise<void> {
});
// eslint-disable-next-line no-await-in-loop
nullableAccessTokens = await knex(TableName.IdentityAccessToken).whereNull("authMethod").limit(BATCH_SIZE);
nullableAccessTokens = await knex(TableName.IdentityAccessToken)
.whereNull("authMethod")
.limit(BATCH_SIZE)
.select("id");
totalUpdated += batchIds.length;
console.log(`Updated ${batchIds.length} access tokens in batch <> Total updated: ${totalUpdated}`);