From 76f8f6ba70040518acb57b5a56e48fc99cc645c8 Mon Sep 17 00:00:00 2001 From: faris Aljohari <83524184+farisaljohari@users.noreply.github.com> Date: Tue, 27 Aug 2024 22:08:17 +0300 Subject: [PATCH] Add Visitor Password Management Module --- .../modules/visitor-password/dtos/index.ts | 1 + .../dtos/visitor-password.dto.ts | 15 +++++++++++ .../visitor-password/entities/index.ts | 1 + .../entities/visitor-password.entity.ts | 25 +++++++++++++++++++ .../visitor-password/repositories/index.ts | 1 + .../visitor-password.repository.ts | 10 ++++++++ .../visitor-password.repository.module.ts | 11 ++++++++ 7 files changed, 64 insertions(+) create mode 100644 libs/common/src/modules/visitor-password/dtos/index.ts create mode 100644 libs/common/src/modules/visitor-password/dtos/visitor-password.dto.ts create mode 100644 libs/common/src/modules/visitor-password/entities/index.ts create mode 100644 libs/common/src/modules/visitor-password/entities/visitor-password.entity.ts create mode 100644 libs/common/src/modules/visitor-password/repositories/index.ts create mode 100644 libs/common/src/modules/visitor-password/repositories/visitor-password.repository.ts create mode 100644 libs/common/src/modules/visitor-password/visitor-password.repository.module.ts diff --git a/libs/common/src/modules/visitor-password/dtos/index.ts b/libs/common/src/modules/visitor-password/dtos/index.ts new file mode 100644 index 0000000..daeb5d8 --- /dev/null +++ b/libs/common/src/modules/visitor-password/dtos/index.ts @@ -0,0 +1 @@ +export * from './visitor-password.dto'; diff --git a/libs/common/src/modules/visitor-password/dtos/visitor-password.dto.ts b/libs/common/src/modules/visitor-password/dtos/visitor-password.dto.ts new file mode 100644 index 0000000..10ed539 --- /dev/null +++ b/libs/common/src/modules/visitor-password/dtos/visitor-password.dto.ts @@ -0,0 +1,15 @@ +import { IsNotEmpty, IsString } from 'class-validator'; + +export class VisitorPasswordDto { + @IsString() + @IsNotEmpty() + public uuid: string; + + @IsString() + @IsNotEmpty() + public authorizerUuid: string; + + @IsString() + @IsNotEmpty() + public passwordTuyaUuid: string; +} diff --git a/libs/common/src/modules/visitor-password/entities/index.ts b/libs/common/src/modules/visitor-password/entities/index.ts new file mode 100644 index 0000000..8b13691 --- /dev/null +++ b/libs/common/src/modules/visitor-password/entities/index.ts @@ -0,0 +1 @@ +export * from './visitor-password.entity'; diff --git a/libs/common/src/modules/visitor-password/entities/visitor-password.entity.ts b/libs/common/src/modules/visitor-password/entities/visitor-password.entity.ts new file mode 100644 index 0000000..f1c0ed6 --- /dev/null +++ b/libs/common/src/modules/visitor-password/entities/visitor-password.entity.ts @@ -0,0 +1,25 @@ +import { Column, Entity, ManyToOne, JoinColumn, Index } from 'typeorm'; +import { VisitorPasswordDto } from '../dtos'; +import { AbstractEntity } from '../../abstract/entities/abstract.entity'; +import { UserEntity } from '../../user/entities/user.entity'; + +@Entity({ name: 'visitor-password' }) +@Index('IDX_PASSWORD_TUYA_UUID', ['passwordTuyaUuid']) +export class VisitorPasswordEntity extends AbstractEntity { + @Column({ + nullable: false, + unique: true, + }) + public passwordTuyaUuid: string; + + @ManyToOne(() => UserEntity, (user) => user.visitorPasswords, { + nullable: false, + }) + @JoinColumn({ name: 'authorizer_uuid' }) + public user: UserEntity; + + constructor(partial: Partial) { + super(); + Object.assign(this, partial); + } +} diff --git a/libs/common/src/modules/visitor-password/repositories/index.ts b/libs/common/src/modules/visitor-password/repositories/index.ts new file mode 100644 index 0000000..2b62574 --- /dev/null +++ b/libs/common/src/modules/visitor-password/repositories/index.ts @@ -0,0 +1 @@ +export * from './visitor-password.repository'; diff --git a/libs/common/src/modules/visitor-password/repositories/visitor-password.repository.ts b/libs/common/src/modules/visitor-password/repositories/visitor-password.repository.ts new file mode 100644 index 0000000..4414a5b --- /dev/null +++ b/libs/common/src/modules/visitor-password/repositories/visitor-password.repository.ts @@ -0,0 +1,10 @@ +import { DataSource, Repository } from 'typeorm'; +import { Injectable } from '@nestjs/common'; +import { VisitorPasswordEntity } from '../entities/visitor-password.entity'; + +@Injectable() +export class VisitorPasswordRepository extends Repository { + constructor(private dataSource: DataSource) { + super(VisitorPasswordEntity, dataSource.createEntityManager()); + } +} diff --git a/libs/common/src/modules/visitor-password/visitor-password.repository.module.ts b/libs/common/src/modules/visitor-password/visitor-password.repository.module.ts new file mode 100644 index 0000000..b6a2182 --- /dev/null +++ b/libs/common/src/modules/visitor-password/visitor-password.repository.module.ts @@ -0,0 +1,11 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { VisitorPasswordEntity } from './entities/visitor-password.entity'; + +@Module({ + providers: [], + exports: [], + controllers: [], + imports: [TypeOrmModule.forFeature([VisitorPasswordEntity])], +}) +export class VisitorPasswordRepositoryModule {}