add blocked user
All checks were successful
deploy / build-and-deploy (push) Successful in 15s

This commit is contained in:
2025-05-20 23:34:54 +02:00
parent ba1146facf
commit 8b18623232
14 changed files with 390 additions and 1 deletions

View File

@@ -28,6 +28,13 @@ CREATE TRIGGER IF NOT EXISTS user_username_update AFTER UPDATE ON user
END;
DELIMITER ;
-- blocked user
CREATE TABLE IF NOT EXISTS blocked_user (
id INT AUTO_INCREMENT PRIMARY KEY,
uuid VARCHAR(255) UNIQUE NOT NULL,
comment TINYTEXT
);
-- team
CREATE TABLE IF NOT EXISTS team (
id INT AUTO_INCREMENT PRIMARY KEY,

View File

@@ -105,6 +105,17 @@ import {
type GetReportStatusReq,
reportStatus
} from '@db/schema/reportStatus.ts';
import {
addBlockedUser,
type AddBlockedUserReq,
getBlockedUsers,
type GetBlockedUsersReq,
blockedUser,
type GetBlockedUserByUuidReq,
getBlockedUserByUuid,
type EditBlockedUserReq,
editBlockedUser
} from '@db/schema/blockedUser.ts';
export class Database {
protected readonly db: MySql2Database<{
@@ -113,6 +124,7 @@ export class Database {
teamDraft: typeof teamDraft;
teamMember: typeof teamMember;
user: typeof user;
blockedUser: typeof blockedUser;
death: typeof death;
report: typeof report;
reportStatus: typeof reportStatus;
@@ -139,6 +151,7 @@ export class Database {
teamDraft,
teamMember,
user,
blockedUser,
death,
report,
reportStatus,
@@ -173,6 +186,12 @@ export class Database {
getUserByUsername = (values: GetUserByUsernameReq) => getUserByUsername(this.db, values);
getUsersByUuid = (values: GetUsersByUuidReq) => getUsersByUuid(this.db, values);
/* user blocks */
addBlockedUser = (values: AddBlockedUserReq) => addBlockedUser(this.db, values);
editBlockedUser = (values: EditBlockedUserReq) => editBlockedUser(this.db, values);
getBlockedUserByUuid = (values: GetBlockedUserByUuidReq) => getBlockedUserByUuid(this.db, values);
getBlockedUsers = (values: GetBlockedUsersReq) => getBlockedUsers(this.db, values);
/* team */
addTeam = (values: AddTeamReq) => addTeam(this.db, values);
editTeam = (values: EditTeamReq) => editTeam(this.db, values);

View File

@@ -0,0 +1,50 @@
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 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 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);
}