docs(backend): Assignments swagger annotaties
This commit is contained in:
		
							parent
							
								
									41dcb57b25
								
							
						
					
					
						commit
						38acfa6a4a
					
				
					 4 changed files with 206 additions and 1 deletions
				
			
		|  | @ -10,6 +10,41 @@ import { Class } from '../classes/class.entity.js'; | ||||||
| import { Group } from './group.entity.js'; | import { Group } from './group.entity.js'; | ||||||
| import { Language } from '../content/language.js'; | import { Language } from '../content/language.js'; | ||||||
| 
 | 
 | ||||||
|  | /** | ||||||
|  |  * @swagger | ||||||
|  |  * tags: | ||||||
|  |  *   name: Assignment | ||||||
|  |  *   description: Assignment management | ||||||
|  |  * components: | ||||||
|  |  *   schemas: | ||||||
|  |  *     Assignment: | ||||||
|  |  *       type: object | ||||||
|  |  *       properties: | ||||||
|  |  *         within: | ||||||
|  |  *           $ref: '#/components/schemas/Class' | ||||||
|  |  *         id: | ||||||
|  |  *           type: number | ||||||
|  |  *         title: | ||||||
|  |  *           type: string | ||||||
|  |  *         description: | ||||||
|  |  *           type: string | ||||||
|  |  *         learningPathHruid: | ||||||
|  |  *           type: string | ||||||
|  |  *         learningPathLanguage: | ||||||
|  |  *           $ref: '#/components/schemas/Language' | ||||||
|  |  *         groups: | ||||||
|  |  *           type: array | ||||||
|  |  *           items: | ||||||
|  |  *             $ref: '#/components/schemas/Group' | ||||||
|  |  *       required: | ||||||
|  |  *         - within | ||||||
|  |  *         - id | ||||||
|  |  *         - title | ||||||
|  |  *         - description | ||||||
|  |  *         - learningPathHruid | ||||||
|  |  *         - learningPathLanguage | ||||||
|  |  *         - groups | ||||||
|  |  */ | ||||||
| @Entity() | @Entity() | ||||||
| export class Assignment { | export class Assignment { | ||||||
|     @ManyToOne({ |     @ManyToOne({ | ||||||
|  |  | ||||||
|  | @ -2,6 +2,26 @@ import { Entity, ManyToMany, ManyToOne, PrimaryKey } from '@mikro-orm/core'; | ||||||
| import { Assignment } from './assignment.entity.js'; | import { Assignment } from './assignment.entity.js'; | ||||||
| import { Student } from '../users/student.entity.js'; | import { Student } from '../users/student.entity.js'; | ||||||
| 
 | 
 | ||||||
|  | /** | ||||||
|  |  * @swagger | ||||||
|  |  * components: | ||||||
|  |  *   schemas: | ||||||
|  |  *     Group: | ||||||
|  |  *       type: object | ||||||
|  |  *       properties: | ||||||
|  |  *         assignment: | ||||||
|  |  *           $ref: '#/components/schemas/Assignment' | ||||||
|  |  *         groupNumber: | ||||||
|  |  *           type: number | ||||||
|  |  *         members: | ||||||
|  |  *           type: array | ||||||
|  |  *           items: | ||||||
|  |  *             $ref: '#/components/schemas/Student' | ||||||
|  |  *       required: | ||||||
|  |  *         - assignment | ||||||
|  |  *         - groupNumber | ||||||
|  |  *         - members | ||||||
|  |  */ | ||||||
| @Entity() | @Entity() | ||||||
| export class Group { | export class Group { | ||||||
|     @ManyToOne({ |     @ManyToOne({ | ||||||
|  |  | ||||||
|  | @ -3,6 +3,39 @@ import { Group } from './group.entity.js'; | ||||||
| import { Entity, Enum, ManyToOne, PrimaryKey, Property } from '@mikro-orm/core'; | import { Entity, Enum, ManyToOne, PrimaryKey, Property } from '@mikro-orm/core'; | ||||||
| import { Language } from '../content/language.js'; | import { Language } from '../content/language.js'; | ||||||
| 
 | 
 | ||||||
|  | /** | ||||||
|  |  * @swagger | ||||||
|  |  * components: | ||||||
|  |  *   schemas: | ||||||
|  |  *     Submission: | ||||||
|  |  *       type: object | ||||||
|  |  *       properties: | ||||||
|  |  *         learningObjectHruid: | ||||||
|  |  *           type: string | ||||||
|  |  *         learningObjectLanguage: | ||||||
|  |  *           $ref: '#/components/schemas/Language' | ||||||
|  |  *         learningObjectVersion: | ||||||
|  |  *           type: string | ||||||
|  |  *           default: '1' | ||||||
|  |  *         submissionNumber: | ||||||
|  |  *           type: number | ||||||
|  |  *         submitter: | ||||||
|  |  *           $ref: '#/components/schemas/Student' | ||||||
|  |  *         submissionTime: | ||||||
|  |  *           type: string | ||||||
|  |  *           format: date-time | ||||||
|  |  *         onBehalfOf: | ||||||
|  |  *           $ref: '#/components/schemas/Group' | ||||||
|  |  *         content: | ||||||
|  |  *           type: string | ||||||
|  |  *       required: | ||||||
|  |  *         - learningObjectHruid | ||||||
|  |  *         - learningObjectLanguage | ||||||
|  |  *         - submissionNumber | ||||||
|  |  *         - submitter | ||||||
|  |  *         - submissionTime | ||||||
|  |  *         - content | ||||||
|  |  */ | ||||||
| @Entity() | @Entity() | ||||||
| export class Submission { | export class Submission { | ||||||
|     @PrimaryKey({ type: 'string' }) |     @PrimaryKey({ type: 'string' }) | ||||||
|  |  | ||||||
|  | @ -1,13 +1,64 @@ | ||||||
|  | /** | ||||||
|  |  * @swagger | ||||||
|  |  * components: | ||||||
|  |  *   parameters: | ||||||
|  |  *     id: | ||||||
|  |  *       in: path | ||||||
|  |  *       name: id | ||||||
|  |  *       schema: | ||||||
|  |  *         type: string | ||||||
|  |  *       description: The id of the assignment | ||||||
|  |  *       required: true | ||||||
|  |  *       example: 0 | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
| import express from 'express'; | import express from 'express'; | ||||||
| const router = express.Router(); | const router = express.Router(); | ||||||
| 
 | 
 | ||||||
| // Root endpoint used to search objects
 | /** | ||||||
|  |  * @swagger | ||||||
|  |  * /assignment: | ||||||
|  |  *   get: | ||||||
|  |  *     summary: Get a list of assignments | ||||||
|  |  *     tags: [Assignment] | ||||||
|  |  *     parameters: | ||||||
|  |  *     responses: | ||||||
|  |  *       200: | ||||||
|  |  *         description: A list of assignments | ||||||
|  |  *         content: | ||||||
|  |  *           application/json: | ||||||
|  |  *             schema: | ||||||
|  |  *               type: object | ||||||
|  |  *               properties: | ||||||
|  |  *                 assignments: | ||||||
|  |  *                   type: array | ||||||
|  |  *                   items: | ||||||
|  |  *                     type: string | ||||||
|  |  *                     example: '0' | ||||||
|  |  *                     description: The id of the assignment | ||||||
|  |  */ | ||||||
| router.get('/', (req, res) => { | router.get('/', (req, res) => { | ||||||
|     res.json({ |     res.json({ | ||||||
|         assignments: ['0', '1'], |         assignments: ['0', '1'], | ||||||
|     }); |     }); | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
|  | /** | ||||||
|  |  * @swagger | ||||||
|  |  * /assignment/{id}: | ||||||
|  |  *   get: | ||||||
|  |  *     summary: Get an assignment by id | ||||||
|  |  *     tags: [Assignment] | ||||||
|  |  *     parameters: | ||||||
|  |  *       - $ref: '#/components/parameters/id' | ||||||
|  |  *     responses: | ||||||
|  |  *       200: | ||||||
|  |  *         description: An assignment | ||||||
|  |  *         content: | ||||||
|  |  *           application/json: | ||||||
|  |  *             schema: | ||||||
|  |  *               $ref: '#/components/schemas/Assignment' | ||||||
|  |  */ | ||||||
| // Information about an assignment with id 'id'
 | // Information about an assignment with id 'id'
 | ||||||
| router.get('/:id', (req, res) => { | router.get('/:id', (req, res) => { | ||||||
|     res.json({ |     res.json({ | ||||||
|  | @ -24,18 +75,84 @@ router.get('/:id', (req, res) => { | ||||||
|     }); |     }); | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
|  | /** | ||||||
|  |  * @swagger | ||||||
|  |  * /assignment/{id}/submissions: | ||||||
|  |  *   get: | ||||||
|  |  *     summary: Get a list of submissions for an assignment | ||||||
|  |  *     tags: [Assignment] | ||||||
|  |  *     parameters: | ||||||
|  |  *       - $ref: '#/components/parameters/id' | ||||||
|  |  *     responses: | ||||||
|  |  *       200: | ||||||
|  |  *         description: A list of submissions | ||||||
|  |  *         content: | ||||||
|  |  *           application/json: | ||||||
|  |  *             schema: | ||||||
|  |  *               type: object | ||||||
|  |  *               properties: | ||||||
|  |  *                 submissions: | ||||||
|  |  *                   type: array | ||||||
|  |  *                   items: | ||||||
|  |  *                     type: string | ||||||
|  |  *                     example: '0' | ||||||
|  |  */ | ||||||
| router.get('/:id/submissions', (req, res) => { | router.get('/:id/submissions', (req, res) => { | ||||||
|     res.json({ |     res.json({ | ||||||
|         submissions: ['0'], |         submissions: ['0'], | ||||||
|     }); |     }); | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
|  | /** | ||||||
|  |  * @swagger | ||||||
|  |  * /assignment/{id}/groups: | ||||||
|  |  *   get: | ||||||
|  |  *     summary: Get a list of groups for an assignment | ||||||
|  |  *     tags: [Assignment] | ||||||
|  |  *     parameters: | ||||||
|  |  *       - $ref: '#/components/parameters/id' | ||||||
|  |  *     responses: | ||||||
|  |  *       200: | ||||||
|  |  *         description: A list of groups | ||||||
|  |  *         content: | ||||||
|  |  *           application/json: | ||||||
|  |  *             schema: | ||||||
|  |  *               type: object | ||||||
|  |  *               properties: | ||||||
|  |  *                 groups: | ||||||
|  |  *                   type: array | ||||||
|  |  *                   items: | ||||||
|  |  *                     type: string | ||||||
|  |  *                     example: '0' | ||||||
|  |  */ | ||||||
| router.get('/:id/groups', (req, res) => { | router.get('/:id/groups', (req, res) => { | ||||||
|     res.json({ |     res.json({ | ||||||
|         groups: ['0'], |         groups: ['0'], | ||||||
|     }); |     }); | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
|  | /** | ||||||
|  |  * @swagger | ||||||
|  |  * /assignment/{id}/questions: | ||||||
|  |  *   get: | ||||||
|  |  *     summary: Get a list of questions for an assignment | ||||||
|  |  *     tags: [Assignment] | ||||||
|  |  *     parameters: | ||||||
|  |  *       - $ref: '#/components/parameters/id' | ||||||
|  |  *     responses: | ||||||
|  |  *       200: | ||||||
|  |  *         description: A list of questions | ||||||
|  |  *         content: | ||||||
|  |  *           application/json: | ||||||
|  |  *             schema: | ||||||
|  |  *               type: object | ||||||
|  |  *               properties: | ||||||
|  |  *                 questions: | ||||||
|  |  *                   type: array | ||||||
|  |  *                   items: | ||||||
|  |  *                     type: string | ||||||
|  |  *                     example: '0' | ||||||
|  |  */ | ||||||
| router.get('/:id/questions', (req, res) => { | router.get('/:id/questions', (req, res) => { | ||||||
|     res.json({ |     res.json({ | ||||||
|         questions: ['0'], |         questions: ['0'], | ||||||
|  |  | ||||||
		Reference in a new issue