diff --git a/src/lib/server/database.ts b/src/lib/server/database.ts index dbcc9e7..0ecb50f 100644 --- a/src/lib/server/database.ts +++ b/src/lib/server/database.ts @@ -62,6 +62,9 @@ export class Report extends Model { @Column({ type: DataTypes.INTEGER }) @ForeignKey(() => Admin) declare auditor_id: number; + @Column({ type: DataTypes.INTEGER }) + @ForeignKey(() => StrikeReason) + declare strike_reason_id: number | null; @BelongsTo(() => User, 'reporter_id') declare reporter: User; @@ -69,6 +72,38 @@ export class Report extends Model { declare reported: User; @BelongsTo(() => Admin, 'auditor_id') declare auditor: Admin; + @BelongsTo(() => StrikeReason, 'strike_reason_id') + declare strike_reason: StrikeReason; +} + +@Table({ modelName: 'strike_reason', underscored: true }) +export class StrikeReason extends Model { + @Column({ type: DataTypes.INTEGER, allowNull: false }) + declare weight: number; + @Column({ type: DataTypes.STRING, allowNull: false }) + declare name: string; +} + +@Table({ modelName: 'strike_punishment', underscored: true }) +export class StrikePunishment extends Model { + @Column({ type: DataTypes.INTEGER, allowNull: false }) + declare weight: number; + @Column({ type: DataTypes.INTEGER, allowNull: false }) + declare ban_in_seconds: number; +} + +@Table({ modelName: 'strike', underscored: true }) +export class Strike extends Model { + @Column({ type: DataTypes.INTEGER, allowNull: false, defaultValue: 0 }) + declare weight: number; + @Column({ type: DataTypes.DATE, allowNull: false, defaultValue: 0 }) + declare ban_until: Date; + @Column({ type: DataTypes.INTEGER, allowNull: false }) + @ForeignKey(() => User) + declare user_id: number; + + @BelongsTo(() => User, 'user_id') + declare user: User; } @Table({ modelName: 'admin', underscored: true }) @@ -122,5 +157,5 @@ export class Settings extends Model { export const sequelize = new Sequelize(building ? 'sqlite::memory:' : env.DATABASE_URI, { // only log sql queries in dev mode logging: dev ? console.log : false, - models: [User, Report, Admin, Settings] + models: [User, Report, StrikeReason, StrikePunishment, Strike, Admin, Settings] }); diff --git a/src/routes/admin/reports/+page.server.ts b/src/routes/admin/reports/+page.server.ts index 9023020..21e265e 100644 --- a/src/routes/admin/reports/+page.server.ts +++ b/src/routes/admin/reports/+page.server.ts @@ -3,6 +3,7 @@ import { redirect } from '@sveltejs/kit'; import { env } from '$env/dynamic/public'; import { getSession } from '$lib/server/session'; import { Permissions } from '$lib/permissions'; +import { StrikeReason } from '$lib/server/database'; export const load: PageServerLoad = async ({ parent, cookies }) => { const { reportCount } = await parent(); @@ -12,6 +13,7 @@ export const load: PageServerLoad = async ({ parent, cookies }) => { return { count: getSession(cookies, { permissions: [Permissions.UserRead] }) != null ? reportCount : 0, + strike_reasons: JSON.parse(JSON.stringify(await StrikeReason.findAll())), self: self }; }; diff --git a/src/routes/admin/reports/+page.svelte b/src/routes/admin/reports/+page.svelte index bcc42b4..37a0537 100644 --- a/src/routes/admin/reports/+page.svelte +++ b/src/routes/admin/reports/+page.svelte @@ -84,11 +84,12 @@ method: 'PATCH', body: JSON.stringify({ id: activeReport.id, - auditor: data.self?.id || -1, - notice: activeReport.notice || '', - statement: activeReport.statement || '', + auditor: data.self?.id ?? -1, + notice: activeReport.notice ?? '', + statement: activeReport.statement ?? '', status: activeReport.status, - reported: activeReport.reported?.uuid || null + reported: activeReport.reported?.uuid ?? null, + strike_reason: activeReport.strike_reason_id ?? null }) }); } @@ -193,7 +194,7 @@ {#if activeReport}