Question + Answer entities added, some improvements
This commit is contained in:
		
							parent
							
								
									28ac99b2b5
								
							
						
					
					
						commit
						d9303dd6e8
					
				
					 6 changed files with 79 additions and 19 deletions
				
			
		|  | @ -1,7 +1,7 @@ | |||
| import {Entity, ManyToOne, OneToMany, PrimaryKey, Property} from "@mikro-orm/core"; | ||||
| import {Entity, Enum, ManyToOne, OneToMany, PrimaryKey, Property} from "@mikro-orm/core"; | ||||
| import {Class} from "../classes/class.entity"; | ||||
| import {LearningPath} from "../content/learning-path.entity"; | ||||
| import {Group} from "./group.entity" | ||||
| import {Language} from "../content/language"; | ||||
| 
 | ||||
| @Entity() | ||||
| export class Assignment { | ||||
|  | @ -17,8 +17,11 @@ export class Assignment { | |||
|     @Property({type: "text"}) | ||||
|     description!: string; | ||||
| 
 | ||||
|     @ManyToOne({entity: () => LearningPath}) | ||||
|     task!: LearningPath; | ||||
|     @Property({type: "string"}) | ||||
|     learningPathHruid!: string; | ||||
| 
 | ||||
|     @Enum({items: () => Language}) | ||||
|     learningPathLanguage!: Language; | ||||
| 
 | ||||
|     @OneToMany({entity: () => Group, mappedBy: "assignment"}) | ||||
|     groups!: Group[]; | ||||
|  |  | |||
|  | @ -1,22 +1,28 @@ | |||
| import {Student} from "../users/student.entity"; | ||||
| import {Group} from "./group.entity"; | ||||
| import {Entity, Enum, ManyToOne, PrimaryKey} from "@mikro-orm/core"; | ||||
| import {Entity, Enum, ManyToOne, PrimaryKey, Property} from "@mikro-orm/core"; | ||||
| import {Language} from "../content/language"; | ||||
| 
 | ||||
| @Entity() | ||||
| export class Submission { | ||||
| export class Submission<T> { | ||||
|     @ManyToOne({entity: () => Student, primary: true}) | ||||
|     submitter!: Student; | ||||
| 
 | ||||
|     @ManyToOne({entity: () => Group, primary: true}) | ||||
|     onBehalfOf!: Group; | ||||
| 
 | ||||
|     @PrimaryKey({type: "string"}) | ||||
|     hruid!: string; | ||||
|     learningObjectHruid!: string; | ||||
| 
 | ||||
|     @Enum({items: () => Language, primary: true}) | ||||
|     language!: Language; | ||||
|     learningObjectLanguage!: Language; | ||||
| 
 | ||||
|     @PrimaryKey({type: "string"}) | ||||
|     version: number = "1"; | ||||
|     learningObjectVersion: number = "1"; | ||||
| 
 | ||||
|     @PrimaryKey({type: "datetime"}) | ||||
|     submissionTime: Date; | ||||
| 
 | ||||
|     @ManyToOne({entity: () => Group, nullable: true}) | ||||
|     onBehalfOf?: Group; | ||||
| 
 | ||||
|     @Property({type: "json"}) | ||||
|     content!: T; | ||||
| } | ||||
|  |  | |||
|  | @ -1,9 +1,10 @@ | |||
| import {Embeddable, Embedded, Entity, Enum, OneToMany, PrimaryKey, Property} from "@mikro-orm/core"; | ||||
| import {Embeddable, Embedded, Entity, Enum, ManyToMany, OneToMany, PrimaryKey, Property} from "@mikro-orm/core"; | ||||
| import {Language} from "./language"; | ||||
| import {Attachment} from "./attachment.entity"; | ||||
| import {Teacher} from "../users/teacher.entity"; | ||||
| 
 | ||||
| @Entity() | ||||
| export class LearningObject { | ||||
| export class LearningObject<R> { | ||||
|     @PrimaryKey({type: "string"}) | ||||
|     hruid!: string; | ||||
| 
 | ||||
|  | @ -13,8 +14,8 @@ export class LearningObject { | |||
|     @PrimaryKey({type: "string"}) | ||||
|     version: number = "1"; | ||||
| 
 | ||||
|     @PrimaryKey({type: "string"}) | ||||
|     author!: string; | ||||
|     @ManyToMany({entity: () => Teacher}) | ||||
|     admins!: Teacher[]; | ||||
| 
 | ||||
|     @Property({type: "string"}) | ||||
|     title!: string; | ||||
|  | @ -52,6 +53,9 @@ export class LearningObject { | |||
|     @Property({type: "integer"}) | ||||
|     estimatedTime!: number; | ||||
| 
 | ||||
|     @Embedded({entity: () => ReturnValue}) | ||||
|     returnValue: ReturnValue<R>; | ||||
| 
 | ||||
|     @Property({type: "bool"}) | ||||
|     available: boolean = true; | ||||
| 
 | ||||
|  | @ -75,12 +79,12 @@ export class EducationalGoal { | |||
| } | ||||
| 
 | ||||
| @Embeddable() | ||||
| export class ReturnValue { | ||||
| export class ReturnValue<R> { | ||||
|     @Property({type: "string"}) | ||||
|     callbackUrl: string; | ||||
| 
 | ||||
|     @Property({type: "json"}) | ||||
|     callbackSchema: Object; | ||||
|     callbackSchema: R; | ||||
| } | ||||
| 
 | ||||
| export enum ContentType { | ||||
|  |  | |||
|  | @ -1,5 +1,6 @@ | |||
| import {Embeddable, Embedded, Entity, Enum, OneToOne, PrimaryKey, Property} from "@mikro-orm/core"; | ||||
| import {Embeddable, Embedded, Entity, Enum, ManyToMany, OneToOne, PrimaryKey, Property} from "@mikro-orm/core"; | ||||
| import {Language} from "./language"; | ||||
| import {Teacher} from "../users/teacher.entity"; | ||||
| 
 | ||||
| @Entity() | ||||
| export class LearningPath { | ||||
|  | @ -9,6 +10,9 @@ export class LearningPath { | |||
|     @Enum({items: () => Language, primary: true}) | ||||
|     language!: Language; | ||||
| 
 | ||||
|     @ManyToMany({entity: () => Teacher}) | ||||
|     admins!: Teacher[]; | ||||
| 
 | ||||
|     @Property({type: "string"}) | ||||
|     title!: string; | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										19
									
								
								backend/src/entities/questions/answer.entity.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								backend/src/entities/questions/answer.entity.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,19 @@ | |||
| import {Entity, ManyToOne, PrimaryKey, Property} from "@mikro-orm/core"; | ||||
| import {Question} from "./question.entity"; | ||||
| import {Teacher} from "../users/teacher.entity"; | ||||
| 
 | ||||
| @Entity() | ||||
| export class Answer { | ||||
| 
 | ||||
|     @ManyToOne({entity: () => Teacher, primary: true}) | ||||
|     author!: Teacher; | ||||
| 
 | ||||
|     @ManyToOne({entity: () => Question, primary: true}) | ||||
|     toQuestion!: Question; | ||||
| 
 | ||||
|     @PrimaryKey({type: "datetime"}) | ||||
|     timestamp: Date; | ||||
| 
 | ||||
|     @Property({type: "text"}) | ||||
|     content: string; | ||||
| } | ||||
							
								
								
									
										24
									
								
								backend/src/entities/questions/question.entity.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								backend/src/entities/questions/question.entity.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,24 @@ | |||
| import {Entity, Enum, ManyToOne, PrimaryKey, Property} from "@mikro-orm/core"; | ||||
| import {Language} from "../content/language"; | ||||
| import {Student} from "../users/student.entity"; | ||||
| 
 | ||||
| @Entity() | ||||
| export class Question { | ||||
|     @ManyToOne({entity: () => Student, primary: true}) | ||||
|     author!: Student; | ||||
| 
 | ||||
|     @PrimaryKey({type: "string"}) | ||||
|     learningObjectHruid!: string; | ||||
| 
 | ||||
|     @Enum({items: () => Language, primary: true}) | ||||
|     learningObjectLanguage!: Language; | ||||
| 
 | ||||
|     @PrimaryKey({type: "string"}) | ||||
|     learningObjectVersion!: number = "1"; | ||||
| 
 | ||||
|     @PrimaryKey({type: "datetime"}) | ||||
|     timestamp!: Date; | ||||
| 
 | ||||
|     @Property({type: "text"}) | ||||
|     content!: string; | ||||
| } | ||||
		Reference in a new issue
	
	 Gerald Schmittinger
						Gerald Schmittinger