Files
AnimeTV-Backend/src/utils/databases/prisma/connection.ts
2026-01-27 22:29:21 +07:00

36 lines
1013 B
TypeScript

import { PrismaClient } from "@prisma/client";
import { PrismaPg } from "@prisma/adapter-pg";
import pg from "pg";
import dotenv from "dotenv";
import { generateUUIDv7 } from "../../../helpers/databases/uuidv7";
dotenv.config();
const pool = new pg.Pool({
connectionString: process.env.DATABASE_URL,
});
const adapter = new PrismaPg(pool);
export const prisma = new PrismaClient({ adapter }).$extends({
query: {
$allModels: {
async create({ args, query }) {
if (
args.data &&
typeof args.data === "object" &&
!("id" in args.data)
) {
// do nothing
} else if (args.data && !args.data.id) {
(args.data as { id?: string }).id = generateUUIDv7();
}
return query(args);
},
async upsert({ args, query }) {
const create = args.create as any;
if (create && !create.id) create.id = generateUUIDv7();
return query(args);
},
},
},
});