mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-08 10:28:00 +00:00
Fix dal dashboard query for secret rotations
This commit is contained in:
@@ -214,7 +214,10 @@ export const secretRotationV2DALFactory = (
|
|||||||
tx?: Knex
|
tx?: Knex
|
||||||
) => {
|
) => {
|
||||||
try {
|
try {
|
||||||
const extendedQuery = baseSecretRotationV2Query({ filter, db, tx, options })
|
const { limit, offset = 0, sort, ...queryOptions } = options || {};
|
||||||
|
const baseOptions = { ...queryOptions };
|
||||||
|
|
||||||
|
const subquery = baseSecretRotationV2Query({ filter, db, tx, options: baseOptions })
|
||||||
.join(
|
.join(
|
||||||
TableName.SecretRotationV2SecretMapping,
|
TableName.SecretRotationV2SecretMapping,
|
||||||
`${TableName.SecretRotationV2SecretMapping}.rotationId`,
|
`${TableName.SecretRotationV2SecretMapping}.rotationId`,
|
||||||
@@ -233,6 +236,7 @@ export const secretRotationV2DALFactory = (
|
|||||||
)
|
)
|
||||||
.leftJoin(TableName.ResourceMetadata, `${TableName.SecretV2}.id`, `${TableName.ResourceMetadata}.secretId`)
|
.leftJoin(TableName.ResourceMetadata, `${TableName.SecretV2}.id`, `${TableName.ResourceMetadata}.secretId`)
|
||||||
.select(
|
.select(
|
||||||
|
selectAllTableCols(TableName.SecretRotationV2),
|
||||||
db.ref("id").withSchema(TableName.SecretV2).as("secretId"),
|
db.ref("id").withSchema(TableName.SecretV2).as("secretId"),
|
||||||
db.ref("key").withSchema(TableName.SecretV2).as("secretKey"),
|
db.ref("key").withSchema(TableName.SecretV2).as("secretKey"),
|
||||||
db.ref("version").withSchema(TableName.SecretV2).as("secretVersion"),
|
db.ref("version").withSchema(TableName.SecretV2).as("secretVersion"),
|
||||||
@@ -252,18 +256,31 @@ export const secretRotationV2DALFactory = (
|
|||||||
db.ref("slug").withSchema(TableName.SecretTag).as("tagSlug"),
|
db.ref("slug").withSchema(TableName.SecretTag).as("tagSlug"),
|
||||||
db.ref("id").withSchema(TableName.ResourceMetadata).as("metadataId"),
|
db.ref("id").withSchema(TableName.ResourceMetadata).as("metadataId"),
|
||||||
db.ref("key").withSchema(TableName.ResourceMetadata).as("metadataKey"),
|
db.ref("key").withSchema(TableName.ResourceMetadata).as("metadataKey"),
|
||||||
db.ref("value").withSchema(TableName.ResourceMetadata).as("metadataValue")
|
db.ref("value").withSchema(TableName.ResourceMetadata).as("metadataValue"),
|
||||||
|
db.raw(`DENSE_RANK() OVER (ORDER BY ${TableName.SecretRotationV2}."createdAt" DESC) as rank`)
|
||||||
);
|
);
|
||||||
|
|
||||||
if (search) {
|
if (search) {
|
||||||
void extendedQuery.where((query) => {
|
void subquery.where((qb) => {
|
||||||
void query
|
void qb
|
||||||
.whereILike(`${TableName.SecretV2}.key`, `%${search}%`)
|
.whereILike(`${TableName.SecretV2}.key`, `%${search}%`)
|
||||||
.orWhereILike(`${TableName.SecretRotationV2}.name`, `%${search}%`);
|
.orWhereILike(`${TableName.SecretRotationV2}.name`, `%${search}%`);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const secretRotations = await extendedQuery;
|
let secretRotations: Awaited<typeof subquery>;
|
||||||
|
if (limit !== undefined) {
|
||||||
|
const rankOffset = offset + 1;
|
||||||
|
const queryWithLimit = (tx || db)
|
||||||
|
.with("inner", subquery)
|
||||||
|
.select("*")
|
||||||
|
.from("inner")
|
||||||
|
.where("inner.rank", ">=", rankOffset)
|
||||||
|
.andWhere("inner.rank", "<", rankOffset + limit);
|
||||||
|
secretRotations = (await queryWithLimit) as unknown as Awaited<typeof subquery>;
|
||||||
|
} else {
|
||||||
|
secretRotations = await subquery;
|
||||||
|
}
|
||||||
|
|
||||||
if (!secretRotations.length) return [];
|
if (!secretRotations.length) return [];
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user