mirror of
https://github.com/SyncrowIOT/backend.git
synced 2025-11-27 17:34:55 +00:00
Add InviteSpaceEntity and InviteSpaceRepository
This commit is contained in:
@ -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'))),
|
||||||
|
|||||||
@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -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;
|
||||||
|
|
||||||
|
|||||||
@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@ -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 {}
|
||||||
|
|||||||
@ -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],
|
||||||
})
|
})
|
||||||
|
|||||||
@ -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],
|
||||||
|
|||||||
Reference in New Issue
Block a user