import { PostgresDialect } from "kysely"; import { Pool } from "pg"; import { KyselyAuth } from "@auth/kysely-adapter"; import { CamelCasePlugin } from "kysely"; import type { GeneratedAlways } from "kysely"; interface Database { User: { id: string; name: string | null; email: string; emailVerified: Date | null; image: string | null; }; Account: { id: GeneratedAlways; userId: string; type: "oidc" | "oauth" | "email" | "webauthn"; provider: string; providerAccountId: string; refresh_token: string | undefined; access_token: string | undefined; expires_at: number | undefined; token_type: Lowercase | undefined; scope: string | undefined; id_token: string | undefined; session_state: string | undefined; }; Session: { id: GeneratedAlways; userId: string; sessionToken: string; expires: Date; }; VerificationToken: { identifier: string; token: string; expires: Date; }; WhatsAppBot: { id: GeneratedAlways; name: string; phoneNumber: string; createdBy: string; createdAt: Date; updatedAt: Date; }; FacebookBot: { id: GeneratedAlways; name: string; createdBy: string; createdAt: Date; updatedAt: Date; }; VoiceBot: { id: GeneratedAlways; name: string; createdBy: string; createdAt: Date; updatedAt: Date; }; SignalBot: { id: GeneratedAlways; name: string; phoneNumber: string; createdBy: string; createdAt: Date; updatedAt: Date; }; } export const db = new KyselyAuth({ dialect: new PostgresDialect({ pool: new Pool({ host: process.env.DATABASE_HOST, database: process.env.DATABASE_NAME, user: process.env.DATABASE_USER, password: process.env.DATABASE_PASSWORD, }), }), plugins: [new CamelCasePlugin()], });