Deleted unused e2e tests, mocks (`cuid2`, `jose`, `ml-kem`, `sha3`), and their associated jest configurations. Simplified services by ensuring proper dependency imports, resolving circular references, and improving TypeScript type usage for enhanced maintainability and testability. Upgraded Dockerfile base image to match new development standards.
51 lines
1.2 KiB
TypeScript
51 lines
1.2 KiB
TypeScript
import { Injectable } from "@nestjs/common";
|
|
import { desc, eq, lte } from "drizzle-orm";
|
|
import { DatabaseService } from "../../database/database.service";
|
|
import { reports } from "../../database/schemas";
|
|
|
|
@Injectable()
|
|
export class ReportsRepository {
|
|
constructor(private readonly databaseService: DatabaseService) {}
|
|
|
|
async create(data: {
|
|
reporterId: string;
|
|
contentId?: string;
|
|
tagId?: string;
|
|
reason: "inappropriate" | "spam" | "copyright" | "other";
|
|
description?: string;
|
|
}) {
|
|
const [newReport] = await this.databaseService.db
|
|
.insert(reports)
|
|
.values(data)
|
|
.returning();
|
|
return newReport;
|
|
}
|
|
|
|
async findAll(limit: number, offset: number) {
|
|
return await this.databaseService.db
|
|
.select()
|
|
.from(reports)
|
|
.orderBy(desc(reports.createdAt))
|
|
.limit(limit)
|
|
.offset(offset);
|
|
}
|
|
|
|
async updateStatus(
|
|
id: string,
|
|
status: "pending" | "reviewed" | "resolved" | "dismissed",
|
|
) {
|
|
return await this.databaseService.db
|
|
.update(reports)
|
|
.set({ status, updatedAt: new Date() })
|
|
.where(eq(reports.id, id))
|
|
.returning();
|
|
}
|
|
|
|
async purgeObsolete(now: Date) {
|
|
return await this.databaseService.db
|
|
.delete(reports)
|
|
.where(lte(reports.expiresAt, now))
|
|
.returning();
|
|
}
|
|
}
|