@@ -1,9 +1,10 @@
 | 
				
			|||||||
import { JsonController, Param, Body, Get, Post, Put, Delete, NotFoundError, OnUndefined, NotAcceptableError } from 'routing-controllers';
 | 
					import { JsonController, Param, Body, Get, Post, Put, Delete, OnUndefined, NotAcceptableError } from 'routing-controllers';
 | 
				
			||||||
import { getConnectionManager, Repository } from 'typeorm';
 | 
					import { getConnectionManager, Repository } from 'typeorm';
 | 
				
			||||||
import { EntityFromBody } from 'typeorm-routing-controllers-extensions';
 | 
					import { EntityFromBody } from 'typeorm-routing-controllers-extensions';
 | 
				
			||||||
import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi';
 | 
					import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi';
 | 
				
			||||||
import { Track } from '../models/Track';
 | 
					import { Track } from '../models/Track';
 | 
				
			||||||
import { IsInt, IsNotEmpty, IsPositive, IsString } from 'class-validator';
 | 
					import { IsInt, IsNotEmpty, IsPositive, IsString } from 'class-validator';
 | 
				
			||||||
 | 
					import {TrackIdChangeNotAllowedError, TrackNotFoundError} from "../errors/TrackErrors";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class CreateTrack {
 | 
					class CreateTrack {
 | 
				
			||||||
	@IsString()
 | 
						@IsString()
 | 
				
			||||||
@@ -15,12 +16,6 @@ class CreateTrack {
 | 
				
			|||||||
	length: number;
 | 
						length: number;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export class TrackNotFoundError extends NotFoundError {
 | 
					 | 
				
			||||||
	constructor() {
 | 
					 | 
				
			||||||
		super('Track not found!');
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@JsonController('/tracks')
 | 
					@JsonController('/tracks')
 | 
				
			||||||
export class TrackController {
 | 
					export class TrackController {
 | 
				
			||||||
	private trackRepository: Repository<Track>;
 | 
						private trackRepository: Repository<Track>;
 | 
				
			||||||
@@ -41,6 +36,7 @@ export class TrackController {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	@Get('/:id')
 | 
						@Get('/:id')
 | 
				
			||||||
	@ResponseSchema(Track)
 | 
						@ResponseSchema(Track)
 | 
				
			||||||
 | 
						@ResponseSchema(TrackNotFoundError, {statusCode: 404})
 | 
				
			||||||
	@OnUndefined(TrackNotFoundError)
 | 
						@OnUndefined(TrackNotFoundError)
 | 
				
			||||||
	@OpenAPI({description: "Returns a track of a specified id (if it exists)"})
 | 
						@OpenAPI({description: "Returns a track of a specified id (if it exists)"})
 | 
				
			||||||
	getOne(@Param('id') id: number) {
 | 
						getOne(@Param('id') id: number) {
 | 
				
			||||||
@@ -59,6 +55,8 @@ export class TrackController {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	@Put('/:id')
 | 
						@Put('/:id')
 | 
				
			||||||
	@ResponseSchema(Track)
 | 
						@ResponseSchema(Track)
 | 
				
			||||||
 | 
						@ResponseSchema(TrackNotFoundError, {statusCode: 404})
 | 
				
			||||||
 | 
						@ResponseSchema(TrackIdChangeNotAllowedError, {statusCode: 406})
 | 
				
			||||||
	@OpenAPI({description: "Update a track object (id can't be changed)."})
 | 
						@OpenAPI({description: "Update a track object (id can't be changed)."})
 | 
				
			||||||
	async put(@Param('id') id: number, @EntityFromBody() track: Track) {
 | 
						async put(@Param('id') id: number, @EntityFromBody() track: Track) {
 | 
				
			||||||
		let oldTrack = await this.trackRepository.findOne({ id: id });
 | 
							let oldTrack = await this.trackRepository.findOne({ id: id });
 | 
				
			||||||
@@ -68,7 +66,7 @@ export class TrackController {
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if(oldTrack.id != track.id){
 | 
							if(oldTrack.id != track.id){
 | 
				
			||||||
			throw new NotAcceptableError("The id's don't match!");
 | 
								throw new TrackIdChangeNotAllowedError();
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		await this.trackRepository.update(oldTrack, track);
 | 
							await this.trackRepository.update(oldTrack, track);
 | 
				
			||||||
@@ -77,6 +75,7 @@ export class TrackController {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	@Delete('/:id')
 | 
						@Delete('/:id')
 | 
				
			||||||
	@ResponseSchema(Track)
 | 
						@ResponseSchema(Track)
 | 
				
			||||||
 | 
						@ResponseSchema(TrackNotFoundError, {statusCode: 404})
 | 
				
			||||||
	@OpenAPI({description: "Delete a specified track (if it exists)."})
 | 
						@OpenAPI({description: "Delete a specified track (if it exists)."})
 | 
				
			||||||
	async remove(@Param('id') id: number) {
 | 
						async remove(@Param('id') id: number) {
 | 
				
			||||||
		let track = await this.trackRepository.findOne({ id: id });
 | 
							let track = await this.trackRepository.findOne({ id: id });
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										18
									
								
								src/errors/TrackErrors.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								src/errors/TrackErrors.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					import { JsonController, Param, Body, Get, Post, Put, Delete, NotFoundError, OnUndefined, NotAcceptableError } from 'routing-controllers';
 | 
				
			||||||
 | 
					import { IsInt, IsNotEmpty, IsPositive, IsString } from 'class-validator';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export class TrackNotFoundError extends NotFoundError {
 | 
				
			||||||
 | 
						@IsString()
 | 
				
			||||||
 | 
						name = "TrackNotFoundError"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@IsString()
 | 
				
			||||||
 | 
						message = "Track not found!"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export class TrackIdChangeNotAllowedError extends NotAcceptableError {
 | 
				
			||||||
 | 
						@IsString()
 | 
				
			||||||
 | 
						name = "TrackIdChangeNotAllowed"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@IsString()
 | 
				
			||||||
 | 
						message = "The id's don't match!!"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user