refactor: P1-2 actions 层 DB 操作下沉到 data-access (exams/homework/questions/announcements)
This commit is contained in:
@@ -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))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user