sakobo/src/db/users.ts

37 lines
1 KiB
TypeScript
Raw Normal View History

import { eq } from "drizzle-orm";
import { db } from "./database";
import { users } from "./schema";
export type UserUpdate = {
id: string | bigint,
username: string
globalName: string
};
export type NewUser = typeof users.$inferInsert;
export async function findUser (userData: UserUpdate) {
let user = await db.query.users.findFirst({
where: () => eq(users.discordId, BigInt(userData.id))
}) as NewUser;
if (!user) {
// upsert the user
user = await db.insert(users).values({
discordId: BigInt(userData.id),
username: userData.username,
displayName: userData.globalName,
} as NewUser).returning() as NewUser;
} else if (
user.username !== userData.username ||
user.displayName !== userData.globalName
) {
await db.update(users).set({
username: userData.username,
displayName: userData.globalName
}).where(eq(users.discordId, BigInt(userData.id)))
}
return user;
}