mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-06 18:27:19 +00:00
Update project-queue.ts
This commit is contained in:
@@ -49,7 +49,7 @@ export type TProjectQueueFactory = ReturnType<typeof projectQueueFactory>;
|
|||||||
|
|
||||||
type TProjectQueueFactoryDep = {
|
type TProjectQueueFactoryDep = {
|
||||||
queueService: TQueueServiceFactory;
|
queueService: TQueueServiceFactory;
|
||||||
secretVersionDAL: Pick<TSecretVersionDALFactory, "find" | "bulkUpdateNoVersionIncrement">;
|
secretVersionDAL: Pick<TSecretVersionDALFactory, "find" | "bulkUpdateNoVersionIncrement" | "delete">;
|
||||||
folderDAL: Pick<TSecretFolderDALFactory, "find">;
|
folderDAL: Pick<TSecretFolderDALFactory, "find">;
|
||||||
secretDAL: Pick<TSecretDALFactory, "find" | "bulkUpdateNoVersionIncrement">;
|
secretDAL: Pick<TSecretDALFactory, "find" | "bulkUpdateNoVersionIncrement">;
|
||||||
projectKeyDAL: Pick<TProjectKeyDALFactory, "findLatestProjectKey" | "find" | "create" | "delete" | "insertMany">;
|
projectKeyDAL: Pick<TProjectKeyDALFactory, "findLatestProjectKey" | "find" | "create" | "delete" | "insertMany">;
|
||||||
@@ -133,6 +133,7 @@ export const projectQueueFactory = ({
|
|||||||
const secrets: TSecrets[] = [];
|
const secrets: TSecrets[] = [];
|
||||||
const secretVersions: TSecretVersions[] = [];
|
const secretVersions: TSecretVersions[] = [];
|
||||||
const approvalSecrets: TSecretApprovalRequestsSecrets[] = [];
|
const approvalSecrets: TSecretApprovalRequestsSecrets[] = [];
|
||||||
|
const folderSecretVersionIdsToDelete: string[] = [];
|
||||||
for (const folder of projectFolders) {
|
for (const folder of projectFolders) {
|
||||||
const folderSecrets = await secretDAL.find({ folderId: folder.id });
|
const folderSecrets = await secretDAL.find({ folderId: folder.id });
|
||||||
|
|
||||||
@@ -142,9 +143,21 @@ export const projectQueueFactory = ({
|
|||||||
},
|
},
|
||||||
// Only get the latest 100 secret versions for each folder.
|
// Only get the latest 100 secret versions for each folder.
|
||||||
{
|
{
|
||||||
limit: 100
|
limit: 100,
|
||||||
|
sort: [["createdAt", "desc"]]
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const deletedSecretVersions = await secretVersionDAL.find(
|
||||||
|
{
|
||||||
|
folderId: folder.id
|
||||||
|
},
|
||||||
|
{
|
||||||
|
offset: 100
|
||||||
|
}
|
||||||
|
);
|
||||||
|
folderSecretVersionIdsToDelete.push(...deletedSecretVersions.map((el) => el.id));
|
||||||
|
|
||||||
const approvalRequests = await secretApprovalRequestDAL.find({
|
const approvalRequests = await secretApprovalRequestDAL.find({
|
||||||
status: RequestState.Open,
|
status: RequestState.Open,
|
||||||
folderId: folder.id
|
folderId: folder.id
|
||||||
@@ -481,6 +494,16 @@ export const projectQueueFactory = ({
|
|||||||
tx
|
tx
|
||||||
);
|
);
|
||||||
|
|
||||||
|
// Delete all secret versions that are no longer needed. We only store the latest 100 versions for each secret.
|
||||||
|
await secretVersionDAL.delete(
|
||||||
|
{
|
||||||
|
$in: {
|
||||||
|
id: folderSecretVersionIdsToDelete
|
||||||
|
}
|
||||||
|
},
|
||||||
|
tx
|
||||||
|
);
|
||||||
|
|
||||||
if (
|
if (
|
||||||
secretUpdates.length !== updatedSecrets.length ||
|
secretUpdates.length !== updatedSecrets.length ||
|
||||||
secretVersionUpdates.length !== updatedSecretVersions.length ||
|
secretVersionUpdates.length !== updatedSecretVersions.length ||
|
||||||
|
|||||||
Reference in New Issue
Block a user