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 {}