Skip to content

Commit

Permalink
fix(schemas): fix init account center alter run in chunks (#6823)
Browse files Browse the repository at this point in the history
  • Loading branch information
wangsijie authored Nov 20, 2024
1 parent 7ebef18 commit 80ae0bb
Showing 1 changed file with 27 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,34 @@ import type { AlterationScript } from '../lib/types/alteration.js';

const alteration: AlterationScript = {
up: async (pool) => {
const tenants = await pool.many<{ id: string }>(sql`
select id from tenants;
`);
const values = tenants.map((tenant) => sql`(${tenant.id}, 'default')`);
// Process in chunks of 1000 tenants
const batchSize = 1000;
// eslint-disable-next-line @silverhand/fp/no-let
let offset = 0;

// Other fileds have default values so we don't need to set them here
await pool.query(sql`
insert into account_centers (tenant_id, id)
values ${sql.join(values, sql`, `)};
`);
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition, no-constant-condition
while (true) {
// eslint-disable-next-line no-await-in-loop
const tenants = await pool.any<{ id: string }>(sql`
select id from tenants
order by created_at asc
limit ${batchSize} offset ${offset};
`);

if (tenants.length === 0) {
break;
}

const values = tenants.map((tenant) => sql`(${tenant.id}, 'default')`);
// eslint-disable-next-line no-await-in-loop
await pool.query(sql`
insert into account_centers (tenant_id, id)
values ${sql.join(values, sql`, `)};
`);

// eslint-disable-next-line @silverhand/fp/no-mutation
offset += batchSize;
}
},
down: async (pool) => {
await pool.query(sql`
Expand Down

0 comments on commit 80ae0bb

Please sign in to comment.