Files
website/src/db/schema/blockedUser.ts
2025-10-13 21:04:21 +02:00

59 lines
1.6 KiB
TypeScript

import { int, mysqlTable, varchar } from 'drizzle-orm/mysql-core';
import type { MySql2Database } from 'drizzle-orm/mysql2';
import { eq } from 'drizzle-orm';
type Database = MySql2Database<{ blockedUser: typeof blockedUser }>;
export const blockedUser = mysqlTable('blocked_user', {
id: int('id').primaryKey().autoincrement(),
uuid: varchar('uuid', { length: 255 }).unique().notNull(),
comment: varchar('comment', { length: 255 })
});
export type AddBlockedUserReq = {
uuid: string;
comment?: string | null;
};
export type EditBlockedUserReq = {
id: number;
uuid: string;
comment?: string | null;
};
export type DeleteBlockedUserReq = {
id: number;
};
export type GetBlockedUserByUuidReq = {
uuid: string;
};
export type GetBlockedUsersReq = {};
export async function addBlockedUser(db: Database, values: AddBlockedUserReq) {
const bu = await db.insert(blockedUser).values(values).$returningId();
return bu[0];
}
export async function editBlockedUser(db: Database, values: EditBlockedUserReq) {
await db.update(blockedUser).set(values).where(eq(blockedUser.id, values.id));
}
export async function deleteBlockedUser(db: Database, values: DeleteBlockedUserReq) {
return db.delete(blockedUser).where(eq(blockedUser.id, values.id));
}
export async function getBlockedUserByUuid(db: Database, values: GetBlockedUserByUuidReq) {
const bu = await db.query.blockedUser.findFirst({
where: eq(blockedUser.uuid, values.uuid)
});
return bu ?? null;
}
export async function getBlockedUsers(db: Database, _values: GetBlockedUsersReq) {
return db.select().from(blockedUser);
}