59 lines
1.6 KiB
TypeScript
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);
|
|
}
|