misc: added transaction for cert template create and update

This commit is contained in:
Sheen Capadngan
2024-08-28 13:45:25 +08:00
parent 7ac4ad3194
commit 0ab7a4e713
2 changed files with 47 additions and 35 deletions
@@ -1,3 +1,5 @@
import { Knex } from "knex";
import { TDbClient } from "@app/db"; import { TDbClient } from "@app/db";
import { TableName } from "@app/db/schemas"; import { TableName } from "@app/db/schemas";
import { DatabaseError } from "@app/lib/errors"; import { DatabaseError } from "@app/lib/errors";
@@ -30,10 +32,9 @@ export const certificateTemplateDALFactory = (db: TDbClient) => {
} }
}; };
const getById = async (id: string) => { const getById = async (id: string, tx?: Knex) => {
try { try {
const certTemplate = await db const certTemplate = await (tx || db.replicaNode())(TableName.CertificateTemplate)
.replicaNode()(TableName.CertificateTemplate)
.join( .join(
TableName.CertificateAuthority, TableName.CertificateAuthority,
`${TableName.CertificateAuthority}.id`, `${TableName.CertificateAuthority}.id`,
@@ -75,16 +75,20 @@ export const certificateTemplateServiceFactory = ({
ProjectPermissionSub.CertificateTemplates ProjectPermissionSub.CertificateTemplates
); );
const { id } = await certificateTemplateDAL.create({ return certificateTemplateDAL.transaction(async (tx) => {
const { id } = await certificateTemplateDAL.create(
{
caId, caId,
pkiCollectionId, pkiCollectionId,
name, name,
commonName, commonName,
subjectAlternativeName, subjectAlternativeName,
ttl ttl
}); },
tx
);
const certificateTemplate = await certificateTemplateDAL.getById(id); const certificateTemplate = await certificateTemplateDAL.getById(id, tx);
if (!certificateTemplate) { if (!certificateTemplate) {
throw new NotFoundError({ throw new NotFoundError({
message: "Certificate template not found" message: "Certificate template not found"
@@ -92,6 +96,7 @@ export const certificateTemplateServiceFactory = ({
} }
return certificateTemplate; return certificateTemplate;
});
}; };
const updateCertTemplate = async ({ const updateCertTemplate = async ({
@@ -136,16 +141,21 @@ export const certificateTemplateServiceFactory = ({
} }
} }
await certificateTemplateDAL.updateById(certTemplate.id, { return certificateTemplateDAL.transaction(async (tx) => {
await certificateTemplateDAL.updateById(
certTemplate.id,
{
caId, caId,
pkiCollectionId, pkiCollectionId,
commonName, commonName,
subjectAlternativeName, subjectAlternativeName,
name, name,
ttl ttl
}); },
tx
);
const updatedTemplate = await certificateTemplateDAL.getById(id); const updatedTemplate = await certificateTemplateDAL.getById(id, tx);
if (!updatedTemplate) { if (!updatedTemplate) {
throw new NotFoundError({ throw new NotFoundError({
message: "Certificate template not found" message: "Certificate template not found"
@@ -153,6 +163,7 @@ export const certificateTemplateServiceFactory = ({
} }
return updatedTemplate; return updatedTemplate;
});
}; };
const deleteCertTemplate = async ({ id, actorId, actorAuthMethod, actor, actorOrgId }: TDeleteCertTemplateDTO) => { const deleteCertTemplate = async ({ id, actorId, actorAuthMethod, actor, actorOrgId }: TDeleteCertTemplateDTO) => {