Merge pull request #1557 from akhilmhdh/feat/temp-roles

feat(server): removed stream in project multi role migration
This commit is contained in:
Maidul Islam
2024-03-12 13:37:09 -04:00
committed by GitHub
2 changed files with 26 additions and 48 deletions
@@ -1,6 +1,6 @@
import { Knex } from "knex"; import { Knex } from "knex";
import { TableName, TProjectUserMembershipRolesInsert } from "../schemas"; import { TableName } from "../schemas";
import { createOnUpdateTrigger, dropOnUpdateTrigger } from "../utils"; import { createOnUpdateTrigger, dropOnUpdateTrigger } from "../utils";
export async function up(knex: Knex): Promise<void> { export async function up(knex: Knex): Promise<void> {
@@ -25,29 +25,18 @@ export async function up(knex: Knex): Promise<void> {
await createOnUpdateTrigger(knex, TableName.ProjectUserMembershipRole); await createOnUpdateTrigger(knex, TableName.ProjectUserMembershipRole);
const projectMembershipStream = knex.select("*").from(TableName.ProjectMembership).stream(); const projectMemberships = await knex(TableName.ProjectMembership).select(
const chunkSize = 1000; "id",
let rows: TProjectUserMembershipRolesInsert[] = []; "role",
for await (const row of projectMembershipStream) { "createdAt",
// disabling eslint just this part because the latest ts type doesn't have these values after migration as they are removed "updatedAt",
/* eslint-disable */ knex.ref("roleId").withSchema(TableName.ProjectMembership).as("customRoleId")
// @ts-ignore - created at is inserted from old data );
rows = rows.concat({ if (projectMemberships.length)
// @ts-ignore - missing in ts type post migration await knex.batchInsert(
role: row.role, TableName.ProjectUserMembershipRole,
// @ts-ignore - missing in ts type post migration projectMemberships.map((data) => ({ ...data, projectMembershipId: data.id }))
customRoleId: row.roleId, );
projectMembershipId: row.id,
createdAt: row.createdAt,
updatedAt: row.updatedAt
});
/* eslint-disable */
if (rows.length >= chunkSize) {
await knex(TableName.ProjectUserMembershipRole).insert(rows);
rows.splice(0, rows.length);
}
}
if (rows.length) await knex(TableName.ProjectUserMembershipRole).insert(rows);
// will be dropped later // will be dropped later
// await knex.schema.alterTable(TableName.ProjectMembership, (t) => { // await knex.schema.alterTable(TableName.ProjectMembership, (t) => {
// t.dropColumn("roleId"); // t.dropColumn("roleId");
@@ -1,6 +1,6 @@
import { Knex } from "knex"; import { Knex } from "knex";
import { TableName, TIdentityProjectMembershipRoleInsert } from "../schemas"; import { TableName } from "../schemas";
import { createOnUpdateTrigger, dropOnUpdateTrigger } from "../utils"; import { createOnUpdateTrigger, dropOnUpdateTrigger } from "../utils";
export async function up(knex: Knex): Promise<void> { export async function up(knex: Knex): Promise<void> {
@@ -28,29 +28,18 @@ export async function up(knex: Knex): Promise<void> {
await createOnUpdateTrigger(knex, TableName.IdentityProjectMembershipRole); await createOnUpdateTrigger(knex, TableName.IdentityProjectMembershipRole);
const projectMembershipStream = knex.select("*").from(TableName.IdentityProjectMembership).stream(); const identityMemberships = await knex(TableName.IdentityProjectMembership).select(
const chunkSize = 1000; "id",
let rows: TIdentityProjectMembershipRoleInsert[] = []; "role",
for await (const row of projectMembershipStream) { "createdAt",
// disabling eslint just this part because the latest ts type doesn't have these values after migration as they are removed "updatedAt",
/* eslint-disable */ knex.ref("roleId").withSchema(TableName.IdentityProjectMembership).as("customRoleId")
// @ts-ignore - created at is inserted from old data );
rows = rows.concat({ if (identityMemberships.length)
// @ts-ignore - missing in ts type post migration await knex.batchInsert(
role: row.role, TableName.IdentityProjectMembershipRole,
// @ts-ignore - missing in ts type post migration identityMemberships.map((data) => ({ ...data, projectMembershipId: data.id }))
customRoleId: row.roleId, );
projectMembershipId: row.id,
createdAt: row.createdAt,
updatedAt: row.updatedAt
});
/* eslint-disable */
if (rows.length >= chunkSize) {
await knex(TableName.IdentityProjectMembershipRole).insert(rows);
rows.splice(0, rows.length);
}
}
if(rows.length) await knex(TableName.IdentityProjectMembershipRole).insert(rows);
// await knex.schema.alterTable(TableName.IdentityProjectMembership, (t) => { // await knex.schema.alterTable(TableName.IdentityProjectMembership, (t) => {
// t.dropColumn("roleId"); // t.dropColumn("roleId");
// t.dropColumn("role"); // t.dropColumn("role");