67 lines
1.2 KiB
TypeScript
67 lines
1.2 KiB
TypeScript
import { Post, Department, Staff, Enrollment } from "@prisma/client";
|
|
import { StaffDto } from "./staff";
|
|
|
|
export type PostComment = {
|
|
id: string;
|
|
type: string;
|
|
title: string;
|
|
content: string;
|
|
authorId: string;
|
|
domainId: string;
|
|
referenceId: string;
|
|
resources: string[];
|
|
createdAt: Date;
|
|
updatedAt: Date;
|
|
parentId: string;
|
|
author: {
|
|
id: string;
|
|
showname: string;
|
|
username: string;
|
|
avatar: string;
|
|
};
|
|
};
|
|
export type PostDto = Post & {
|
|
readed: boolean;
|
|
readedCount: number;
|
|
author: StaffDto;
|
|
limitedComments: PostComment[];
|
|
commentsCount: number;
|
|
perms?: {
|
|
delete: boolean;
|
|
// edit: boolean;
|
|
};
|
|
watchableDepts: Department[];
|
|
watchableStaffs: Staff[];
|
|
};
|
|
|
|
export type LectureMeta = {
|
|
videoUrl?: string;
|
|
videoThumbnail?: string;
|
|
};
|
|
|
|
export type Lecture = Post & {
|
|
meta?: LectureMeta;
|
|
};
|
|
|
|
export type SectionMeta = {
|
|
objectives?: string[];
|
|
};
|
|
export type Section = Post & {
|
|
meta?: SectionMeta;
|
|
};
|
|
export type SectionDto = Section & {
|
|
lectures: Lecture[];
|
|
};
|
|
export type CourseMeta = {
|
|
thumbnail?: string;
|
|
requirements?: string[];
|
|
objectives?: string[];
|
|
};
|
|
export type Course = Post & {
|
|
meta?: CourseMeta;
|
|
};
|
|
export type CourseDto = Course & {
|
|
enrollments?: Enrollment[];
|
|
sections?: SectionDto[];
|
|
};
|