Merge branch 'dev' into feature/12-jwt-creation
This commit is contained in:
commit
52dfe83354
|
@ -7,26 +7,71 @@ import { User } from '../entities/User';
|
||||||
import { UserGroup } from '../entities/UserGroup';
|
import { UserGroup } from '../entities/UserGroup';
|
||||||
|
|
||||||
export class CreateUser {
|
export class CreateUser {
|
||||||
|
/**
|
||||||
|
* The new user's first name.
|
||||||
|
*/
|
||||||
@IsString()
|
@IsString()
|
||||||
firstname: string;
|
firstname: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The new user's middle name.
|
||||||
|
* Optinal.
|
||||||
|
*/
|
||||||
@IsString()
|
@IsString()
|
||||||
|
@IsOptional()
|
||||||
middlename?: string;
|
middlename?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The new user's last name.
|
||||||
|
*/
|
||||||
|
@IsString()
|
||||||
|
lastname: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The new user's username.
|
||||||
|
* You have to provide at least one of: {email, username}.
|
||||||
|
*/
|
||||||
@IsOptional()
|
@IsOptional()
|
||||||
@IsString()
|
@IsString()
|
||||||
username?: string;
|
username?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The new user's email address.
|
||||||
|
* You have to provide at least one of: {email, username}.
|
||||||
|
*/
|
||||||
|
@IsEmail()
|
||||||
|
@IsString()
|
||||||
|
@IsOptional()
|
||||||
|
email?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The new user's phone number.
|
||||||
|
* Optional
|
||||||
|
*/
|
||||||
@IsPhoneNumber("ZZ")
|
@IsPhoneNumber("ZZ")
|
||||||
@IsOptional()
|
@IsOptional()
|
||||||
phone?: string;
|
phone?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The new user's password.
|
||||||
|
* This will of course not be saved in plaintext :)
|
||||||
|
*/
|
||||||
@IsString()
|
@IsString()
|
||||||
password: string;
|
password: string;
|
||||||
@IsString()
|
|
||||||
lastname: string;
|
/**
|
||||||
@IsEmail()
|
* The new user's groups' id(s).
|
||||||
@IsString()
|
* You can provide either one groupId or an array of groupIDs.
|
||||||
email?: string;
|
* Optional.
|
||||||
|
*/
|
||||||
@IsOptional()
|
@IsOptional()
|
||||||
groupId?: number[] | number
|
groupId?: number[] | number
|
||||||
|
|
||||||
|
//TODO: ProfilePics
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts this to a User Entity.
|
||||||
|
*/
|
||||||
public async toUser(): Promise<User> {
|
public async toUser(): Promise<User> {
|
||||||
let newUser: User = new User();
|
let newUser: User = new User();
|
||||||
|
|
||||||
|
@ -58,17 +103,16 @@ export class CreateUser {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const new_uuid = uuid.v4()
|
|
||||||
|
|
||||||
newUser.email = this.email
|
newUser.email = this.email
|
||||||
newUser.username = this.username
|
newUser.username = this.username
|
||||||
newUser.firstname = this.firstname
|
newUser.firstname = this.firstname
|
||||||
newUser.middlename = this.middlename
|
newUser.middlename = this.middlename
|
||||||
newUser.lastname = this.lastname
|
newUser.lastname = this.lastname
|
||||||
newUser.uuid = new_uuid
|
newUser.uuid = uuid.v4()
|
||||||
newUser.password = await argon2.hash(this.password + new_uuid);
|
newUser.phone = this.phone
|
||||||
|
newUser.password = await argon2.hash(this.password + newUser.uuid);
|
||||||
|
//TODO: ProfilePics
|
||||||
|
|
||||||
console.log(newUser)
|
|
||||||
return newUser;
|
return newUser;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,28 +1,30 @@
|
||||||
import { IsOptional, IsString } from 'class-validator';
|
import { IsOptional, IsString } from 'class-validator';
|
||||||
import { GroupNameNeededError } from '../../errors/UserGroupErrors';
|
|
||||||
import { UserGroup } from '../entities/UserGroup';
|
import { UserGroup } from '../entities/UserGroup';
|
||||||
|
|
||||||
export class CreateUserGroup {
|
export class CreateUserGroup {
|
||||||
@IsOptional()
|
/**
|
||||||
|
* The new group's name.
|
||||||
|
*/
|
||||||
@IsString()
|
@IsString()
|
||||||
name: string;
|
name: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The new group's description.
|
||||||
|
* Optinal.
|
||||||
|
*/
|
||||||
@IsOptional()
|
@IsOptional()
|
||||||
@IsString()
|
@IsString()
|
||||||
description?: string;
|
description?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts this to a UserGroup entity.
|
||||||
|
*/
|
||||||
public async toUserGroup(): Promise<UserGroup> {
|
public async toUserGroup(): Promise<UserGroup> {
|
||||||
let newUserGroup: UserGroup = new UserGroup();
|
let newUserGroup: UserGroup = new UserGroup();
|
||||||
|
|
||||||
if (this.name === undefined) {
|
newUserGroup.name = this.name;
|
||||||
throw new GroupNameNeededError();
|
newUserGroup.description = this.description;
|
||||||
}
|
|
||||||
|
|
||||||
newUserGroup.name = this.name
|
|
||||||
if (this.description) {
|
|
||||||
newUserGroup.description = this.description
|
|
||||||
}
|
|
||||||
|
|
||||||
console.log(newUserGroup)
|
|
||||||
return newUserGroup;
|
return newUserGroup;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,11 +1,11 @@
|
||||||
import { Entity, PrimaryGeneratedColumn, Column, OneToMany } from "typeorm";
|
|
||||||
import {
|
import {
|
||||||
IsInt,
|
IsInt,
|
||||||
IsNotEmpty,
|
IsNotEmpty,
|
||||||
IsOptional,
|
IsOptional,
|
||||||
IsPostalCode,
|
IsPostalCode,
|
||||||
IsString,
|
IsString
|
||||||
} from "class-validator";
|
} from "class-validator";
|
||||||
|
import { Column, Entity, OneToMany, PrimaryGeneratedColumn } from "typeorm";
|
||||||
import { Participant } from "./Participant";
|
import { Participant } from "./Participant";
|
||||||
import { RunnerOrganisation } from "./RunnerOrganisation";
|
import { RunnerOrganisation } from "./RunnerOrganisation";
|
||||||
|
|
||||||
|
@ -18,14 +18,13 @@ export class Address {
|
||||||
* Autogenerated unique id (primary key).
|
* Autogenerated unique id (primary key).
|
||||||
*/
|
*/
|
||||||
@PrimaryGeneratedColumn()
|
@PrimaryGeneratedColumn()
|
||||||
@IsOptional()
|
|
||||||
@IsInt()
|
@IsInt()
|
||||||
id: number;
|
id: number;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The address's description.
|
* The address's description.
|
||||||
*/
|
*/
|
||||||
@Column({nullable: true})
|
@Column({ nullable: true })
|
||||||
@IsString()
|
@IsString()
|
||||||
@IsOptional()
|
@IsOptional()
|
||||||
description?: string;
|
description?: string;
|
||||||
|
@ -43,7 +42,7 @@ export class Address {
|
||||||
* The address's second line.
|
* The address's second line.
|
||||||
* Containing optional information.
|
* Containing optional information.
|
||||||
*/
|
*/
|
||||||
@Column({nullable: true})
|
@Column({ nullable: true })
|
||||||
@IsString()
|
@IsString()
|
||||||
@IsOptional()
|
@IsOptional()
|
||||||
address2?: string;
|
address2?: string;
|
||||||
|
|
|
@ -13,7 +13,7 @@ export class DistanceDonation extends Donation {
|
||||||
* The runner associated.
|
* The runner associated.
|
||||||
*/
|
*/
|
||||||
@IsNotEmpty()
|
@IsNotEmpty()
|
||||||
@ManyToOne(() => Runner, runner => runner.distanceDonations, { nullable: true })
|
@ManyToOne(() => Runner, runner => runner.distanceDonations)
|
||||||
runner: Runner;
|
runner: Runner;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import {
|
import {
|
||||||
IsInt,
|
IsInt,
|
||||||
IsNotEmpty,
|
IsNotEmpty
|
||||||
IsOptional
|
|
||||||
} from "class-validator";
|
} from "class-validator";
|
||||||
import { Entity, ManyToOne, PrimaryGeneratedColumn, TableInheritance } from "typeorm";
|
import { Entity, ManyToOne, PrimaryGeneratedColumn, TableInheritance } from "typeorm";
|
||||||
import { Participant } from "./Participant";
|
import { Participant } from "./Participant";
|
||||||
|
@ -16,7 +15,6 @@ export abstract class Donation {
|
||||||
* Autogenerated unique id (primary key).
|
* Autogenerated unique id (primary key).
|
||||||
*/
|
*/
|
||||||
@PrimaryGeneratedColumn()
|
@PrimaryGeneratedColumn()
|
||||||
@IsOptional()
|
|
||||||
@IsInt()
|
@IsInt()
|
||||||
id: number;
|
id: number;
|
||||||
|
|
||||||
|
@ -24,7 +22,7 @@ export abstract class Donation {
|
||||||
* The donations's donor.
|
* The donations's donor.
|
||||||
*/
|
*/
|
||||||
@IsNotEmpty()
|
@IsNotEmpty()
|
||||||
@ManyToOne(() => Participant, donor => donor.donations, { nullable: true })
|
@ManyToOne(() => Participant, donor => donor.donations)
|
||||||
donor: Participant;
|
donor: Participant;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { Entity, Column, ChildEntity } from "typeorm";
|
|
||||||
import { IsBoolean } from "class-validator";
|
import { IsBoolean } from "class-validator";
|
||||||
|
import { ChildEntity, Column } from "typeorm";
|
||||||
import { Participant } from "./Participant";
|
import { Participant } from "./Participant";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { Entity, Column, ChildEntity } from "typeorm";
|
import { IsInt, IsPositive } from "class-validator";
|
||||||
import { IsInt, IsPositive, } from "class-validator";
|
import { ChildEntity, Column } from "typeorm";
|
||||||
import { Donation } from "./Donation";
|
import { Donation } from "./Donation";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,15 +1,14 @@
|
||||||
import { PrimaryGeneratedColumn, Column, OneToMany, ManyToOne, Entity } from "typeorm";
|
|
||||||
import {
|
import {
|
||||||
IsEmail,
|
IsEmail,
|
||||||
IsInt,
|
IsInt,
|
||||||
IsNotEmpty,
|
IsNotEmpty,
|
||||||
IsOptional,
|
IsOptional,
|
||||||
IsPhoneNumber,
|
IsPhoneNumber,
|
||||||
IsPositive,
|
|
||||||
IsString,
|
IsString
|
||||||
} from "class-validator";
|
} from "class-validator";
|
||||||
|
import { Column, Entity, ManyToOne, OneToMany, PrimaryGeneratedColumn } from "typeorm";
|
||||||
import { Address } from "./Address";
|
import { Address } from "./Address";
|
||||||
import { Donation } from "./Donation";
|
|
||||||
import { RunnerGroup } from "./RunnerGroup";
|
import { RunnerGroup } from "./RunnerGroup";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -17,11 +16,10 @@ import { RunnerGroup } from "./RunnerGroup";
|
||||||
*/
|
*/
|
||||||
@Entity()
|
@Entity()
|
||||||
export class GroupContact {
|
export class GroupContact {
|
||||||
/**
|
/**
|
||||||
* Autogenerated unique id (primary key).
|
* Autogenerated unique id (primary key).
|
||||||
*/
|
*/
|
||||||
@PrimaryGeneratedColumn()
|
@PrimaryGeneratedColumn()
|
||||||
@IsOptional()
|
|
||||||
@IsInt()
|
@IsInt()
|
||||||
id: number;
|
id: number;
|
||||||
|
|
||||||
|
@ -37,7 +35,7 @@ export class GroupContact {
|
||||||
* The contact's middle name.
|
* The contact's middle name.
|
||||||
* Optional
|
* Optional
|
||||||
*/
|
*/
|
||||||
@Column({nullable: true})
|
@Column({ nullable: true })
|
||||||
@IsOptional()
|
@IsOptional()
|
||||||
@IsString()
|
@IsString()
|
||||||
middlename?: string;
|
middlename?: string;
|
||||||
|
@ -62,7 +60,7 @@ export class GroupContact {
|
||||||
* The contact's phone number.
|
* The contact's phone number.
|
||||||
* Optional
|
* Optional
|
||||||
*/
|
*/
|
||||||
@Column({nullable: true})
|
@Column({ nullable: true })
|
||||||
@IsOptional()
|
@IsOptional()
|
||||||
@IsPhoneNumber("DE")
|
@IsPhoneNumber("DE")
|
||||||
phone?: string;
|
phone?: string;
|
||||||
|
@ -71,19 +69,13 @@ export class GroupContact {
|
||||||
* The contact's email address.
|
* The contact's email address.
|
||||||
* Optional
|
* Optional
|
||||||
*/
|
*/
|
||||||
@Column({nullable: true})
|
@Column({ nullable: true })
|
||||||
@IsOptional()
|
@IsOptional()
|
||||||
@IsEmail()
|
@IsEmail()
|
||||||
email?: string;
|
email?: string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Used to link the contact as the donor of a donation.
|
* Used to link contacts to groups.
|
||||||
*/
|
|
||||||
@OneToMany(() => Donation, donation => donation.donor, { nullable: true })
|
|
||||||
donations: Donation[];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Used to link runners to donations.
|
|
||||||
*/
|
*/
|
||||||
@OneToMany(() => RunnerGroup, group => group.contact, { nullable: true })
|
@OneToMany(() => RunnerGroup, group => group.contact, { nullable: true })
|
||||||
groups: RunnerGroup[];
|
groups: RunnerGroup[];
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
import { PrimaryGeneratedColumn, Column, OneToMany, ManyToOne, Entity, TableInheritance } from "typeorm";
|
|
||||||
import {
|
import {
|
||||||
IsEmail,
|
IsEmail,
|
||||||
IsInt,
|
IsInt,
|
||||||
IsNotEmpty,
|
IsNotEmpty,
|
||||||
IsOptional,
|
IsOptional,
|
||||||
IsPhoneNumber,
|
IsPhoneNumber,
|
||||||
IsPositive,
|
|
||||||
IsString,
|
IsString
|
||||||
} from "class-validator";
|
} from "class-validator";
|
||||||
|
import { Column, Entity, ManyToOne, OneToMany, PrimaryGeneratedColumn, TableInheritance } from "typeorm";
|
||||||
import { Address } from "./Address";
|
import { Address } from "./Address";
|
||||||
import { Donation } from "./Donation";
|
import { Donation } from "./Donation";
|
||||||
|
|
||||||
|
@ -21,7 +21,6 @@ export abstract class Participant {
|
||||||
* Autogenerated unique id (primary key).
|
* Autogenerated unique id (primary key).
|
||||||
*/
|
*/
|
||||||
@PrimaryGeneratedColumn()
|
@PrimaryGeneratedColumn()
|
||||||
@IsOptional()
|
|
||||||
@IsInt()
|
@IsInt()
|
||||||
id: number;
|
id: number;
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
import { PrimaryGeneratedColumn, Column, OneToMany, Entity, ManyToOne } from "typeorm";
|
|
||||||
import {
|
import {
|
||||||
IsInt,
|
IsInt,
|
||||||
IsNotEmpty,
|
IsNotEmpty,
|
||||||
IsOptional,
|
|
||||||
IsString,
|
IsString
|
||||||
} from "class-validator";
|
} from "class-validator";
|
||||||
|
import { Column, Entity, OneToMany, PrimaryGeneratedColumn } from "typeorm";
|
||||||
import { User } from './User';
|
import { User } from './User';
|
||||||
import { UserGroup } from './UserGroup';
|
import { UserGroup } from './UserGroup';
|
||||||
/**
|
/**
|
||||||
|
@ -16,7 +16,6 @@ export abstract class Permission {
|
||||||
* Autogenerated unique id (primary key).
|
* Autogenerated unique id (primary key).
|
||||||
*/
|
*/
|
||||||
@PrimaryGeneratedColumn()
|
@PrimaryGeneratedColumn()
|
||||||
@IsOptional()
|
|
||||||
@IsInt()
|
@IsInt()
|
||||||
id: number;
|
id: number;
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,7 @@ export class Runner extends Participant {
|
||||||
* The runner's associated group.
|
* The runner's associated group.
|
||||||
*/
|
*/
|
||||||
@IsNotEmpty()
|
@IsNotEmpty()
|
||||||
@ManyToOne(() => RunnerGroup, group => group.runners, { nullable: true })
|
@ManyToOne(() => RunnerGroup, group => group.runners, { nullable: false })
|
||||||
group: RunnerGroup;
|
group: RunnerGroup;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
import { Entity, PrimaryGeneratedColumn, Column, ManyToOne, OneToMany } from "typeorm";
|
|
||||||
import {
|
import {
|
||||||
IsBoolean,
|
IsBoolean,
|
||||||
IsEAN,
|
IsEAN,
|
||||||
IsInt,
|
IsInt,
|
||||||
IsNotEmpty,
|
IsNotEmpty,
|
||||||
IsOptional,
|
IsOptional,
|
||||||
IsString,
|
IsString
|
||||||
} from "class-validator";
|
} from "class-validator";
|
||||||
|
import { Column, Entity, ManyToOne, OneToMany, PrimaryGeneratedColumn } from "typeorm";
|
||||||
import { Runner } from "./Runner";
|
import { Runner } from "./Runner";
|
||||||
import { TrackScan } from "./TrackScan";
|
import { TrackScan } from "./TrackScan";
|
||||||
|
|
||||||
|
@ -19,7 +19,6 @@ export class RunnerCard {
|
||||||
* Autogenerated unique id (primary key).
|
* Autogenerated unique id (primary key).
|
||||||
*/
|
*/
|
||||||
@PrimaryGeneratedColumn()
|
@PrimaryGeneratedColumn()
|
||||||
@IsOptional()
|
|
||||||
@IsInt()
|
@IsInt()
|
||||||
id: number;
|
id: number;
|
||||||
|
|
||||||
|
|
|
@ -18,12 +18,11 @@ export abstract class RunnerGroup {
|
||||||
* Autogenerated unique id (primary key).
|
* Autogenerated unique id (primary key).
|
||||||
*/
|
*/
|
||||||
@PrimaryGeneratedColumn()
|
@PrimaryGeneratedColumn()
|
||||||
@IsOptional()
|
|
||||||
@IsInt()
|
@IsInt()
|
||||||
id: number;
|
id: number;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The group's first name.
|
* The group's name.
|
||||||
*/
|
*/
|
||||||
@Column()
|
@Column()
|
||||||
@IsNotEmpty()
|
@IsNotEmpty()
|
||||||
|
|
|
@ -15,7 +15,7 @@ export class RunnerTeam extends RunnerGroup {
|
||||||
* Optional
|
* Optional
|
||||||
*/
|
*/
|
||||||
@IsNotEmpty()
|
@IsNotEmpty()
|
||||||
@ManyToOne(() => RunnerOrganisation, org => org.teams, { nullable: true })
|
@ManyToOne(() => RunnerOrganisation, org => org.teams, { nullable: false })
|
||||||
parentGroup?: RunnerOrganisation;
|
parentGroup?: RunnerOrganisation;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
import { PrimaryGeneratedColumn, Column, ManyToOne, Entity, TableInheritance } from "typeorm";
|
|
||||||
import {
|
import {
|
||||||
IsBoolean,
|
IsBoolean,
|
||||||
IsInt,
|
IsInt,
|
||||||
IsNotEmpty,
|
IsNotEmpty,
|
||||||
IsOptional,
|
|
||||||
IsPositive,
|
IsPositive
|
||||||
} from "class-validator";
|
} from "class-validator";
|
||||||
|
import { Column, Entity, ManyToOne, PrimaryGeneratedColumn, TableInheritance } from "typeorm";
|
||||||
import { Runner } from "./Runner";
|
import { Runner } from "./Runner";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -18,7 +18,6 @@ export abstract class Scan {
|
||||||
* Autogenerated unique id (primary key).
|
* Autogenerated unique id (primary key).
|
||||||
*/
|
*/
|
||||||
@PrimaryGeneratedColumn()
|
@PrimaryGeneratedColumn()
|
||||||
@IsOptional()
|
|
||||||
@IsInt()
|
@IsInt()
|
||||||
id: number;
|
id: number;
|
||||||
|
|
||||||
|
@ -26,7 +25,7 @@ export abstract class Scan {
|
||||||
* The associated runner.
|
* The associated runner.
|
||||||
*/
|
*/
|
||||||
@IsNotEmpty()
|
@IsNotEmpty()
|
||||||
@ManyToOne(() => Runner, runner => runner.scans, { nullable: true })
|
@ManyToOne(() => Runner, runner => runner.scans, { nullable: false })
|
||||||
runner: Runner;
|
runner: Runner;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -43,12 +42,4 @@ export abstract class Scan {
|
||||||
@Column()
|
@Column()
|
||||||
@IsBoolean()
|
@IsBoolean()
|
||||||
valid: boolean = true;
|
valid: boolean = true;
|
||||||
|
}
|
||||||
/**
|
|
||||||
* seconds since last scan
|
|
||||||
*/
|
|
||||||
@IsInt()
|
|
||||||
@IsOptional()
|
|
||||||
secondsSinceLastScan: number;
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,11 +1,11 @@
|
||||||
import { Entity, PrimaryGeneratedColumn, Column, ManyToOne, OneToMany } from "typeorm";
|
|
||||||
import {
|
import {
|
||||||
IsBoolean,
|
IsBoolean,
|
||||||
IsInt,
|
IsInt,
|
||||||
IsNotEmpty,
|
IsNotEmpty,
|
||||||
IsOptional,
|
IsOptional,
|
||||||
IsString,
|
IsString
|
||||||
} from "class-validator";
|
} from "class-validator";
|
||||||
|
import { Column, Entity, ManyToOne, OneToMany, PrimaryGeneratedColumn } from "typeorm";
|
||||||
import { Track } from "./Track";
|
import { Track } from "./Track";
|
||||||
import { TrackScan } from "./TrackScan";
|
import { TrackScan } from "./TrackScan";
|
||||||
|
|
||||||
|
@ -18,14 +18,13 @@ export class ScanStation {
|
||||||
* Autogenerated unique id (primary key).
|
* Autogenerated unique id (primary key).
|
||||||
*/
|
*/
|
||||||
@PrimaryGeneratedColumn()
|
@PrimaryGeneratedColumn()
|
||||||
@IsOptional()
|
|
||||||
@IsInt()
|
@IsInt()
|
||||||
id: number;
|
id: number;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The station's description.
|
* The station's description.
|
||||||
*/
|
*/
|
||||||
@Column({nullable: true})
|
@Column({ nullable: true })
|
||||||
@IsOptional()
|
@IsOptional()
|
||||||
@IsString()
|
@IsString()
|
||||||
description?: string;
|
description?: string;
|
||||||
|
@ -34,7 +33,7 @@ export class ScanStation {
|
||||||
* The track this station is associated with.
|
* The track this station is associated with.
|
||||||
*/
|
*/
|
||||||
@IsNotEmpty()
|
@IsNotEmpty()
|
||||||
@ManyToOne(() => Track, track => track.stations, { nullable: true })
|
@ManyToOne(() => Track, track => track.stations, { nullable: false })
|
||||||
track: Track;
|
track: Track;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
import { Entity, PrimaryGeneratedColumn, Column, OneToMany } from "typeorm";
|
|
||||||
import {
|
import {
|
||||||
IsInt,
|
IsInt,
|
||||||
IsNotEmpty,
|
IsNotEmpty,
|
||||||
IsOptional,
|
|
||||||
IsPositive,
|
IsPositive,
|
||||||
IsString,
|
IsString
|
||||||
} from "class-validator";
|
} from "class-validator";
|
||||||
|
import { Column, Entity, OneToMany, PrimaryGeneratedColumn } from "typeorm";
|
||||||
import { ScanStation } from "./ScanStation";
|
import { ScanStation } from "./ScanStation";
|
||||||
import { TrackScan } from "./TrackScan";
|
import { TrackScan } from "./TrackScan";
|
||||||
|
|
||||||
|
@ -18,7 +18,6 @@ export class Track {
|
||||||
* Autogenerated unique id (primary key).
|
* Autogenerated unique id (primary key).
|
||||||
*/
|
*/
|
||||||
@PrimaryGeneratedColumn()
|
@PrimaryGeneratedColumn()
|
||||||
@IsOptional()
|
|
||||||
@IsInt()
|
@IsInt()
|
||||||
id: number;;
|
id: number;;
|
||||||
|
|
||||||
|
|
|
@ -1,17 +1,15 @@
|
||||||
import { PrimaryGeneratedColumn, Column, ManyToOne, Entity, ChildEntity } from "typeorm";
|
|
||||||
import {
|
import {
|
||||||
IsBoolean,
|
|
||||||
IsDateString,
|
IsDateString,
|
||||||
IsInt,
|
IsInt,
|
||||||
IsNotEmpty,
|
IsNotEmpty,
|
||||||
IsOptional,
|
|
||||||
IsPositive,
|
IsPositive
|
||||||
} from "class-validator";
|
} from "class-validator";
|
||||||
import { Scan } from "./Scan";
|
import { ChildEntity, Column, ManyToOne } from "typeorm";
|
||||||
import { Runner } from "./Runner";
|
|
||||||
import { Track } from "./Track";
|
|
||||||
import { RunnerCard } from "./RunnerCard";
|
import { RunnerCard } from "./RunnerCard";
|
||||||
|
import { Scan } from "./Scan";
|
||||||
import { ScanStation } from "./ScanStation";
|
import { ScanStation } from "./ScanStation";
|
||||||
|
import { Track } from "./Track";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Defines the scan interface.
|
* Defines the scan interface.
|
||||||
|
|
|
@ -13,7 +13,6 @@ export class User {
|
||||||
* autogenerated unique id (primary key).
|
* autogenerated unique id (primary key).
|
||||||
*/
|
*/
|
||||||
@PrimaryGeneratedColumn()
|
@PrimaryGeneratedColumn()
|
||||||
@IsOptional()
|
|
||||||
@IsInt()
|
@IsInt()
|
||||||
id: number;
|
id: number;
|
||||||
|
|
||||||
|
@ -21,30 +20,30 @@ export class User {
|
||||||
* uuid
|
* uuid
|
||||||
*/
|
*/
|
||||||
@Column()
|
@Column()
|
||||||
@IsUUID("4")
|
@IsUUID(4)
|
||||||
uuid: string;
|
uuid: string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* user email
|
* user email
|
||||||
*/
|
*/
|
||||||
@Column()
|
@Column({ nullable: true })
|
||||||
@IsEmail()
|
@IsEmail()
|
||||||
email: string;
|
email?: string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* user phone
|
* user phone
|
||||||
*/
|
*/
|
||||||
@Column()
|
@Column({ nullable: true })
|
||||||
@IsPhoneNumber("ZZ")
|
|
||||||
@IsOptional()
|
@IsOptional()
|
||||||
phone: string;
|
@IsPhoneNumber("ZZ")
|
||||||
|
phone?: string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* username
|
* username
|
||||||
*/
|
*/
|
||||||
@Column()
|
@Column({ nullable: true })
|
||||||
@IsString()
|
@IsString()
|
||||||
username: string;
|
username?: string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* firstname
|
* firstname
|
||||||
|
@ -57,10 +56,10 @@ export class User {
|
||||||
/**
|
/**
|
||||||
* middlename
|
* middlename
|
||||||
*/
|
*/
|
||||||
@Column()
|
@Column({ nullable: true })
|
||||||
@IsString()
|
@IsString()
|
||||||
@IsOptional()
|
@IsOptional()
|
||||||
middlename: string;
|
middlename?: string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* lastname
|
* lastname
|
||||||
|
@ -81,13 +80,15 @@ export class User {
|
||||||
/**
|
/**
|
||||||
* permissions
|
* permissions
|
||||||
*/
|
*/
|
||||||
|
@IsOptional()
|
||||||
@ManyToOne(() => Permission, permission => permission.users, { nullable: true })
|
@ManyToOne(() => Permission, permission => permission.users, { nullable: true })
|
||||||
permissions: Permission[];
|
permissions?: Permission[];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* groups
|
* groups
|
||||||
*/
|
*/
|
||||||
@ManyToMany(() => UserGroup)
|
@IsOptional()
|
||||||
|
@ManyToMany(() => UserGroup, { nullable: true })
|
||||||
@JoinTable()
|
@JoinTable()
|
||||||
groups: UserGroup[];
|
groups: UserGroup[];
|
||||||
|
|
||||||
|
@ -96,27 +97,29 @@ export class User {
|
||||||
*/
|
*/
|
||||||
@Column()
|
@Column()
|
||||||
@IsBoolean()
|
@IsBoolean()
|
||||||
enabled: boolean;
|
enabled: boolean = true;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* jwt refresh count
|
* jwt refresh count
|
||||||
*/
|
*/
|
||||||
@IsInt()
|
@IsInt()
|
||||||
@Column({ default: 1 })
|
@Column({ default: 1 })
|
||||||
refreshTokenCount: number;
|
refreshTokenCount?: number;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* profilepic
|
* profilepic
|
||||||
*/
|
*/
|
||||||
@Column()
|
@Column({ nullable: true })
|
||||||
@IsString()
|
@IsString()
|
||||||
profilepic: string;
|
@IsOptional()
|
||||||
|
profilePic?: string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* actions
|
* actions
|
||||||
*/
|
*/
|
||||||
@OneToMany(() => UserAction, action => action.user)
|
@IsOptional()
|
||||||
actions: UserAction
|
@OneToMany(() => UserAction, action => action.user, { nullable: true })
|
||||||
|
actions: UserAction[]
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* calculate all permissions
|
* calculate all permissions
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
import { PrimaryGeneratedColumn, Column, OneToMany, Entity, ManyToOne } from "typeorm";
|
|
||||||
import {
|
import {
|
||||||
IsInt,
|
IsInt,
|
||||||
IsNotEmpty,
|
IsNotEmpty,
|
||||||
IsOptional,
|
IsOptional,
|
||||||
IsString,
|
IsString
|
||||||
} from "class-validator";
|
} from "class-validator";
|
||||||
|
import { Column, Entity, ManyToOne, PrimaryGeneratedColumn } from "typeorm";
|
||||||
import { User } from './User';
|
import { User } from './User';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -16,7 +16,6 @@ export class UserAction {
|
||||||
* Autogenerated unique id (primary key).
|
* Autogenerated unique id (primary key).
|
||||||
*/
|
*/
|
||||||
@PrimaryGeneratedColumn()
|
@PrimaryGeneratedColumn()
|
||||||
@IsOptional()
|
|
||||||
@IsInt()
|
@IsInt()
|
||||||
id: number;
|
id: number;
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,6 @@ export class UserGroup {
|
||||||
* Autogenerated unique id (primary key).
|
* Autogenerated unique id (primary key).
|
||||||
*/
|
*/
|
||||||
@PrimaryGeneratedColumn()
|
@PrimaryGeneratedColumn()
|
||||||
@IsOptional()
|
|
||||||
@IsInt()
|
@IsInt()
|
||||||
id: number;
|
id: number;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user