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, InviteUserEntity,
InviteUserSpaceEntity, InviteUserSpaceEntity,
} from '../modules/Invite-user/entities'; } from '../modules/Invite-user/entities';
import { InviteSpaceEntity } from '../modules/space/entities/invite-space.entity';
@Module({ @Module({
imports: [ imports: [
TypeOrmModule.forRootAsync({ TypeOrmModule.forRootAsync({
@ -80,6 +81,7 @@ import {
TagModel, TagModel,
InviteUserEntity, InviteUserEntity,
InviteUserSpaceEntity, InviteUserSpaceEntity,
InviteSpaceEntity,
], ],
namingStrategy: new SnakeNamingStrategy(), namingStrategy: new SnakeNamingStrategy(),
synchronize: Boolean(JSON.parse(configService.get('DB_SYNC'))), 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 { import { Column, Entity, JoinColumn, ManyToOne, OneToMany } from 'typeorm';
Column,
Entity,
JoinColumn,
ManyToOne,
OneToMany,
Unique,
} from 'typeorm';
import { SpaceDto } from '../dtos'; import { SpaceDto } from '../dtos';
import { AbstractEntity } from '../../abstract/entities/abstract.entity'; import { AbstractEntity } from '../../abstract/entities/abstract.entity';
import { UserSpaceEntity } from '../../user/entities'; import { UserSpaceEntity } from '../../user/entities';
@ -19,7 +12,6 @@ import { InviteUserSpaceEntity } from '../../Invite-user/entities';
import { TagEntity } from './tag.entity'; import { TagEntity } from './tag.entity';
@Entity({ name: 'space' }) @Entity({ name: 'space' })
@Unique(['invitationCode'])
export class SpaceEntity extends AbstractEntity<SpaceDto> { export class SpaceEntity extends AbstractEntity<SpaceDto> {
@Column({ @Column({
type: 'uuid', type: 'uuid',
@ -44,10 +36,6 @@ export class SpaceEntity extends AbstractEntity<SpaceDto> {
@JoinColumn({ name: 'community_id' }) @JoinColumn({ name: 'community_id' })
community: CommunityEntity; community: CommunityEntity;
@Column({
nullable: true,
})
public invitationCode: string;
@ManyToOne(() => SpaceEntity, (space) => space.children, { nullable: true }) @ManyToOne(() => SpaceEntity, (space) => space.children, { nullable: true })
parent: SpaceEntity; parent: SpaceEntity;

View File

@ -1,6 +1,7 @@
import { DataSource, Repository } from 'typeorm'; import { DataSource, Repository } from 'typeorm';
import { Injectable } from '@nestjs/common'; import { Injectable } from '@nestjs/common';
import { SpaceEntity, SpaceLinkEntity, TagEntity } from '../entities'; import { SpaceEntity, SpaceLinkEntity, TagEntity } from '../entities';
import { InviteSpaceEntity } from '../entities/invite-space.entity';
@Injectable() @Injectable()
export class SpaceRepository extends Repository<SpaceEntity> { export class SpaceRepository extends Repository<SpaceEntity> {
@ -22,3 +23,10 @@ export class TagRepository extends Repository<TagEntity> {
super(TagEntity, dataSource.createEntityManager()); 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 { Module } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm'; import { TypeOrmModule } from '@nestjs/typeorm';
import { SpaceEntity, SubspaceEntity, TagEntity } from './entities'; import { SpaceEntity, SubspaceEntity, TagEntity } from './entities';
import { InviteSpaceEntity } from './entities/invite-space.entity';
@Module({ @Module({
providers: [], providers: [],
exports: [], exports: [],
controllers: [], controllers: [],
imports: [TypeOrmModule.forFeature([SpaceEntity, SubspaceEntity, TagEntity])], imports: [
TypeOrmModule.forFeature([
SpaceEntity,
SubspaceEntity,
TagEntity,
InviteSpaceEntity,
]),
],
}) })
export class SpaceRepositoryModule {} export class SpaceRepositoryModule {}

View File

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

View File

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