From 861aa788ae95163edbc6a2c7360bdb6a1229c103 Mon Sep 17 00:00:00 2001 From: faris Aljohari <83524184+farisaljohari@users.noreply.github.com> Date: Sun, 31 Mar 2024 13:36:19 +0300 Subject: [PATCH] Add space type DTO, entity, repository, and module --- .../src/modules/space-type/dtos/index.ts | 1 + .../modules/space-type/dtos/space.type.dto.ts | 11 ++++++++ .../src/modules/space-type/entities/index.ts | 1 + .../space-type/entities/space.type.entity.ts | 26 +++++++++++++++++++ .../modules/space-type/repositories/index.ts | 1 + .../repositories/space.type.repository.ts | 10 +++++++ .../space.type.repository.module.ts | 11 ++++++++ 7 files changed, 61 insertions(+) create mode 100644 libs/common/src/modules/space-type/dtos/index.ts create mode 100644 libs/common/src/modules/space-type/dtos/space.type.dto.ts create mode 100644 libs/common/src/modules/space-type/entities/index.ts create mode 100644 libs/common/src/modules/space-type/entities/space.type.entity.ts create mode 100644 libs/common/src/modules/space-type/repositories/index.ts create mode 100644 libs/common/src/modules/space-type/repositories/space.type.repository.ts create mode 100644 libs/common/src/modules/space-type/space.type.repository.module.ts diff --git a/libs/common/src/modules/space-type/dtos/index.ts b/libs/common/src/modules/space-type/dtos/index.ts new file mode 100644 index 0000000..e9824e7 --- /dev/null +++ b/libs/common/src/modules/space-type/dtos/index.ts @@ -0,0 +1 @@ +export * from './space.type.dto'; diff --git a/libs/common/src/modules/space-type/dtos/space.type.dto.ts b/libs/common/src/modules/space-type/dtos/space.type.dto.ts new file mode 100644 index 0000000..2f3d807 --- /dev/null +++ b/libs/common/src/modules/space-type/dtos/space.type.dto.ts @@ -0,0 +1,11 @@ +import { IsNotEmpty, IsString } from 'class-validator'; + +export class SpaceTypeDto { + @IsString() + @IsNotEmpty() + public uuid: string; + + @IsString() + @IsNotEmpty() + public type: string; +} diff --git a/libs/common/src/modules/space-type/entities/index.ts b/libs/common/src/modules/space-type/entities/index.ts new file mode 100644 index 0000000..71944ff --- /dev/null +++ b/libs/common/src/modules/space-type/entities/index.ts @@ -0,0 +1 @@ +export * from './space.type.entity'; diff --git a/libs/common/src/modules/space-type/entities/space.type.entity.ts b/libs/common/src/modules/space-type/entities/space.type.entity.ts new file mode 100644 index 0000000..f66ee86 --- /dev/null +++ b/libs/common/src/modules/space-type/entities/space.type.entity.ts @@ -0,0 +1,26 @@ +import { Column, Entity, OneToMany } from 'typeorm'; +import { SpaceTypeDto } from '../dtos'; +import { AbstractEntity } from '../../abstract/entities/abstract.entity'; +import { SpaceEntity } from '../../space/entities'; + +@Entity({ name: 'space-type' }) +export class SpaceTypeEntity extends AbstractEntity { + @Column({ + type: 'uuid', + default: () => 'gen_random_uuid()', // Use gen_random_uuid() for default value + nullable: false, + }) + public uuid: string; + + @Column({ + nullable: false, + }) + type: string; + + @OneToMany(() => SpaceEntity, (space) => space.spaceType) + spaces: SpaceEntity[]; + constructor(partial: Partial) { + super(); + Object.assign(this, partial); + } +} diff --git a/libs/common/src/modules/space-type/repositories/index.ts b/libs/common/src/modules/space-type/repositories/index.ts new file mode 100644 index 0000000..26f69ae --- /dev/null +++ b/libs/common/src/modules/space-type/repositories/index.ts @@ -0,0 +1 @@ +export * from './space.type.repository'; diff --git a/libs/common/src/modules/space-type/repositories/space.type.repository.ts b/libs/common/src/modules/space-type/repositories/space.type.repository.ts new file mode 100644 index 0000000..0ea5b13 --- /dev/null +++ b/libs/common/src/modules/space-type/repositories/space.type.repository.ts @@ -0,0 +1,10 @@ +import { DataSource, Repository } from 'typeorm'; +import { Injectable } from '@nestjs/common'; +import { SpaceTypeEntity } from '../entities/space.type.entity'; + +@Injectable() +export class SpaceTypeRepository extends Repository { + constructor(private dataSource: DataSource) { + super(SpaceTypeEntity, dataSource.createEntityManager()); + } +} diff --git a/libs/common/src/modules/space-type/space.type.repository.module.ts b/libs/common/src/modules/space-type/space.type.repository.module.ts new file mode 100644 index 0000000..6787b67 --- /dev/null +++ b/libs/common/src/modules/space-type/space.type.repository.module.ts @@ -0,0 +1,11 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { SpaceTypeEntity } from './entities/space.type.entity'; + +@Module({ + providers: [], + exports: [], + controllers: [], + imports: [TypeOrmModule.forFeature([SpaceTypeEntity])], +}) +export class SpaceTypeRepositoryModule {}