Files
Edu/services/classes/src/classes/classes.repository.ts
SpecialX 0a71b02e04
Some checks failed
CI / quality-ts (push) Failing after 48s
CI / quality-go (push) Failing after 4s
CI / quality-proto (push) Failing after 2s
CI / deploy (push) Has been skipped
fix: code compliance audit and fix across all services
NestJS (6 services): implement @RequirePermission decorator with
SetMetadata+Reflector, register APP_GUARD globally, fix as assertions
to type guards, add explicit return types, fix import type for express,
fix /metrics implicit any, replace native Error with ApplicationError,
remove typeorm remnants, register LifecycleService.

teacher-bff: add logger, ApplicationError, GlobalErrorFilter, forward
real userId to downstream, log downstream failures, migrate health
controller to shared/health.

Go (2 services): interface to any, doc comments, CORS dev whitelist,
JWT secret fail-fast, push-gateway internal API auth, metrics and
readyz endpoints, remove dead code.

Python (2 services): lifespan return type, dev_mode to bool, data-ana
APIRouter, ai POST body model, ClickHouse async wrapping.
2026-07-09 17:28:27 +08:00

49 lines
1.4 KiB
TypeScript

import { eq } from "drizzle-orm";
import { getDb } from "../config/database.js";
import { classes, type Class, type NewClass } from "./classes.schema.js";
import { DatabaseError } from "../shared/errors/application-error.js";
export class ClassesRepository {
async create(data: NewClass): Promise<Class> {
const db = getDb();
await db.insert(classes).values(data);
const [result] = await db
.select()
.from(classes)
.where(eq(classes.id, data.id));
if (!result) {
throw new DatabaseError("Failed to read created class");
}
return result;
}
async findById(id: string): Promise<Class | undefined> {
const db = getDb();
const [result] = await db.select().from(classes).where(eq(classes.id, id));
return result;
}
async list(gradeId?: string): Promise<Class[]> {
const db = getDb();
if (gradeId) {
return db.select().from(classes).where(eq(classes.gradeId, gradeId));
}
return db.select().from(classes);
}
async update(
id: string,
data: Partial<NewClass>,
): Promise<Class | undefined> {
const db = getDb();
await db.update(classes).set(data).where(eq(classes.id, id));
const [result] = await db.select().from(classes).where(eq(classes.id, id));
return result;
}
async delete(id: string): Promise<void> {
const db = getDb();
await db.delete(classes).where(eq(classes.id, id));
}
}