From 921b44d4ed3ea3a70959608cb79f209d6b282dc9 Mon Sep 17 00:00:00 2001 From: faris Aljohari <83524184+farisaljohari@users.noreply.github.com> Date: Thu, 18 Apr 2024 09:42:55 +0300 Subject: [PATCH] Add group module entities, DTOs, repository, and repository module --- libs/common/src/database/database.module.ts | 2 ++ .../src/modules/group/dtos/group.dto.ts | 11 +++++++++ libs/common/src/modules/group/dtos/index.ts | 1 + .../modules/group/entities/group.entity.ts | 23 +++++++++++++++++++ .../src/modules/group/entities/index.ts | 1 + .../modules/group/group.repository.module.ts | 11 +++++++++ .../group/repositories/group.repository.ts | 10 ++++++++ .../src/modules/group/repositories/index.ts | 1 + 8 files changed, 60 insertions(+) create mode 100644 libs/common/src/modules/group/dtos/group.dto.ts create mode 100644 libs/common/src/modules/group/dtos/index.ts create mode 100644 libs/common/src/modules/group/entities/group.entity.ts create mode 100644 libs/common/src/modules/group/entities/index.ts create mode 100644 libs/common/src/modules/group/group.repository.module.ts create mode 100644 libs/common/src/modules/group/repositories/group.repository.ts create mode 100644 libs/common/src/modules/group/repositories/index.ts diff --git a/libs/common/src/database/database.module.ts b/libs/common/src/database/database.module.ts index aa4f781..543f522 100644 --- a/libs/common/src/database/database.module.ts +++ b/libs/common/src/database/database.module.ts @@ -10,6 +10,7 @@ import { ProductEntity } from '../modules/product/entities'; import { SpaceEntity } from '../modules/space/entities'; import { SpaceTypeEntity } from '../modules/space-type/entities'; import { UserSpaceEntity } from '../modules/user-space/entities'; +import { GroupEntity } from '../modules/group/entities'; @Module({ imports: [ @@ -33,6 +34,7 @@ import { UserSpaceEntity } from '../modules/user-space/entities'; SpaceEntity, SpaceTypeEntity, UserSpaceEntity, + GroupEntity, ], namingStrategy: new SnakeNamingStrategy(), synchronize: Boolean(JSON.parse(configService.get('DB_SYNC'))), diff --git a/libs/common/src/modules/group/dtos/group.dto.ts b/libs/common/src/modules/group/dtos/group.dto.ts new file mode 100644 index 0000000..d3696b8 --- /dev/null +++ b/libs/common/src/modules/group/dtos/group.dto.ts @@ -0,0 +1,11 @@ +import { IsNotEmpty, IsString } from 'class-validator'; + +export class GroupDto { + @IsString() + @IsNotEmpty() + public uuid: string; + + @IsString() + @IsNotEmpty() + public groupName: string; +} diff --git a/libs/common/src/modules/group/dtos/index.ts b/libs/common/src/modules/group/dtos/index.ts new file mode 100644 index 0000000..ba43fbc --- /dev/null +++ b/libs/common/src/modules/group/dtos/index.ts @@ -0,0 +1 @@ +export * from './group.dto'; diff --git a/libs/common/src/modules/group/entities/group.entity.ts b/libs/common/src/modules/group/entities/group.entity.ts new file mode 100644 index 0000000..9835e63 --- /dev/null +++ b/libs/common/src/modules/group/entities/group.entity.ts @@ -0,0 +1,23 @@ +import { Column, Entity } from 'typeorm'; +import { GroupDto } from '../dtos'; +import { AbstractEntity } from '../../abstract/entities/abstract.entity'; + +@Entity({ name: 'group' }) +export class GroupEntity extends AbstractEntity { + @Column({ + type: 'uuid', + default: () => 'gen_random_uuid()', // Use gen_random_uuid() for default value + nullable: false, + }) + public uuid: string; + + @Column({ + nullable: false, + }) + public groupName: string; + + constructor(partial: Partial) { + super(); + Object.assign(this, partial); + } +} diff --git a/libs/common/src/modules/group/entities/index.ts b/libs/common/src/modules/group/entities/index.ts new file mode 100644 index 0000000..50f4201 --- /dev/null +++ b/libs/common/src/modules/group/entities/index.ts @@ -0,0 +1 @@ +export * from './group.entity'; diff --git a/libs/common/src/modules/group/group.repository.module.ts b/libs/common/src/modules/group/group.repository.module.ts new file mode 100644 index 0000000..5b711e5 --- /dev/null +++ b/libs/common/src/modules/group/group.repository.module.ts @@ -0,0 +1,11 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { GroupEntity } from './entities/group.entity'; + +@Module({ + providers: [], + exports: [], + controllers: [], + imports: [TypeOrmModule.forFeature([GroupEntity])], +}) +export class GroupRepositoryModule {} diff --git a/libs/common/src/modules/group/repositories/group.repository.ts b/libs/common/src/modules/group/repositories/group.repository.ts new file mode 100644 index 0000000..824d671 --- /dev/null +++ b/libs/common/src/modules/group/repositories/group.repository.ts @@ -0,0 +1,10 @@ +import { DataSource, Repository } from 'typeorm'; +import { Injectable } from '@nestjs/common'; +import { GroupEntity } from '../entities/group.entity'; + +@Injectable() +export class GroupRepository extends Repository { + constructor(private dataSource: DataSource) { + super(GroupEntity, dataSource.createEntityManager()); + } +} diff --git a/libs/common/src/modules/group/repositories/index.ts b/libs/common/src/modules/group/repositories/index.ts new file mode 100644 index 0000000..7018977 --- /dev/null +++ b/libs/common/src/modules/group/repositories/index.ts @@ -0,0 +1 @@ +export * from './group.repository';