51 lines
1.4 KiB
TypeScript
51 lines
1.4 KiB
TypeScript
import { IsBoolean, IsInt, IsOptional, IsPositive } from 'class-validator';
|
|
import { getConnection } from 'typeorm';
|
|
import { RunnerNotFoundError } from '../../../errors/RunnerErrors';
|
|
import { Runner } from '../../entities/Runner';
|
|
import { RunnerCard } from '../../entities/RunnerCard';
|
|
|
|
/**
|
|
* This class is used to update a RunnerCard entity (via put request).
|
|
*/
|
|
export class UpdateRunnerCard {
|
|
/**
|
|
* The updated card's id.
|
|
* This shouldn't have changed but it is here in case anyone ever wants to enable id changes (whyever they would want to).
|
|
*/
|
|
@IsInt()
|
|
@IsPositive()
|
|
id?: number;
|
|
|
|
/**
|
|
* The updated card's associated runner's id.
|
|
*/
|
|
@IsInt()
|
|
@IsOptional()
|
|
runner?: number;
|
|
|
|
/**
|
|
* Is the updated card enabled (for fraud reasons)?
|
|
* Default: true
|
|
*/
|
|
@IsBoolean()
|
|
enabled: boolean = true;
|
|
|
|
/**
|
|
* Creates a new RunnerCard entity from this.
|
|
*/
|
|
public async update(card: RunnerCard): Promise<RunnerCard> {
|
|
card.enabled = this.enabled;
|
|
card.runner = await this.getRunner();
|
|
|
|
return card;
|
|
}
|
|
|
|
public async getRunner(): Promise<Runner> {
|
|
if (!this.runner) { return null; }
|
|
const runner = await getConnection().getRepository(Runner).findOne({ id: this.runner });
|
|
if (!runner) {
|
|
throw new RunnerNotFoundError();
|
|
}
|
|
return runner;
|
|
}
|
|
} |