feat: Introduce announcements service, integrate MinIO for lesson media with presigned URLs, and restrict editing of pending courses.
This commit is contained in:
parent
5f8e0a3687
commit
bbfb62093e
5 changed files with 145 additions and 4 deletions
|
|
@ -19,9 +19,10 @@ export interface LessonAttachmentData {
|
|||
file_path: string;
|
||||
file_size: number;
|
||||
mime_type: string;
|
||||
description: MultiLanguageText | null;
|
||||
description?: MultiLanguageText | null;
|
||||
sort_order: number;
|
||||
created_at: Date;
|
||||
presigned_url?: string | null;
|
||||
}
|
||||
|
||||
export interface QuizData {
|
||||
|
|
@ -68,6 +69,7 @@ export interface LessonData {
|
|||
is_published: boolean;
|
||||
created_at: Date;
|
||||
updated_at: Date | null;
|
||||
video_url?: string | null;
|
||||
attachments?: LessonAttachmentData[];
|
||||
quiz?: QuizData | null;
|
||||
progress?: LessonProgressData[];
|
||||
|
|
|
|||
56
Backend/src/types/announcements.types.ts
Normal file
56
Backend/src/types/announcements.types.ts
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
import { MultiLanguageText } from './index';
|
||||
|
||||
// Use MultiLanguageText from index.ts for consistency
|
||||
export type MultiLangText = MultiLanguageText;
|
||||
|
||||
export interface Announcement {
|
||||
id: number;
|
||||
title: MultiLangText;
|
||||
content: MultiLangText;
|
||||
status: string;
|
||||
is_pinned: boolean;
|
||||
created_at: Date;
|
||||
updated_at: Date;
|
||||
attachments: AnnouncementAttachment[];
|
||||
}
|
||||
|
||||
export interface AnnouncementAttachment {
|
||||
id: number;
|
||||
announcement_id: number;
|
||||
file_name: string;
|
||||
file_path: string;
|
||||
created_at: Date;
|
||||
updated_at: Date;
|
||||
}
|
||||
|
||||
export interface ListAnnouncementResponse{
|
||||
code: number;
|
||||
message: string;
|
||||
data: Announcement[];
|
||||
total: number;
|
||||
page: number;
|
||||
limit: number;
|
||||
}
|
||||
|
||||
export interface ListAnnouncementInput{
|
||||
token: string;
|
||||
course_id: number;
|
||||
page?: number;
|
||||
limit?: number;
|
||||
}
|
||||
|
||||
export interface CreateAnnouncementInput{
|
||||
token: string;
|
||||
course_id: number;
|
||||
title: MultiLangText;
|
||||
content: MultiLangText;
|
||||
status: string;
|
||||
is_pinned: boolean;
|
||||
attachments?: AnnouncementAttachment[];
|
||||
}
|
||||
|
||||
export interface CreateAnnouncementResponse{
|
||||
code: number;
|
||||
message: string;
|
||||
data: Announcement;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue