import { SapphireClient } from "@sapphire/framework";
import { container } from "@sapphire/pieces";
import type { ClientOptions } from "discord.js";
import { drizzle } from "drizzle-orm/node-postgres";
import pg from "pg";
import { dbConnectionString } from "../config.js";
const { Client } = pg;
// @ts-expect-error Somehow errored with d.js ClientOptions conflict
export class BotClient extends SapphireClient {
public readonly db = drizzle(new Client({
connectionString: dbConnectionString
}));
public constructor(public readonly options: ClientOptions) {
super(options);
Object.assign(container, { db: this.db });
}
}
declare module "@sapphire/framework" {
type SapphireClient = {
readonly db: BotClient["db"];
};
}
declare module "@sapphire/pieces" {
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
interface Container {
readonly db: BotClient["db"];
}
}
import { SapphireClient } from "@sapphire/framework";
import { container } from "@sapphire/pieces";
import type { ClientOptions } from "discord.js";
import { drizzle } from "drizzle-orm/node-postgres";
import pg from "pg";
import { dbConnectionString } from "../config.js";
const { Client } = pg;
// @ts-expect-error Somehow errored with d.js ClientOptions conflict
export class BotClient extends SapphireClient {
public readonly db = drizzle(new Client({
connectionString: dbConnectionString
}));
public constructor(public readonly options: ClientOptions) {
super(options);
Object.assign(container, { db: this.db });
}
}
declare module "@sapphire/framework" {
type SapphireClient = {
readonly db: BotClient["db"];
};
}
declare module "@sapphire/pieces" {
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
interface Container {
readonly db: BotClient["db"];
}
}