misc: implemented secret approval request and project audit logs

This commit is contained in:
Sheen Capadngan
2024-09-04 01:48:08 +08:00
parent 604b0467f9
commit 8c03c160a9
11 changed files with 106 additions and 54 deletions
@@ -1,11 +1,25 @@
import { Knex } from "knex";
import { TDbClient } from "@app/db";
import { TableName } from "@app/db/schemas";
import { ormify } from "@app/lib/knex";
import { ormify, selectAllTableCols } from "@app/lib/knex";
export type TProjectSlackConfigDALFactory = ReturnType<typeof projectSlackConfigDALFactory>;
export const projectSlackConfigDALFactory = (db: TDbClient) => {
const projectSlackConfigOrm = ormify(db, TableName.ProjectSlackConfigs);
return projectSlackConfigOrm;
const getIntegrationDetailsByProject = (projectId: string, tx?: Knex) => {
return (tx || db.replicaNode())(TableName.ProjectSlackConfigs)
.join(
TableName.SlackIntegrations,
`${TableName.ProjectSlackConfigs}.slackIntegrationId`,
`${TableName.SlackIntegrations}.id`
)
.where("projectId", "=", projectId)
.select(selectAllTableCols(TableName.ProjectSlackConfigs), selectAllTableCols(TableName.SlackIntegrations))
.first();
};
return { ...projectSlackConfigOrm, getIntegrationDetailsByProject };
};
+4 -6
View File
@@ -3,14 +3,14 @@ import { Block, WebClient } from "@slack/web-api";
import { TKmsServiceFactory } from "../kms/kms-service";
import { KmsDataKey } from "../kms/kms-types";
import { TProjectDALFactory } from "../project/project-dal";
import { TSlackIntegrationDALFactory } from "./slack-integration-dal";
import { TProjectSlackConfigDALFactory } from "./project-slack-config-dal";
import { SlackTriggerFeature } from "./slack-types";
export const triggerSlackNotification = async ({
projectId,
payloadBlocks,
payloadMessage,
slackIntegrationDAL,
projectSlackConfigDAL,
projectDAL,
kmsService,
feature
@@ -18,15 +18,13 @@ export const triggerSlackNotification = async ({
projectId: string;
payloadBlocks: Block[];
payloadMessage: string;
slackIntegrationDAL: Pick<TSlackIntegrationDALFactory, "findOne">;
projectSlackConfigDAL: Pick<TProjectSlackConfigDALFactory, "getIntegrationDetailsByProject">;
projectDAL: Pick<TProjectDALFactory, "findById">;
kmsService: Pick<TKmsServiceFactory, "createCipherPairWithDataKey">;
feature: SlackTriggerFeature;
}) => {
const project = await projectDAL.findById(projectId);
const slackIntegration = await slackIntegrationDAL.findOne({
projectId
});
const slackIntegration = await projectSlackConfigDAL.getIntegrationDetailsByProject(project.id);
if (!slackIntegration) {
return;