mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-07 01:27:41 +00:00
Fix case for multiple projects messing with the joins
This commit is contained in:
@@ -3,23 +3,43 @@ import { Knex } from "knex";
|
|||||||
import { TableName } from "@app/db/schemas";
|
import { TableName } from "@app/db/schemas";
|
||||||
|
|
||||||
export async function up(knex: Knex): Promise<void> {
|
export async function up(knex: Knex): Promise<void> {
|
||||||
if (!(await knex.schema.hasColumn(TableName.SecretVersionV2, "userActorId"))) {
|
if (await knex.schema.hasTable(TableName.SecretVersionV2)) {
|
||||||
await knex.schema.alterTable(TableName.SecretVersionV2, (t) => {
|
await knex.schema.alterTable(TableName.SecretVersionV2, (t) => {
|
||||||
t.uuid("userActorId");
|
const hasSecretVersionV2UserActorId = await knex.schema.hasColumn(TableName.SecretVersionV2, "userActorId");
|
||||||
t.foreign("userActorId").references("id").inTable(TableName.Users);
|
const hasSecretVersionV2IdentityActorId = await knex.schema.hasColumn(TableName.SecretVersionV2, "identityActorId");
|
||||||
t.uuid("identityActorId");
|
const hasSecretVersionV2ActorType = await knex.schema.hasColumn(TableName.SecretVersionV2, "actorType");
|
||||||
t.foreign("identityActorId").references("id").inTable(TableName.Identity);
|
|
||||||
t.string("actorType");
|
if (!hasSecretVersionV2UserActorId) {
|
||||||
|
t.uuid("userActorId");
|
||||||
|
t.foreign("userActorId").references("id").inTable(TableName.Users);
|
||||||
|
}
|
||||||
|
if (!hasSecretVersionV2IdentityActorId) {
|
||||||
|
t.uuid("identityActorId");
|
||||||
|
t.foreign("identityActorId").references("id").inTable(TableName.Identity);
|
||||||
|
}
|
||||||
|
if (!hasSecretVersionV2ActorType) {
|
||||||
|
t.string("actorType");
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function down(knex: Knex): Promise<void> {
|
export async function down(knex: Knex): Promise<void> {
|
||||||
if (await knex.schema.hasColumn(TableName.SecretVersionV2, "userActorId")) {
|
if (await knex.schema.hasTable(TableName.SecretVersionV2)) {
|
||||||
|
const hasSecretVersionV2UserActorId = await knex.schema.hasColumn(TableName.SecretVersionV2, "userActorId");
|
||||||
|
const hasSecretVersionV2IdentityActorId = await knex.schema.hasColumn(TableName.SecretVersionV2, "identityActorId");
|
||||||
|
const hasSecretVersionV2ActorType = await knex.schema.hasColumn(TableName.SecretVersionV2, "actorType");
|
||||||
|
|
||||||
await knex.schema.alterTable(TableName.SecretVersionV2, (t) => {
|
await knex.schema.alterTable(TableName.SecretVersionV2, (t) => {
|
||||||
t.dropColumn("userActorId");
|
if (hasSecretVersionV2UserActorId) {
|
||||||
t.dropColumn("identityActorId");
|
t.dropColumn("userActorId");
|
||||||
t.dropColumn("actorType");
|
}
|
||||||
|
if (hasSecretVersionV2IdentityActorId) {
|
||||||
|
t.dropColumn("identityActorId");
|
||||||
|
}
|
||||||
|
if (hasSecretVersionV2ActorType) {
|
||||||
|
t.dropColumn("actorType");
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -128,7 +128,6 @@ export const secretVersionV2BridgeDALFactory = (db: TDbClient) => {
|
|||||||
) => {
|
) => {
|
||||||
try {
|
try {
|
||||||
const query = (tx || db)(TableName.SecretVersionV2)
|
const query = (tx || db)(TableName.SecretVersionV2)
|
||||||
.where(`${TableName.SecretVersionV2}.secretId`, secretId)
|
|
||||||
.leftJoin(TableName.Users, `${TableName.Users}.id`, `${TableName.SecretVersionV2}.userActorId`)
|
.leftJoin(TableName.Users, `${TableName.Users}.id`, `${TableName.SecretVersionV2}.userActorId`)
|
||||||
.leftJoin(
|
.leftJoin(
|
||||||
TableName.ProjectMembership,
|
TableName.ProjectMembership,
|
||||||
@@ -136,8 +135,14 @@ export const secretVersionV2BridgeDALFactory = (db: TDbClient) => {
|
|||||||
`${TableName.SecretVersionV2}.userActorId`
|
`${TableName.SecretVersionV2}.userActorId`
|
||||||
)
|
)
|
||||||
.leftJoin(TableName.Identity, `${TableName.Identity}.id`, `${TableName.SecretVersionV2}.identityActorId`)
|
.leftJoin(TableName.Identity, `${TableName.Identity}.id`, `${TableName.SecretVersionV2}.identityActorId`)
|
||||||
.where(`${TableName.ProjectMembership}.projectId`, projectId)
|
.where((qb) => {
|
||||||
.orWhereNull(`${TableName.ProjectMembership}.projectId`)
|
void qb.where(`${TableName.SecretVersionV2}.secretId`, secretId);
|
||||||
|
void qb.where(`${TableName.ProjectMembership}.projectId`, projectId);
|
||||||
|
})
|
||||||
|
.orWhere((qb) => {
|
||||||
|
void qb.where(`${TableName.SecretVersionV2}.secretId`, secretId);
|
||||||
|
void qb.whereNull(`${TableName.ProjectMembership}.projectId`);
|
||||||
|
})
|
||||||
.select(
|
.select(
|
||||||
selectAllTableCols(TableName.SecretVersionV2),
|
selectAllTableCols(TableName.SecretVersionV2),
|
||||||
`${TableName.Users}.username as userActorName`,
|
`${TableName.Users}.username as userActorName`,
|
||||||
|
|||||||
Reference in New Issue
Block a user