mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-10 20:28:54 +00:00
35 lines
1.1 KiB
TypeScript
35 lines
1.1 KiB
TypeScript
import { TDbClient } from "@app/db";
|
|
import { TableName } from "@app/db/schemas";
|
|
import { DatabaseError } from "@app/lib/errors";
|
|
import { ormify } from "@app/lib/knex";
|
|
|
|
export type TCertificateDALFactory = ReturnType<typeof certificateDALFactory>;
|
|
|
|
export const certificateDALFactory = (db: TDbClient) => {
|
|
const certificateOrm = ormify(db, TableName.Certificate);
|
|
|
|
const countCertificatesInProject = async (projectId: string) => {
|
|
try {
|
|
interface CountResult {
|
|
count: string;
|
|
}
|
|
|
|
const count = await db(TableName.Certificate)
|
|
.join(TableName.CertificateAuthority, `${TableName.Certificate}.caId`, `${TableName.CertificateAuthority}.id`)
|
|
.join(TableName.Project, `${TableName.CertificateAuthority}.projectId`, `${TableName.Project}.id`)
|
|
.where(`${TableName.Project}.id`, projectId)
|
|
.count("*")
|
|
.first();
|
|
|
|
return parseInt((count as unknown as CountResult).count || "0", 10);
|
|
} catch (error) {
|
|
throw new DatabaseError({ error, name: "Count all project certificates" });
|
|
}
|
|
};
|
|
|
|
return {
|
|
...certificateOrm,
|
|
countCertificatesInProject
|
|
};
|
|
};
|