diff --git a/libs/common/src/modules/user-space/dtos/index.ts b/libs/common/src/modules/user-space/dtos/index.ts new file mode 100644 index 0000000..41572f5 --- /dev/null +++ b/libs/common/src/modules/user-space/dtos/index.ts @@ -0,0 +1 @@ +export * from './user.space.dto'; diff --git a/libs/common/src/modules/user-space/dtos/user.space.dto.ts b/libs/common/src/modules/user-space/dtos/user.space.dto.ts new file mode 100644 index 0000000..b9ef4d0 --- /dev/null +++ b/libs/common/src/modules/user-space/dtos/user.space.dto.ts @@ -0,0 +1,15 @@ +import { IsNotEmpty, IsString } from 'class-validator'; + +export class UserSpaceDto { + @IsString() + @IsNotEmpty() + public uuid: string; + + @IsString() + @IsNotEmpty() + public spaceUuid: string; + + @IsString() + @IsNotEmpty() + public userUuid: string; +} diff --git a/libs/common/src/modules/user-space/entities/index.ts b/libs/common/src/modules/user-space/entities/index.ts new file mode 100644 index 0000000..ef6849a --- /dev/null +++ b/libs/common/src/modules/user-space/entities/index.ts @@ -0,0 +1 @@ +export * from './user.space.entity'; diff --git a/libs/common/src/modules/user-space/entities/user.space.entity.ts b/libs/common/src/modules/user-space/entities/user.space.entity.ts new file mode 100644 index 0000000..c41dfc0 --- /dev/null +++ b/libs/common/src/modules/user-space/entities/user.space.entity.ts @@ -0,0 +1,28 @@ +import { Column, Entity, ManyToOne } from 'typeorm'; +import { UserSpaceDto } from '../dtos'; +import { AbstractEntity } from '../../abstract/entities/abstract.entity'; +import { SpaceEntity } from '../../space/entities'; +import { UserEntity } from '../../user/entities'; + +@Entity({ name: 'user-space' }) +export class UserSpaceEntity extends AbstractEntity { + @Column({ + type: 'uuid', + default: () => 'gen_random_uuid()', // Use gen_random_uuid() for default value + nullable: false, + }) + public uuid: string; + + @ManyToOne(() => UserEntity, (user) => user.userSpaces, { nullable: false }) + user: UserEntity; + + @ManyToOne(() => SpaceEntity, (space) => space.userSpaces, { + nullable: false, + }) + space: SpaceEntity; + + constructor(partial: Partial) { + super(); + Object.assign(this, partial); + } +} diff --git a/libs/common/src/modules/user-space/repositories/index.ts b/libs/common/src/modules/user-space/repositories/index.ts new file mode 100644 index 0000000..3ad6d48 --- /dev/null +++ b/libs/common/src/modules/user-space/repositories/index.ts @@ -0,0 +1 @@ +export * from './user.space.repository'; diff --git a/libs/common/src/modules/user-space/repositories/user.space.repository.ts b/libs/common/src/modules/user-space/repositories/user.space.repository.ts new file mode 100644 index 0000000..b4b7507 --- /dev/null +++ b/libs/common/src/modules/user-space/repositories/user.space.repository.ts @@ -0,0 +1,10 @@ +import { DataSource, Repository } from 'typeorm'; +import { Injectable } from '@nestjs/common'; +import { UserSpaceEntity } from '../entities/user.space.entity'; + +@Injectable() +export class UserSpaceRepository extends Repository { + constructor(private dataSource: DataSource) { + super(UserSpaceEntity, dataSource.createEntityManager()); + } +} diff --git a/libs/common/src/modules/user-space/user.space.repository.module.ts b/libs/common/src/modules/user-space/user.space.repository.module.ts new file mode 100644 index 0000000..9655252 --- /dev/null +++ b/libs/common/src/modules/user-space/user.space.repository.module.ts @@ -0,0 +1,11 @@ +import { Module } from '@nestjs/common'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { UserSpaceEntity } from './entities/user.space.entity'; + +@Module({ + providers: [], + exports: [], + controllers: [], + imports: [TypeOrmModule.forFeature([UserSpaceEntity])], +}) +export class UserSpaceRepositoryModule {}