From 22bcd37de706f09060506468718c6e78f0bba534 Mon Sep 17 00:00:00 2001 From: faris Aljohari <83524184+farisaljohari@users.noreply.github.com> Date: Mon, 25 Mar 2024 13:36:00 +0300 Subject: [PATCH] Add product DTO, entity, repository, and module --- libs/common/src/modules/product/dtos/index.ts | 1 + .../src/modules/product/dtos/product.dto.ts | 19 +++++++++++++ .../src/modules/product/entities/index.ts | 1 + .../product/entities/product.entity.ts | 27 +++++++++++++++++++ .../product/product.repository.module.ts | 11 ++++++++ .../src/modules/product/repositories/index.ts | 1 + .../repositories/product.repository.ts | 10 +++++++ 7 files changed, 70 insertions(+) create mode 100644 libs/common/src/modules/product/dtos/index.ts create mode 100644 libs/common/src/modules/product/dtos/product.dto.ts create mode 100644 libs/common/src/modules/product/entities/index.ts create mode 100644 libs/common/src/modules/product/entities/product.entity.ts create mode 100644 libs/common/src/modules/product/product.repository.module.ts create mode 100644 libs/common/src/modules/product/repositories/index.ts create mode 100644 libs/common/src/modules/product/repositories/product.repository.ts diff --git a/libs/common/src/modules/product/dtos/index.ts b/libs/common/src/modules/product/dtos/index.ts new file mode 100644 index 0000000..810efbd --- /dev/null +++ b/libs/common/src/modules/product/dtos/index.ts @@ -0,0 +1 @@ +export * from './product.dto'; diff --git a/libs/common/src/modules/product/dtos/product.dto.ts b/libs/common/src/modules/product/dtos/product.dto.ts new file mode 100644 index 0000000..2614d78 --- /dev/null +++ b/libs/common/src/modules/product/dtos/product.dto.ts @@ -0,0 +1,19 @@ +import { IsNotEmpty, IsString } from 'class-validator'; + +export class ProductDto { + @IsString() + @IsNotEmpty() + public uuid: string; + + @IsString() + @IsNotEmpty() + public catName: string; + + @IsString() + @IsNotEmpty() + public prodId: string; + + @IsString() + @IsNotEmpty() + public prodType: string; +} diff --git a/libs/common/src/modules/product/entities/index.ts b/libs/common/src/modules/product/entities/index.ts new file mode 100644 index 0000000..9120a7a --- /dev/null +++ b/libs/common/src/modules/product/entities/index.ts @@ -0,0 +1 @@ +export * from './product.entity'; diff --git a/libs/common/src/modules/product/entities/product.entity.ts b/libs/common/src/modules/product/entities/product.entity.ts new file mode 100644 index 0000000..5f04d66 --- /dev/null +++ b/libs/common/src/modules/product/entities/product.entity.ts @@ -0,0 +1,27 @@ +import { Column, Entity } from 'typeorm'; +import { ProductDto } from '../dtos'; +import { AbstractEntity } from '../../abstract/entities/abstract.entity'; + +@Entity({ name: 'product' }) +export class ProductEntity extends AbstractEntity { + @Column({ + nullable: false, + }) + catName: string; + + @Column({ + nullable: false, + unique: true, + }) + public prodId: string; + + @Column({ + nullable: false, + }) + public prodType: string; + + constructor(partial: Partial) { + super(); + Object.assign(this, partial); + } +} diff --git a/libs/common/src/modules/product/product.repository.module.ts b/libs/common/src/modules/product/product.repository.module.ts new file mode 100644 index 0000000..6d92960 --- /dev/null +++ b/libs/common/src/modules/product/product.repository.module.ts @@ -0,0 +1,11 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { ProductEntity } from './entities/product.entity'; + +@Module({ + providers: [], + exports: [], + controllers: [], + imports: [TypeOrmModule.forFeature([ProductEntity])], +}) +export class ProductRepositoryModule {} diff --git a/libs/common/src/modules/product/repositories/index.ts b/libs/common/src/modules/product/repositories/index.ts new file mode 100644 index 0000000..4d7899c --- /dev/null +++ b/libs/common/src/modules/product/repositories/index.ts @@ -0,0 +1 @@ +export * from './product.repository'; diff --git a/libs/common/src/modules/product/repositories/product.repository.ts b/libs/common/src/modules/product/repositories/product.repository.ts new file mode 100644 index 0000000..3244f52 --- /dev/null +++ b/libs/common/src/modules/product/repositories/product.repository.ts @@ -0,0 +1,10 @@ +import { DataSource, Repository } from 'typeorm'; +import { Injectable } from '@nestjs/common'; +import { ProductEntity } from '../entities/product.entity'; + +@Injectable() +export class ProductRepository extends Repository { + constructor(private dataSource: DataSource) { + super(ProductEntity, dataSource.createEntityManager()); + } +}