refactor: P1-2 actions 层 DB 操作下沉到 data-access (exams/homework/questions/announcements)

This commit is contained in:
SpecialX
2026-06-18 02:31:16 +08:00
parent 2c8e229e00
commit 84d6636bd1
9 changed files with 858 additions and 438 deletions

View File

@@ -7,8 +7,10 @@ import { db } from "@/shared/db"
import { announcements, users } from "@/shared/db/schema"
import type {
Announcement,
AnnouncementInsertData,
AnnouncementStatus,
AnnouncementType,
AnnouncementUpdateData,
GetAnnouncementsParams,
} from "./types"
@@ -118,3 +120,67 @@ export const getAnnouncementById = cache(
}
}
)
export async function insertAnnouncement(
data: AnnouncementInsertData
): Promise<string> {
await db.insert(announcements).values({
id: data.id,
title: data.title,
content: data.content,
type: data.type,
status: data.status,
targetGradeId: data.targetGradeId,
targetClassId: data.targetClassId,
authorId: data.authorId,
publishedAt: data.publishedAt,
})
return data.id
}
export async function updateAnnouncementById(
id: string,
data: AnnouncementUpdateData
): Promise<void> {
await db
.update(announcements)
.set({
title: data.title,
content: data.content,
type: data.type,
status: data.status,
targetGradeId: data.targetGradeId,
targetClassId: data.targetClassId,
publishedAt: data.publishedAt,
updatedAt: data.updatedAt,
})
.where(eq(announcements.id, id))
}
export async function deleteAnnouncementById(id: string): Promise<void> {
await db.delete(announcements).where(eq(announcements.id, id))
}
export async function publishAnnouncementById(
id: string,
publishedAt: Date
): Promise<void> {
await db
.update(announcements)
.set({
status: "published",
publishedAt,
updatedAt: new Date(),
})
.where(eq(announcements.id, id))
}
export async function archiveAnnouncementById(id: string): Promise<void> {
await db
.update(announcements)
.set({
status: "archived",
updatedAt: new Date(),
})
.where(eq(announcements.id, id))
}