mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-15 05:19:49 +00:00
feat(api): filter secrets by metadata
This commit is contained in:
@@ -414,6 +414,22 @@ export const secretV2BridgeDALFactory = (db: TDbClient) => {
|
||||
`${TableName.SecretTag}.id`
|
||||
)
|
||||
.leftJoin(TableName.ResourceMetadata, `${TableName.SecretV2}.id`, `${TableName.ResourceMetadata}.secretId`)
|
||||
.where((bd) => {
|
||||
if (filters?.secretMetadata && filters.secretMetadata?.length > 0) {
|
||||
filters.secretMetadata.forEach((meta) => {
|
||||
void bd.whereExists((qb) => {
|
||||
void qb
|
||||
.select("secretId")
|
||||
.from(TableName.ResourceMetadata)
|
||||
.whereRaw(`"${TableName.ResourceMetadata}"."secretId" = "${TableName.SecretV2}"."id"`)
|
||||
.where({
|
||||
[`${TableName.ResourceMetadata}.key` as string]: meta.key,
|
||||
[`${TableName.ResourceMetadata}.value` as string]: meta.value
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
})
|
||||
.select(
|
||||
selectAllTableCols(TableName.SecretV2),
|
||||
db.raw(
|
||||
@@ -481,6 +497,19 @@ export const secretV2BridgeDALFactory = (db: TDbClient) => {
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
// if (secretMetadata) {
|
||||
// return data.filter((s) => {
|
||||
// if (!s.secretMetadata.length) return false;
|
||||
|
||||
// return secretMetadata.every((m) => {
|
||||
// const secretMeta = s.secretMetadata.find((sm) => sm.key === m.key);
|
||||
// if (!secretMeta) return false;
|
||||
// return secretMeta.value === m.value;
|
||||
// });
|
||||
// });
|
||||
// }
|
||||
|
||||
return data;
|
||||
} catch (error) {
|
||||
throw new DatabaseError({ error, name: "get all secret" });
|
||||
|
||||
@@ -30,6 +30,10 @@ export type TGetSecretsDTO = {
|
||||
includeImports?: boolean;
|
||||
recursive?: boolean;
|
||||
tagSlugs?: string[];
|
||||
secretMetadata?: {
|
||||
key: string;
|
||||
value: string;
|
||||
}[];
|
||||
orderBy?: SecretsOrderBy;
|
||||
orderDirection?: OrderByDirection;
|
||||
offset?: number;
|
||||
@@ -310,6 +314,7 @@ export type TFindSecretsByFolderIdsFilter = {
|
||||
orderDirection?: OrderByDirection;
|
||||
search?: string;
|
||||
tagSlugs?: string[];
|
||||
secretMetadata?: { key: string; value: string }[];
|
||||
includeTagsInSearch?: boolean;
|
||||
keys?: string[];
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user