mirror of
https://github.com/SyncrowIOT/backend.git
synced 2025-11-26 16:14:55 +00:00
Added subspace entity
This commit is contained in:
@ -8,7 +8,7 @@ import { UserOtpEntity } from '../modules/user/entities';
|
|||||||
import { ProductEntity } from '../modules/product/entities';
|
import { ProductEntity } from '../modules/product/entities';
|
||||||
import { DeviceEntity } from '../modules/device/entities';
|
import { DeviceEntity } from '../modules/device/entities';
|
||||||
import { PermissionTypeEntity } from '../modules/permission/entities';
|
import { PermissionTypeEntity } from '../modules/permission/entities';
|
||||||
import { SpaceEntity } from '../modules/space/entities';
|
import { SpaceEntity, SubspaceEntity } from '../modules/space/entities';
|
||||||
import { SpaceTypeEntity } from '../modules/space/entities';
|
import { SpaceTypeEntity } from '../modules/space/entities';
|
||||||
import { UserSpaceEntity } from '../modules/user/entities';
|
import { UserSpaceEntity } from '../modules/user/entities';
|
||||||
import { DeviceUserPermissionEntity } from '../modules/device/entities';
|
import { DeviceUserPermissionEntity } from '../modules/device/entities';
|
||||||
@ -44,6 +44,7 @@ import { CommunityEntity } from '../modules/community/entities';
|
|||||||
PermissionTypeEntity,
|
PermissionTypeEntity,
|
||||||
CommunityEntity,
|
CommunityEntity,
|
||||||
SpaceEntity,
|
SpaceEntity,
|
||||||
|
SubspaceEntity,
|
||||||
SpaceTypeEntity,
|
SpaceTypeEntity,
|
||||||
UserSpaceEntity,
|
UserSpaceEntity,
|
||||||
DeviceUserPermissionEntity,
|
DeviceUserPermissionEntity,
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
import { Column, Entity, ManyToOne, OneToMany, Unique, Index } from 'typeorm';
|
import { Column, Entity, ManyToOne, OneToMany, Unique, Index, JoinColumn } from 'typeorm';
|
||||||
import { AbstractEntity } from '../../abstract/entities/abstract.entity';
|
import { AbstractEntity } from '../../abstract/entities/abstract.entity';
|
||||||
import { DeviceDto, DeviceUserPermissionDto } from '../dtos/device.dto';
|
import { DeviceDto, DeviceUserPermissionDto } from '../dtos/device.dto';
|
||||||
import { SpaceEntity } from '../../space/entities';
|
import { SpaceEntity, SubspaceEntity } from '../../space/entities';
|
||||||
import { ProductEntity } from '../../product/entities';
|
import { ProductEntity } from '../../product/entities';
|
||||||
import { UserEntity } from '../../user/entities';
|
import { UserEntity } from '../../user/entities';
|
||||||
import { DeviceNotificationDto } from '../dtos';
|
import { DeviceNotificationDto } from '../dtos';
|
||||||
@ -52,6 +52,12 @@ export class DeviceEntity extends AbstractEntity<DeviceDto> {
|
|||||||
})
|
})
|
||||||
productDevice: ProductEntity;
|
productDevice: ProductEntity;
|
||||||
|
|
||||||
|
@ManyToOne(() => SubspaceEntity, (subspace) => subspace.devices, {
|
||||||
|
nullable: true,
|
||||||
|
})
|
||||||
|
@JoinColumn({ name: 'subspace_id' })
|
||||||
|
subspace: SubspaceEntity;
|
||||||
|
|
||||||
@Index()
|
@Index()
|
||||||
@Column({ nullable: false })
|
@Column({ nullable: false })
|
||||||
uuid: string;
|
uuid: string;
|
||||||
|
|||||||
@ -1 +1,2 @@
|
|||||||
export * from './space.dto';
|
export * from './space.dto';
|
||||||
|
export * from './subspace.dto';
|
||||||
|
|||||||
29
libs/common/src/modules/space/dtos/subspace.dto.ts
Normal file
29
libs/common/src/modules/space/dtos/subspace.dto.ts
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
import { ApiProperty } from '@nestjs/swagger';
|
||||||
|
import { SpaceDto } from './space.dto';
|
||||||
|
import { DeviceDto } from '../../device/dtos';
|
||||||
|
|
||||||
|
export class SubspaceDto {
|
||||||
|
@ApiProperty({
|
||||||
|
example: 'd7a44e8a-32d5-4f39-ae2e-013f1245aead',
|
||||||
|
description: 'UUID of the subspace',
|
||||||
|
})
|
||||||
|
uuid: string;
|
||||||
|
|
||||||
|
@ApiProperty({
|
||||||
|
example: 'Meeting Room 1',
|
||||||
|
description: 'Name of the subspace',
|
||||||
|
})
|
||||||
|
subspaceName: string;
|
||||||
|
|
||||||
|
@ApiProperty({
|
||||||
|
type: () => SpaceDto,
|
||||||
|
description: 'The space to which this subspace belongs',
|
||||||
|
})
|
||||||
|
space: SpaceDto;
|
||||||
|
|
||||||
|
@ApiProperty({
|
||||||
|
example: [],
|
||||||
|
description: 'List of devices assigned to this subspace, if any',
|
||||||
|
})
|
||||||
|
devices: DeviceDto[];
|
||||||
|
}
|
||||||
@ -1 +1,2 @@
|
|||||||
export * from './space.entity';
|
export * from './space.entity';
|
||||||
|
export * from './subspace.entity';
|
||||||
|
|||||||
@ -11,6 +11,7 @@ import { AbstractEntity } from '../../abstract/entities/abstract.entity';
|
|||||||
import { UserSpaceEntity } from '../../user/entities';
|
import { UserSpaceEntity } from '../../user/entities';
|
||||||
import { DeviceEntity } from '../../device/entities';
|
import { DeviceEntity } from '../../device/entities';
|
||||||
import { CommunityEntity } from '../../community/entities';
|
import { CommunityEntity } from '../../community/entities';
|
||||||
|
import { SubspaceEntity } from './subspace.entity';
|
||||||
|
|
||||||
@Entity({ name: 'space-type' })
|
@Entity({ name: 'space-type' })
|
||||||
export class SpaceTypeEntity extends AbstractEntity<SpaceTypeDto> {
|
export class SpaceTypeEntity extends AbstractEntity<SpaceTypeDto> {
|
||||||
@ -71,6 +72,11 @@ export class SpaceEntity extends AbstractEntity<SpaceDto> {
|
|||||||
@OneToMany(() => UserSpaceEntity, (userSpace) => userSpace.space)
|
@OneToMany(() => UserSpaceEntity, (userSpace) => userSpace.space)
|
||||||
userSpaces: UserSpaceEntity[];
|
userSpaces: UserSpaceEntity[];
|
||||||
|
|
||||||
|
@OneToMany(() => SubspaceEntity, (subspace) => subspace.space, {
|
||||||
|
nullable: true,
|
||||||
|
})
|
||||||
|
subspaces?: SubspaceEntity[];
|
||||||
|
|
||||||
@OneToMany(
|
@OneToMany(
|
||||||
() => DeviceEntity,
|
() => DeviceEntity,
|
||||||
(devicesSpaceEntity) => devicesSpaceEntity.spaceDevice,
|
(devicesSpaceEntity) => devicesSpaceEntity.spaceDevice,
|
||||||
|
|||||||
37
libs/common/src/modules/space/entities/subspace.entity.ts
Normal file
37
libs/common/src/modules/space/entities/subspace.entity.ts
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
import { Column, Entity, JoinColumn, ManyToOne, OneToMany } from 'typeorm';
|
||||||
|
import { AbstractEntity } from '../../abstract/entities/abstract.entity';
|
||||||
|
import { DeviceEntity } from '../../device/entities';
|
||||||
|
import { SpaceEntity } from './space.entity';
|
||||||
|
import { SubspaceDto } from '../dtos';
|
||||||
|
|
||||||
|
@Entity({ name: 'subspace' })
|
||||||
|
export class SubspaceEntity extends AbstractEntity<SubspaceDto> {
|
||||||
|
@Column({
|
||||||
|
type: 'uuid',
|
||||||
|
default: () => 'gen_random_uuid()',
|
||||||
|
nullable: false,
|
||||||
|
})
|
||||||
|
public uuid: string;
|
||||||
|
|
||||||
|
@Column({
|
||||||
|
nullable: false,
|
||||||
|
})
|
||||||
|
public subspaceName: string;
|
||||||
|
|
||||||
|
@ManyToOne(() => SpaceEntity, (space) => space.subspaces, {
|
||||||
|
nullable: false,
|
||||||
|
onDelete: 'CASCADE',
|
||||||
|
})
|
||||||
|
@JoinColumn({ name: 'space_id' })
|
||||||
|
space: SpaceEntity;
|
||||||
|
|
||||||
|
@OneToMany(() => DeviceEntity, (device) => device.subspace, {
|
||||||
|
nullable: true,
|
||||||
|
})
|
||||||
|
devices: DeviceEntity[];
|
||||||
|
|
||||||
|
constructor(partial: Partial<SubspaceEntity>) {
|
||||||
|
super();
|
||||||
|
Object.assign(this, partial);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,11 +1,13 @@
|
|||||||
import { Module } from '@nestjs/common';
|
import { Module } from '@nestjs/common';
|
||||||
import { TypeOrmModule } from '@nestjs/typeorm';
|
import { TypeOrmModule } from '@nestjs/typeorm';
|
||||||
import { SpaceEntity, SpaceTypeEntity } from './entities';
|
import { SpaceEntity, SpaceTypeEntity, SubspaceEntity } from './entities';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
providers: [],
|
providers: [],
|
||||||
exports: [],
|
exports: [],
|
||||||
controllers: [],
|
controllers: [],
|
||||||
imports: [TypeOrmModule.forFeature([SpaceEntity, SpaceTypeEntity])],
|
imports: [
|
||||||
|
TypeOrmModule.forFeature([SpaceEntity, SpaceTypeEntity, SubspaceEntity]),
|
||||||
|
],
|
||||||
})
|
})
|
||||||
export class SpaceRepositoryModule {}
|
export class SpaceRepositoryModule {}
|
||||||
|
|||||||
@ -10,7 +10,7 @@ export class UserSpaceService {
|
|||||||
async getSpacesForUser(userUuid: string): Promise<BaseResponseDto> {
|
async getSpacesForUser(userUuid: string): Promise<BaseResponseDto> {
|
||||||
const userSpaces = await this.userSpaceRepository.find({
|
const userSpaces = await this.userSpaceRepository.find({
|
||||||
where: { user: { uuid: userUuid } },
|
where: { user: { uuid: userUuid } },
|
||||||
relations: ['space'],
|
relations: ['space', 'space.community'],
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!userSpaces || userSpaces.length === 0) {
|
if (!userSpaces || userSpaces.length === 0) {
|
||||||
@ -20,7 +20,6 @@ export class UserSpaceService {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return new SuccessResponseDto({
|
return new SuccessResponseDto({
|
||||||
data: userSpaces,
|
data: userSpaces,
|
||||||
message: `Spaces for user ${userUuid} retrieved successfully`,
|
message: `Spaces for user ${userUuid} retrieved successfully`,
|
||||||
|
|||||||
Reference in New Issue
Block a user