diff --git a/ormconfig.ts b/ormconfig.ts index b3b99c3..852ff37 100644 --- a/ormconfig.ts +++ b/ormconfig.ts @@ -8,5 +8,5 @@ export default { username: process.env.DB_USER, password: process.env.DB_PASSWORD, database: process.env.DB_NAME, - entities: ["src/models/*.ts"] + entities: ["src/models/entities/*.ts"] }; diff --git a/src/controllers/RunnerController.ts b/src/controllers/RunnerController.ts index da80b31..798d3c6 100644 --- a/src/controllers/RunnerController.ts +++ b/src/controllers/RunnerController.ts @@ -2,9 +2,9 @@ import { JsonController, Param, Body, Get, Post, Put, Delete, OnUndefined } from import { getConnectionManager, Repository } from 'typeorm'; import { EntityFromBody } from 'typeorm-routing-controllers-extensions'; import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi'; -import { Runner } from '../models/Runner'; +import { Runner } from '../models/entities/Runner'; import { RunnerGroupNeededError, RunnerGroupNotFoundError, RunnerIdsNotMatchingError, RunnerNotFoundError, RunnerOnlyOneGroupAllowedError } from '../errors/RunnerErrors'; -import { CreateRunner } from '../models/CreateRunner'; +import { CreateRunner } from '../models/creation/CreateRunner'; @JsonController('/runners') diff --git a/src/controllers/RunnerOrganisationController.ts b/src/controllers/RunnerOrganisationController.ts index 1575ef0..8033c9b 100644 --- a/src/controllers/RunnerOrganisationController.ts +++ b/src/controllers/RunnerOrganisationController.ts @@ -2,10 +2,10 @@ import { JsonController, Param, Body, Get, Post, Put, Delete, OnUndefined } from import { getConnectionManager, Repository } from 'typeorm'; import { EntityFromBody } from 'typeorm-routing-controllers-extensions'; import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi'; -import { RunnerOrganisation } from '../models/RunnerOrganisation'; +import { RunnerOrganisation } from '../models/entities/RunnerOrganisation'; import { RunnerOrganisationIdsNotMatchingError, RunnerOrganisationNotFoundError } from '../errors/RunnerOrganisationErrors'; -import { CreateRunnerOrganisation } from '../models/CreateRunnerOrganisation'; -import { RunnerGroup } from '../models/RunnerGroup'; +import { CreateRunnerOrganisation } from '../models/creation/CreateRunnerOrganisation'; +import { RunnerGroup } from '../models/entities/RunnerGroup'; @JsonController('/organisations') diff --git a/src/controllers/TrackController.ts b/src/controllers/TrackController.ts index 7b22cc2..869f1be 100644 --- a/src/controllers/TrackController.ts +++ b/src/controllers/TrackController.ts @@ -2,10 +2,10 @@ import { JsonController, Param, Body, Get, Post, Put, Delete, NotFoundError, OnU import { getConnectionManager, Repository } from 'typeorm'; import { EntityFromBody } from 'typeorm-routing-controllers-extensions'; import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi'; -import { Track } from '../models/Track'; +import { Track } from '../models/entities/Track'; import { IsInt, IsNotEmpty, IsPositive, IsString } from 'class-validator'; import { TrackIdsNotMatchingError, TrackNotFoundError } from "../errors/TrackErrors"; -import { CreateTrack } from '../models/CreateTrack'; +import { CreateTrack } from '../models/creation/CreateTrack'; @JsonController('/tracks') //@Authorized("TRACKS:read") diff --git a/src/models/CreateRunner.ts b/src/models/creation/CreateRunner.ts similarity index 85% rename from src/models/CreateRunner.ts rename to src/models/creation/CreateRunner.ts index 9eb15eb..178c5fb 100644 --- a/src/models/CreateRunner.ts +++ b/src/models/creation/CreateRunner.ts @@ -1,11 +1,11 @@ import { IsEmail, IsInt, IsNotEmpty, IsOptional, IsPhoneNumber, IsPositive, IsString } from 'class-validator'; -import { Runner } from '../models/Runner'; +import { Runner } from '../entities/Runner'; import { getConnectionManager, Repository } from 'typeorm'; import { group } from 'console'; -import { RunnerOnlyOneGroupAllowedError, RunnerGroupNeededError, RunnerGroupNotFoundError } from '../errors/RunnerErrors'; -import { RunnerOrganisation } from './RunnerOrganisation'; -import { RunnerTeam } from './RunnerTeam'; -import { RunnerGroup } from './RunnerGroup'; +import { RunnerOnlyOneGroupAllowedError, RunnerGroupNeededError, RunnerGroupNotFoundError } from '../../errors/RunnerErrors'; +import { RunnerOrganisation } from '../entities/RunnerOrganisation'; +import { RunnerTeam } from '../entities/RunnerTeam'; +import { RunnerGroup } from '../entities/RunnerGroup'; import { Address } from 'cluster'; export class CreateRunner { diff --git a/src/models/CreateRunnerOrganisation.ts b/src/models/creation/CreateRunnerOrganisation.ts similarity index 84% rename from src/models/CreateRunnerOrganisation.ts rename to src/models/creation/CreateRunnerOrganisation.ts index b7e5c71..f054e5a 100644 --- a/src/models/CreateRunnerOrganisation.ts +++ b/src/models/creation/CreateRunnerOrganisation.ts @@ -1,5 +1,5 @@ import { IsString } from 'class-validator'; -import { RunnerOrganisation } from './RunnerOrganisation'; +import { RunnerOrganisation } from '../entities/RunnerOrganisation'; export class CreateRunnerOrganisation { @IsString() diff --git a/src/models/CreateTrack.ts b/src/models/creation/CreateTrack.ts similarity index 93% rename from src/models/CreateTrack.ts rename to src/models/creation/CreateTrack.ts index 015a58f..42bf384 100644 --- a/src/models/CreateTrack.ts +++ b/src/models/creation/CreateTrack.ts @@ -1,5 +1,5 @@ import { IsInt, IsNotEmpty, IsPositive, IsString } from 'class-validator'; -import { Track } from './Track'; +import { Track } from '../entities/Track'; export class CreateTrack { /** diff --git a/src/models/Address.ts b/src/models/entities/Address.ts similarity index 100% rename from src/models/Address.ts rename to src/models/entities/Address.ts diff --git a/src/models/DistanceDonation.ts b/src/models/entities/DistanceDonation.ts similarity index 100% rename from src/models/DistanceDonation.ts rename to src/models/entities/DistanceDonation.ts diff --git a/src/models/Donation.ts b/src/models/entities/Donation.ts similarity index 100% rename from src/models/Donation.ts rename to src/models/entities/Donation.ts diff --git a/src/models/Donor.ts b/src/models/entities/Donor.ts similarity index 100% rename from src/models/Donor.ts rename to src/models/entities/Donor.ts diff --git a/src/models/FixedDonation.ts b/src/models/entities/FixedDonation.ts similarity index 100% rename from src/models/FixedDonation.ts rename to src/models/entities/FixedDonation.ts diff --git a/src/models/GroupContact.ts b/src/models/entities/GroupContact.ts similarity index 100% rename from src/models/GroupContact.ts rename to src/models/entities/GroupContact.ts diff --git a/src/models/Participant.ts b/src/models/entities/Participant.ts similarity index 100% rename from src/models/Participant.ts rename to src/models/entities/Participant.ts diff --git a/src/models/Permission.ts b/src/models/entities/Permission.ts similarity index 100% rename from src/models/Permission.ts rename to src/models/entities/Permission.ts diff --git a/src/models/Runner.ts b/src/models/entities/Runner.ts similarity index 100% rename from src/models/Runner.ts rename to src/models/entities/Runner.ts diff --git a/src/models/RunnerCard.ts b/src/models/entities/RunnerCard.ts similarity index 100% rename from src/models/RunnerCard.ts rename to src/models/entities/RunnerCard.ts diff --git a/src/models/RunnerGroup.ts b/src/models/entities/RunnerGroup.ts similarity index 100% rename from src/models/RunnerGroup.ts rename to src/models/entities/RunnerGroup.ts diff --git a/src/models/RunnerOrganisation.ts b/src/models/entities/RunnerOrganisation.ts similarity index 100% rename from src/models/RunnerOrganisation.ts rename to src/models/entities/RunnerOrganisation.ts diff --git a/src/models/RunnerTeam.ts b/src/models/entities/RunnerTeam.ts similarity index 100% rename from src/models/RunnerTeam.ts rename to src/models/entities/RunnerTeam.ts diff --git a/src/models/Scan.ts b/src/models/entities/Scan.ts similarity index 100% rename from src/models/Scan.ts rename to src/models/entities/Scan.ts diff --git a/src/models/ScanStation.ts b/src/models/entities/ScanStation.ts similarity index 100% rename from src/models/ScanStation.ts rename to src/models/entities/ScanStation.ts diff --git a/src/models/Track.ts b/src/models/entities/Track.ts similarity index 100% rename from src/models/Track.ts rename to src/models/entities/Track.ts diff --git a/src/models/TrackScan.ts b/src/models/entities/TrackScan.ts similarity index 100% rename from src/models/TrackScan.ts rename to src/models/entities/TrackScan.ts diff --git a/src/models/User.ts b/src/models/entities/User.ts similarity index 94% rename from src/models/User.ts rename to src/models/entities/User.ts index 94d770e..d5c4bfa 100644 --- a/src/models/User.ts +++ b/src/models/entities/User.ts @@ -1,130 +1,130 @@ -import { Entity, Column, OneToMany, ManyToOne, PrimaryGeneratedColumn, Generated, Unique, JoinTable, ManyToMany } from "typeorm"; -import { IsBoolean, IsEmail, IsInt, IsNotEmpty, IsOptional, IsPhoneNumber, IsString, isUUID, } from "class-validator"; -import { UserGroup } from './UserGroup'; -import { Permission } from './Permission'; -import { UserAction } from './UserAction'; - -/** - * Defines a admin user. -*/ -@Entity() -export class User { - /** - * autogenerated unique id (primary key). - */ - @PrimaryGeneratedColumn() - @IsOptional() - @IsInt() - id: number; - - /** - * autogenerated uuid - */ - @IsOptional() - @IsInt() - @Generated("uuid") - uuid: string; - - /** - * user email - */ - @IsEmail() - email: string; - - /** - * user phone - */ - @IsPhoneNumber("ZZ") - @IsOptional() - phone: string; - - /** - * username - */ - @IsString() - username: string; - - /** - * firstname - */ - @IsString() - @IsNotEmpty() - firstname: string; - - /** - * middlename - */ - @IsString() - @IsOptional() - middlename: string; - - /** - * lastname - */ - @IsString() - @IsNotEmpty() - lastname: string; - - /** - * password - */ - @IsString() - @IsNotEmpty() - password: string; - - /** - * permissions - */ - @ManyToOne(() => Permission, permission => permission.users, { nullable: true }) - permissions: Permission[]; - - /** - * groups - */ - @ManyToMany(() => UserGroup) - @JoinTable() - groups: UserGroup[]; - - /** - * is user enabled? - */ - @IsBoolean() - enabled: boolean; - - /** - * jwt refresh count - */ - @IsInt() - @Column({ default: 1 }) - refreshTokenCount: number; - - /** - * profilepic - */ - @IsString() - profilepic: string; - - /** - * actions - */ - @OneToMany(() => UserAction, action => action.user) - actions: UserAction - - /** - * calculate all permissions - */ - public get calc_permissions(): Permission[] { - let final_permissions = [] - this.groups.forEach((permission) => { - if (!final_permissions.includes(permission)) { - final_permissions.push(permission) - } - }) - this.permissions.forEach((permission) => { - if (!final_permissions.includes(permission)) { - final_permissions.push(permission) - } - }) - return final_permissions - } -} +import { Entity, Column, OneToMany, ManyToOne, PrimaryGeneratedColumn, Generated, Unique, JoinTable, ManyToMany } from "typeorm"; +import { IsBoolean, IsEmail, IsInt, IsNotEmpty, IsOptional, IsPhoneNumber, IsString, isUUID, } from "class-validator"; +import { UserGroup } from './UserGroup'; +import { Permission } from './Permission'; +import { UserAction } from './UserAction'; + +/** + * Defines a admin user. +*/ +@Entity() +export class User { + /** + * autogenerated unique id (primary key). + */ + @PrimaryGeneratedColumn() + @IsOptional() + @IsInt() + id: number; + + /** + * autogenerated uuid + */ + @IsOptional() + @IsInt() + @Generated("uuid") + uuid: string; + + /** + * user email + */ + @IsEmail() + email: string; + + /** + * user phone + */ + @IsPhoneNumber("ZZ") + @IsOptional() + phone: string; + + /** + * username + */ + @IsString() + username: string; + + /** + * firstname + */ + @IsString() + @IsNotEmpty() + firstname: string; + + /** + * middlename + */ + @IsString() + @IsOptional() + middlename: string; + + /** + * lastname + */ + @IsString() + @IsNotEmpty() + lastname: string; + + /** + * password + */ + @IsString() + @IsNotEmpty() + password: string; + + /** + * permissions + */ + @ManyToOne(() => Permission, permission => permission.users, { nullable: true }) + permissions: Permission[]; + + /** + * groups + */ + @ManyToMany(() => UserGroup) + @JoinTable() + groups: UserGroup[]; + + /** + * is user enabled? + */ + @IsBoolean() + enabled: boolean; + + /** + * jwt refresh count + */ + @IsInt() + @Column({ default: 1 }) + refreshTokenCount: number; + + /** + * profilepic + */ + @IsString() + profilepic: string; + + /** + * actions + */ + @OneToMany(() => UserAction, action => action.user) + actions: UserAction + + /** + * calculate all permissions + */ + public get calc_permissions(): Permission[] { + let final_permissions = [] + this.groups.forEach((permission) => { + if (!final_permissions.includes(permission)) { + final_permissions.push(permission) + } + }) + this.permissions.forEach((permission) => { + if (!final_permissions.includes(permission)) { + final_permissions.push(permission) + } + }) + return final_permissions + } +} diff --git a/src/models/UserAction.ts b/src/models/entities/UserAction.ts similarity index 100% rename from src/models/UserAction.ts rename to src/models/entities/UserAction.ts diff --git a/src/models/UserGroup.ts b/src/models/entities/UserGroup.ts similarity index 100% rename from src/models/UserGroup.ts rename to src/models/entities/UserGroup.ts