136 lines
2.3 KiB
TypeScript
Executable File
136 lines
2.3 KiB
TypeScript
Executable File
import {
|
|
Post,
|
|
Department,
|
|
Staff,
|
|
Enrollment,
|
|
Taxonomy,
|
|
Term,
|
|
} from "@prisma/client";
|
|
import { StaffDto } from "./staff";
|
|
import { TermDto } from "./term";
|
|
import { ResourceDto } from "./resource";
|
|
import { DepartmentDto } from "./department";
|
|
|
|
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;
|
|
};
|
|
meta?: PostMeta;
|
|
watchableDepts: Department[];
|
|
watchableStaffs: Staff[];
|
|
terms: TermDto[];
|
|
depts: DepartmentDto[];
|
|
|
|
studentIds?: string[];
|
|
};
|
|
export type PostMeta = {
|
|
thumbnail?: string;
|
|
views?: number;
|
|
likes?: number;
|
|
hates?: number;
|
|
};
|
|
export type LectureMeta = PostMeta & {
|
|
type?: string;
|
|
|
|
videoUrl?: string;
|
|
videoThumbnail?: string;
|
|
videoIds?: string[];
|
|
videoThumbnailIds?: string[];
|
|
};
|
|
|
|
export type Lecture = Post & {
|
|
resources?: ResourceDto[];
|
|
meta?: LectureMeta;
|
|
};
|
|
|
|
export type SectionMeta = PostMeta & {
|
|
objectives?: string[];
|
|
};
|
|
export type Section = Post & {
|
|
meta?: SectionMeta;
|
|
};
|
|
export type SectionDto = Section & {
|
|
lectures: Lecture[];
|
|
};
|
|
export type CourseMeta = PostMeta & {
|
|
objectives?: string[];
|
|
};
|
|
export type Course = PostDto & {
|
|
meta?: CourseMeta;
|
|
};
|
|
export type CourseDto = Course & {
|
|
enrollments?: Enrollment[];
|
|
sections?: SectionDto[];
|
|
terms: TermDto[];
|
|
lectureCount?: number;
|
|
depts: Department[];
|
|
studentIds: string[];
|
|
};
|
|
|
|
export type Summary = {
|
|
id: string;
|
|
text: string;
|
|
parent: string;
|
|
start: number;
|
|
end: number;
|
|
};
|
|
export type NodeObj = {
|
|
topic: string;
|
|
id: string;
|
|
style?: {
|
|
fontSize?: string;
|
|
color?: string;
|
|
background?: string;
|
|
fontWeight?: string;
|
|
};
|
|
children?: NodeObj[];
|
|
};
|
|
export type Arrow = {
|
|
id: string;
|
|
label: string;
|
|
from: string;
|
|
to: string;
|
|
delta1: {
|
|
x: number;
|
|
y: number;
|
|
};
|
|
delta2: {
|
|
x: number;
|
|
y: number;
|
|
};
|
|
};
|
|
export type PathMeta = PostMeta & {
|
|
nodeData: NodeObj;
|
|
arrows?: Arrow[];
|
|
summaries?: Summary[];
|
|
direction?: number;
|
|
};
|
|
export type PathDto = PostDto & {
|
|
meta: PathMeta;
|
|
};
|