Files
dokploy/packages/server/src/db/schema/certificate.ts
Mauricio Siu 6f5049efd5 styles: lint
2024-10-12 19:33:56 -06:00

68 lines
1.9 KiB
TypeScript

import { relations } from "drizzle-orm";
import { boolean, pgTable, text } from "drizzle-orm/pg-core";
import { createInsertSchema } from "drizzle-zod";
import { nanoid } from "nanoid";
import { z } from "zod";
import { admins } from "./admin";
import { server } from "./server";
import { generateAppName } from "./utils";
export const certificates = pgTable("certificate", {
certificateId: text("certificateId")
.notNull()
.primaryKey()
.$defaultFn(() => nanoid()),
name: text("name").notNull(),
certificateData: text("certificateData").notNull(),
privateKey: text("privateKey").notNull(),
certificatePath: text("certificatePath")
.notNull()
.$defaultFn(() => generateAppName("certificate"))
.unique(),
autoRenew: boolean("autoRenew"),
adminId: text("adminId").references(() => admins.adminId, {
onDelete: "cascade",
}),
serverId: text("serverId").references(() => server.serverId, {
onDelete: "cascade",
}),
});
export const certificatesRelations = relations(
certificates,
({ one, many }) => ({
server: one(server, {
fields: [certificates.serverId],
references: [server.serverId],
}),
admin: one(admins, {
fields: [certificates.adminId],
references: [admins.adminId],
}),
}),
);
export const apiCreateCertificate = createInsertSchema(certificates, {
name: z.string().min(1),
certificateData: z.string().min(1),
privateKey: z.string().min(1),
autoRenew: z.boolean().optional(),
serverId: z.string().optional(),
});
export const apiFindCertificate = z.object({
certificateId: z.string().min(1),
});
export const apiUpdateCertificate = z.object({
certificateId: z.string().min(1),
name: z.string().min(1).optional(),
certificateData: z.string().min(1).optional(),
privateKey: z.string().min(1).optional(),
autoRenew: z.boolean().optional(),
});
export const apiDeleteCertificate = z.object({
certificateId: z.string().min(1),
});