feat(infisical-pg): fixed secret deletion not getting triggered

This commit is contained in:
Akhil Mohan
2024-01-27 12:38:23 +05:30
parent 9c2ef15314
commit e46e87d758
4 changed files with 43 additions and 12 deletions
@@ -15,7 +15,11 @@ import { TSecretVersionDalFactory } from "@app/services/secret/secret-version-da
import { TSecretRotationDalFactory } from "../secret-rotation-dal";
import { rotationTemplates } from "../templates";
import { TProviderFunctionTypes, TSecretRotationProviderTemplate } from "../templates/types";
import {
TDbProviderClients,
TProviderFunctionTypes,
TSecretRotationProviderTemplate
} from "../templates/types";
import {
getDbSetQuery,
secretRotationDbFn,
@@ -79,8 +83,21 @@ export const secretRotationQueueFactory = ({
);
};
const removeFromQueue = async (rotationId: string) =>
queue.stopRepeatableJob(QueueName.SecretRotation, rotationId);
const removeFromQueue = async (rotationId: string, interval: number) => {
const appCfg = getConfig();
await queue.stopRepeatableJob(
QueueName.SecretRotation,
QueueJobs.SecretRotation,
{
// on prod it this will be in days, in development this will be second
every:
appCfg.NODE_ENV === "development"
? secondsToMillis(interval)
: daysToMillisecond(interval)
},
rotationId
);
};
queue.start(QueueName.SecretRotation, async (job) => {
const { rotationId } = job.data;
@@ -155,7 +172,10 @@ export const secretRotationQueueFactory = ({
database,
port,
ca: ca as string,
client: provider.template.client
client:
provider.template.client === TDbProviderClients.MySql
? "mysql2"
: provider.template.client
} as TSecretRotationDbFn;
// set function
await secretRotationDbFn({
@@ -244,12 +264,12 @@ export const secretRotationQueueFactory = ({
tx
);
});
logger.info("Finished logging: rotation id: ", rotationId);
logger.info("Finished rotating: rotation id: ", rotationId);
} catch (error) {
logger.error(error);
if (error instanceof DisableRotationErrors) {
if (job.id) {
queue.stopRepeatableJob(QueueName.SecretRotation, job.id);
queue.stopRepeatableJobByJobId(QueueName.SecretRotation, job.id);
}
}
@@ -195,7 +195,7 @@ export const secretRotationServiceFactory = ({
ProjectPermissionActions.Edit,
ProjectPermissionSub.SecretRotation
);
await secretRotationQueue.removeFromQueue(doc.id);
await secretRotationQueue.removeFromQueue(doc.id, doc.interval);
await secretRotationQueue.addToQueue(doc.id, doc.interval);
return doc;
};
@@ -215,7 +215,7 @@ export const secretRotationServiceFactory = ({
);
const deletedDoc = await secretRotationDal.transaction(async (tx) => {
const strat = await secretRotationDal.deleteById(rotationId, tx);
await secretRotationQueue.removeFromQueue(strat.id);
await secretRotationQueue.removeFromQueue(strat.id, strat.interval);
return strat;
});
return { ...doc, ...deletedDoc };