Added Drizzle ORM for Database Connection and Basic Member Command

This commit is contained in:
Ahmad 2024-11-23 15:14:21 -05:00
parent f1e6e05345
commit 9030fbcdcb
No known key found for this signature in database
GPG key ID: 8FD8A93530D182BF
11 changed files with 1955 additions and 154 deletions

40
src/util/db.ts Normal file
View file

@ -0,0 +1,40 @@
import fs from "node:fs";
import pkg from "pg";
import { drizzle } from "drizzle-orm/node-postgres";
import { memberTable } from "../db/schema.js";
import { eq } from "drizzle-orm";
const { Pool } = pkg;
const config = JSON.parse(fs.readFileSync("./config.json", "utf8"));
const { dbConnectionString, guildId } = config;
const dbPool = new Pool({
connectionString: dbConnectionString,
ssl: true,
});
const db = drizzle({ client: dbPool });
export async function getAllMembers() {
return await db.select().from(memberTable);
}
export async function setMembers(nonBotMembers: any) {
nonBotMembers.forEach(async (member: any) => {
const memberExists = await db
.select()
.from(memberTable)
.where(eq(memberTable.discordId, member.user.id));
if (memberExists.length > 0) {
await db
.update(memberTable)
.set({ discordUsername: member.user.username })
.where(eq(memberTable.discordId, member.user.id));
} else {
const members: typeof memberTable.$inferInsert = {
discordId: member.user.id,
discordUsername: member.user.username,
};
await db.insert(memberTable).values(members);
}
});
}