link-stack/apps/bridge-frontend/app/_lib/database.ts

103 lines
2.2 KiB
TypeScript
Raw Normal View History

2024-04-21 16:59:50 +02:00
import { PostgresDialect, CamelCasePlugin } from "kysely";
import type { GeneratedAlways } from "kysely";
2024-03-17 12:58:25 +01:00
import { Pool } from "pg";
import { KyselyAuth } from "@auth/kysely-adapter";
2024-04-21 16:59:50 +02:00
type GraphileJob = {
taskIdentifier: string;
payload: Record<string, any>;
priority: number;
maxAttempts: number;
key: string;
queueName: string;
};
export const addGraphileJob = async (jobInfo: GraphileJob) => {
2024-04-21 20:47:55 +02:00
// await db.insertInto("graphile_worker.jobs").values(jobInfo).execute();
2024-04-21 16:59:50 +02:00
};
2024-03-17 12:58:25 +01:00
2024-04-23 10:31:26 +02:00
export interface Database {
2024-03-17 12:58:25 +01:00
User: {
2024-03-20 17:51:21 +01:00
id: string;
2024-03-17 12:58:25 +01:00
name: string | null;
email: string;
emailVerified: Date | null;
image: string | null;
};
Account: {
id: GeneratedAlways<string>;
userId: string;
2024-03-20 17:51:21 +01:00
type: "oidc" | "oauth" | "email" | "webauthn";
2024-03-17 12:58:25 +01:00
provider: string;
providerAccountId: string;
2024-03-20 17:51:21 +01:00
refresh_token: string | undefined;
access_token: string | undefined;
expires_at: number | undefined;
token_type: Lowercase<string> | undefined;
scope: string | undefined;
id_token: string | undefined;
session_state: string | undefined;
2024-03-17 12:58:25 +01:00
};
Session: {
id: GeneratedAlways<string>;
userId: string;
sessionToken: string;
expires: Date;
};
VerificationToken: {
identifier: string;
token: string;
expires: Date;
};
WhatsAppBot: {
id: GeneratedAlways<string>;
2024-04-21 08:11:24 +02:00
name: string;
phoneNumber: string;
createdBy: string;
createdAt: Date;
updatedAt: Date;
};
FacebookBot: {
id: GeneratedAlways<string>;
name: string;
createdBy: string;
createdAt: Date;
updatedAt: Date;
};
VoiceBot: {
id: GeneratedAlways<string>;
name: string;
createdBy: string;
createdAt: Date;
updatedAt: Date;
};
SignalBot: {
id: GeneratedAlways<string>;
name: string;
phoneNumber: string;
createdBy: string;
createdAt: Date;
updatedAt: Date;
2024-03-17 12:58:25 +01:00
};
}
export const db = new KyselyAuth<Database>({
dialect: new PostgresDialect({
pool: new Pool({
host: process.env.DATABASE_HOST,
database: process.env.DATABASE_NAME,
2024-04-23 10:31:26 +02:00
port: parseInt(process.env.DATABASE_PORT!),
2024-03-17 12:58:25 +01:00
user: process.env.DATABASE_USER,
password: process.env.DATABASE_PASSWORD,
}),
}),
plugins: [new CamelCasePlugin()],
});