mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-06 08:27:22 +00:00
Merge pull request #1557 from akhilmhdh/feat/temp-roles
feat(server): removed stream in project multi role migration
This commit is contained in:
@@ -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");
|
||||||
|
|||||||
Reference in New Issue
Block a user