Add InviteSpaceEntity and InviteSpaceRepository

This commit is contained in:
faris Aljohari
2025-01-09 05:37:40 -06:00
parent fd87139803
commit 0145f72651
7 changed files with 63 additions and 14 deletions

View File

@ -36,6 +36,7 @@ import {
InviteUserEntity,
InviteUserSpaceEntity,
} from '../modules/Invite-user/entities';
import { InviteSpaceEntity } from '../modules/space/entities/invite-space.entity';
@Module({
imports: [
TypeOrmModule.forRootAsync({
@ -80,6 +81,7 @@ import {
TagModel,
InviteUserEntity,
InviteUserSpaceEntity,
InviteSpaceEntity,
],
namingStrategy: new SnakeNamingStrategy(),
synchronize: Boolean(JSON.parse(configService.get('DB_SYNC'))),

View File

@ -0,0 +1,39 @@
import { Column, Entity, ManyToOne, Unique } from 'typeorm';
import { UserSpaceDto } from '../../user/dtos';
import { AbstractEntity } from '../../abstract/entities/abstract.entity';
import { UserEntity } from '../../user/entities';
import { SpaceEntity } from './space.entity';
@Entity({ name: 'invite-space' })
@Unique(['invitationCode'])
export class InviteSpaceEntity extends AbstractEntity<UserSpaceDto> {
@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: true })
user: UserEntity;
@ManyToOne(() => SpaceEntity, (space) => space.userSpaces, {
nullable: false,
})
space: SpaceEntity;
@Column({
nullable: true,
})
public invitationCode: string;
@Column({
nullable: false,
default: true,
})
public isActive: boolean;
constructor(partial: Partial<InviteSpaceEntity>) {
super();
Object.assign(this, partial);
}
}

View File

@ -1,11 +1,4 @@
import {
Column,
Entity,
JoinColumn,
ManyToOne,
OneToMany,
Unique,
} from 'typeorm';
import { Column, Entity, JoinColumn, ManyToOne, OneToMany } from 'typeorm';
import { SpaceDto } from '../dtos';
import { AbstractEntity } from '../../abstract/entities/abstract.entity';
import { UserSpaceEntity } from '../../user/entities';
@ -19,7 +12,6 @@ import { InviteUserSpaceEntity } from '../../Invite-user/entities';
import { TagEntity } from './tag.entity';
@Entity({ name: 'space' })
@Unique(['invitationCode'])
export class SpaceEntity extends AbstractEntity<SpaceDto> {
@Column({
type: 'uuid',
@ -44,10 +36,6 @@ export class SpaceEntity extends AbstractEntity<SpaceDto> {
@JoinColumn({ name: 'community_id' })
community: CommunityEntity;
@Column({
nullable: true,
})
public invitationCode: string;
@ManyToOne(() => SpaceEntity, (space) => space.children, { nullable: true })
parent: SpaceEntity;

View File

@ -1,6 +1,7 @@
import { DataSource, Repository } from 'typeorm';
import { Injectable } from '@nestjs/common';
import { SpaceEntity, SpaceLinkEntity, TagEntity } from '../entities';
import { InviteSpaceEntity } from '../entities/invite-space.entity';
@Injectable()
export class SpaceRepository extends Repository<SpaceEntity> {
@ -22,3 +23,10 @@ export class TagRepository extends Repository<TagEntity> {
super(TagEntity, dataSource.createEntityManager());
}
}
@Injectable()
export class InviteSpaceRepository extends Repository<InviteSpaceEntity> {
constructor(private dataSource: DataSource) {
super(InviteSpaceEntity, dataSource.createEntityManager());
}
}

View File

@ -1,11 +1,19 @@
import { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import { SpaceEntity, SubspaceEntity, TagEntity } from './entities';
import { InviteSpaceEntity } from './entities/invite-space.entity';
@Module({
providers: [],
exports: [],
controllers: [],
imports: [TypeOrmModule.forFeature([SpaceEntity, SubspaceEntity, TagEntity])],
imports: [
TypeOrmModule.forFeature([
SpaceEntity,
SubspaceEntity,
TagEntity,
InviteSpaceEntity,
]),
],
})
export class SpaceRepositoryModule {}

View File

@ -20,6 +20,7 @@ import {
} from './handlers';
import { CqrsModule } from '@nestjs/cqrs';
import {
InviteSpaceRepository,
SpaceLinkRepository,
SpaceRepository,
TagRepository,
@ -70,6 +71,7 @@ const CommandHandlers = [
CommunityRepository,
SpaceLinkService,
SpaceLinkRepository,
InviteSpaceRepository,
],
exports: [CqrsModule, SpaceModelService],
})

View File

@ -22,6 +22,7 @@ import {
SpaceRepository,
SpaceLinkRepository,
TagRepository,
InviteSpaceRepository,
} from '@app/common/modules/space/repositories';
import { CommunityRepository } from '@app/common/modules/community/repositories';
import {
@ -114,6 +115,7 @@ export const CommandHandlers = [DisableSpaceHandler];
UserDevicePermissionService,
DeviceUserPermissionRepository,
PermissionTypeRepository,
InviteSpaceRepository,
...CommandHandlers,
],
exports: [SpaceService],