This commit is contained in:
Bastian Wagner
2024-10-18 16:52:58 +02:00
parent ed6b2b9c45
commit 76e54cfaa0
32 changed files with 552 additions and 7 deletions

View File

@@ -0,0 +1,8 @@
import { IsNotEmpty, MaxLength, MinLength } from 'class-validator';
export class CreateKeySystemDto {
@IsNotEmpty()
@MinLength(2)
@MaxLength(255)
name: string;
}

View File

@@ -1,2 +1,3 @@
export * from './login.dto';
export * from './auth-code.dto';
export * from './create-key-system.dto';

View File

@@ -0,0 +1,32 @@
import {
Column,
CreateDateColumn,
Entity,
ManyToOne,
OneToMany,
PrimaryGeneratedColumn,
UpdateDateColumn,
} from 'typeorm';
import { Key } from './key.entity';
import { KeySystem } from './system.entity';
@Entity()
export class Cylinder {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column({ nullable: false, unique: true })
name: string;
@OneToMany(() => Key, (key) => key.cylinder)
keys: Key[];
@ManyToOne(() => KeySystem, (sys) => sys.cylinders)
system: KeySystem;
@CreateDateColumn({ name: 'created_at' })
createdAt: Date;
@UpdateDateColumn({ name: 'updatet_at' })
updatedAt: Date;
}

View File

@@ -1,3 +1,6 @@
export * from './sso.user.entity';
export * from './user.entity';
export * from './role.entity';
export * from './cylinder.entity';
export * from './key.entity';
export * from './key_activity.entity';

View File

@@ -0,0 +1,34 @@
import {
Column,
CreateDateColumn,
Entity,
ManyToOne,
PrimaryGeneratedColumn,
UpdateDateColumn,
} from 'typeorm';
import { Cylinder } from './cylinder.entity';
import { IKey } from '../interface/key.interface';
@Entity()
export class Key implements IKey {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column({ nullable: true })
name: string;
@Column({ name: 'key_number', unique: true })
nr: number;
@Column({ name: 'handed_out', default: false })
handedOut: boolean;
@ManyToOne(() => Cylinder, (cylinder) => cylinder.keys)
cylinder: Cylinder;
@CreateDateColumn({ name: 'created_at' })
createdAt: Date;
@UpdateDateColumn({ name: 'updatet_at' })
updatedAt: Date;
}

View File

@@ -0,0 +1,37 @@
import {
Column,
CreateDateColumn,
Entity,
ManyToOne,
PrimaryGeneratedColumn,
} from 'typeorm';
import { User } from './user.entity';
import { IKey } from '../interface/key.interface';
import { Cylinder } from './cylinder.entity';
@Entity()
export class KeyActivity implements IKey {
@PrimaryGeneratedColumn()
primaryId: number;
@Column()
id: string;
@Column({ nullable: true })
name: string;
@Column({ name: 'key_number' })
nr: number;
@Column({ name: 'handed_out', default: false })
handedOut: boolean;
@ManyToOne(() => Cylinder)
cylinder: Cylinder;
@CreateDateColumn({ name: 'created_at' })
createdAt: Date;
@ManyToOne(() => User)
user: User;
}

View File

@@ -0,0 +1,35 @@
import {
Column,
CreateDateColumn,
Entity,
JoinTable,
ManyToMany,
OneToMany,
PrimaryGeneratedColumn,
UpdateDateColumn,
} from 'typeorm';
import { IKeySystem } from '../interface';
import { User } from './user.entity';
import { Cylinder } from './cylinder.entity';
@Entity()
export class KeySystem implements IKeySystem {
@PrimaryGeneratedColumn('uuid')
id: string;
@CreateDateColumn({ name: 'created_at' })
createdAt: Date;
@Column({ nullable: false, unique: true })
name: string;
@ManyToMany(() => User, (manager) => manager.systems)
@JoinTable()
managers: User[];
@OneToMany(() => Cylinder, (cylinder) => cylinder.system)
cylinders: Cylinder[];
@UpdateDateColumn({ name: 'updatet_at' })
updatedAt: Date;
}

View File

@@ -4,6 +4,7 @@ import {
CreateDateColumn,
Entity,
JoinColumn,
ManyToMany,
ManyToOne,
OneToOne,
PrimaryGeneratedColumn,
@@ -12,6 +13,7 @@ import { IUser } from '../interface';
import { SSOUser } from './sso.user.entity';
import { IsEmail } from 'class-validator';
import { Role } from './role.entity';
import { KeySystem } from './system.entity';
@Entity()
export class User implements IUser {
@@ -46,6 +48,9 @@ export class User implements IUser {
@Transform(({ value }) => value.name)
role: Role;
@ManyToMany(() => KeySystem, (system) => system.managers)
systems: KeySystem[];
accessToken?: string;
refreshToken?: string;
}

View File

@@ -0,0 +1,6 @@
import { Request } from 'express';
import { User } from '../entitites';
export interface AuthenticatedRequest extends Request {
user: User;
}

View File

@@ -1,3 +1,4 @@
export * from './user.interface';
export * from './external-access-token.payload.interface';
export * from './payload.interface';
export * from './key-system.interface';

View File

@@ -0,0 +1,7 @@
import { IUser } from './user.interface';
export interface IKeySystem {
id: string;
name: string;
managers: IUser[];
}

View File

@@ -0,0 +1,10 @@
import { Cylinder } from '../entitites';
export interface IKey {
id: string;
name: string;
nr: number;
handedOut: boolean;
cylinder: Cylinder;
createdAt: Date;
}

View File

@@ -0,0 +1,10 @@
import { Injectable } from '@nestjs/common';
import { Repository, DataSource } from 'typeorm';
import { Cylinder } from '../entitites';
@Injectable()
export class CylinderRepository extends Repository<Cylinder> {
constructor(dataSource: DataSource) {
super(Cylinder, dataSource.createEntityManager());
}
}

View File

@@ -1,3 +1,7 @@
export * from './user.repository';
export * from './ssouser.repository';
export * from './role.repository';
export * from './system.repository';
export * from './cylinder.repository';
export * from './key.repository';
export * from './key_activity.repository';

View File

@@ -0,0 +1,10 @@
import { Injectable } from '@nestjs/common';
import { Repository, DataSource } from 'typeorm';
import { Key } from '../entitites';
@Injectable()
export class KeyRepository extends Repository<Key> {
constructor(dataSource: DataSource) {
super(Key, dataSource.createEntityManager());
}
}

View File

@@ -0,0 +1,10 @@
import { Injectable } from '@nestjs/common';
import { Repository, DataSource } from 'typeorm';
import { KeyActivity } from '../entitites';
@Injectable()
export class KeyActivityRepository extends Repository<KeyActivity> {
constructor(dataSource: DataSource) {
super(KeyActivity, dataSource.createEntityManager());
}
}

View File

@@ -0,0 +1,10 @@
import { Injectable } from '@nestjs/common';
import { Repository, DataSource } from 'typeorm';
import { KeySystem } from '../entitites/system.entity';
@Injectable()
export class KeySystemRepository extends Repository<KeySystem> {
constructor(dataSource: DataSource) {
super(KeySystem, dataSource.createEntityManager());
}
}