added space model controller for create

This commit is contained in:
hannathkadher
2024-12-11 11:06:41 +04:00
parent b2a422f71b
commit 02faca3397
7 changed files with 92 additions and 2 deletions

View File

@ -266,6 +266,16 @@ export class ControllerRoute {
}; };
}; };
static SPACE_MODEL = class {
public static readonly ROUTE = '/projects/:projectUuid/space-models';
static ACTIONS = class {
public static readonly CREATE_SPACE_MODEL_SUMMARY =
'Create a New Space Model';
public static readonly CREATE_SPACE_MODEL_DESCRIPTION =
'This endpoint allows you to create a new space model within a specified project. A space model defines the structure of spaces, including subspaces, products, and product items, and is uniquely identifiable within the project.';
};
};
static PRODUCT = class { static PRODUCT = class {
public static readonly ROUTE = 'products'; public static readonly ROUTE = 'products';
static ACTIONS = class { static ACTIONS = class {

View File

@ -23,6 +23,7 @@ import { ScheduleModule } from './schedule/schedule.module';
import { SpaceModule } from './space/space.module'; import { SpaceModule } from './space/space.module';
import { ProductModule } from './product'; import { ProductModule } from './product';
import { ProjectModule } from './project'; import { ProjectModule } from './project';
import { SpaceModelModule } from './space-model';
@Module({ @Module({
imports: [ imports: [
ConfigModule.forRoot({ ConfigModule.forRoot({
@ -34,7 +35,7 @@ import { ProjectModule } from './project';
CommunityModule, CommunityModule,
SpaceModule, SpaceModule,
SpaceModelModule,
GroupModule, GroupModule,
DeviceModule, DeviceModule,
DeviceMessagesSubscriptionModule, DeviceMessagesSubscriptionModule,

View File

@ -0,0 +1 @@
export * from './space-model.controller';

View File

@ -0,0 +1,35 @@
import { ControllerRoute } from '@app/common/constants/controller-route';
import { Body, Controller, Param, Post, UseGuards } from '@nestjs/common';
import { ApiBearerAuth, ApiOperation, ApiTags } from '@nestjs/swagger';
import { SpaceModelService } from '../services';
import { CreateSpaceModelDto } from '../dtos';
import { ProjectParam } from 'src/community/dtos';
import { JwtAuthGuard } from '@app/common/guards/jwt.auth.guard';
import { BaseResponseDto } from '@app/common/dto/base.response.dto';
@ApiTags('Space Model Module')
@Controller({
version: '1',
path: ControllerRoute.SPACE_MODEL.ROUTE,
})
export class SpaceModelController {
constructor(private readonly spaceModelService: SpaceModelService) {}
@ApiBearerAuth()
@UseGuards(JwtAuthGuard)
@ApiOperation({
summary: ControllerRoute.SPACE_MODEL.ACTIONS.CREATE_SPACE_MODEL_SUMMARY,
description:
ControllerRoute.SPACE_MODEL.ACTIONS.CREATE_SPACE_MODEL_DESCRIPTION,
})
@Post()
async createSpaceModel(
@Body() createSpaceModelDto: CreateSpaceModelDto,
@Param() projectParam: ProjectParam,
): Promise<BaseResponseDto> {
return await this.spaceModelService.createSpaceModel(
createSpaceModelDto,
projectParam,
);
}
}

1
src/space-model/index.ts Normal file
View File

@ -0,0 +1 @@
export * from './space-model.module';

View File

@ -0,0 +1,37 @@
import { SpaceRepositoryModule } from '@app/common/modules/space/space.repository.module';
import { Module } from '@nestjs/common';
import { ConfigModule } from '@nestjs/config';
import { SpaceModelController } from './controllers';
import {
SpaceModelService,
SpaceProductItemModelService,
SpaceProductModelService,
SubSpaceModelService,
} from './services';
import {
SpaceModelRepository,
SpaceProductItemModelRepository,
SpaceProductModelRepository,
SubspaceModelRepository,
} from '@app/common/modules/space-model';
import { ProjectRepository } from '@app/common/modules/project/repositiories';
import { ProductRepository } from '@app/common/modules/product/repositories';
@Module({
imports: [ConfigModule, SpaceRepositoryModule],
controllers: [SpaceModelController],
providers: [
SpaceModelService,
SpaceModelRepository,
ProjectRepository,
SubSpaceModelService,
SpaceProductModelService,
SubspaceModelRepository,
SpaceProductModelRepository,
ProductRepository,
SpaceProductItemModelService,
SpaceProductItemModelRepository,
],
exports: [],
})
export class SpaceModelModule {}

View File

@ -5,7 +5,12 @@ import {
HttpStatus, HttpStatus,
Injectable, Injectable,
} from '@nestjs/common'; } from '@nestjs/common';
import { AddSpaceDto, CommunitySpaceParam, GetSpaceParam, UpdateSpaceDto } from '../dtos'; import {
AddSpaceDto,
CommunitySpaceParam,
GetSpaceParam,
UpdateSpaceDto,
} from '../dtos';
import { SuccessResponseDto } from '@app/common/dto/success.response.dto'; import { SuccessResponseDto } from '@app/common/dto/success.response.dto';
import { BaseResponseDto } from '@app/common/dto/base.response.dto'; import { BaseResponseDto } from '@app/common/dto/base.response.dto';
import { CommunityRepository } from '@app/common/modules/community/repositories'; import { CommunityRepository } from '@app/common/modules/community/repositories';