mirror of
https://github.com/SyncrowIOT/backend.git
synced 2025-07-10 15:17:41 +00:00
Merge pull request #327 from SyncrowIOT/add-root-user-when-when-create-project
feat: add user UUID to project creation and validate user existence
This commit is contained in:
@ -18,4 +18,12 @@ export class CreateProjectDto {
|
||||
@IsString()
|
||||
@IsOptional()
|
||||
description?: string;
|
||||
|
||||
@ApiProperty({
|
||||
example: 'f5d7e9c3-44bc-4b12-88f1-1b3cda84752e',
|
||||
description: 'UUID of the user',
|
||||
})
|
||||
@IsString()
|
||||
@IsNotEmpty()
|
||||
public userUuid: string;
|
||||
}
|
||||
|
@ -9,7 +9,10 @@ import { CommunityRepository } from '@app/common/modules/community/repositories'
|
||||
import { InviteUserRepository } from '@app/common/modules/Invite-user/repositiories';
|
||||
import { ProjectUserController } from './controllers/project-user.controller';
|
||||
import { ProjectUserService } from './services/project-user.service';
|
||||
import { UserSpaceRepository } from '@app/common/modules/user/repositories';
|
||||
import {
|
||||
UserRepository,
|
||||
UserSpaceRepository,
|
||||
} from '@app/common/modules/user/repositories';
|
||||
|
||||
const CommandHandlers = [CreateOrphanSpaceHandler];
|
||||
|
||||
@ -26,6 +29,7 @@ const CommandHandlers = [CreateOrphanSpaceHandler];
|
||||
ProjectRepository,
|
||||
InviteUserRepository,
|
||||
UserSpaceRepository,
|
||||
UserRepository,
|
||||
],
|
||||
exports: [ProjectService, CqrsModule],
|
||||
})
|
||||
|
@ -12,18 +12,20 @@ import { ProjectDto } from '@app/common/modules/project/dtos';
|
||||
import { PageResponse } from '@app/common/dto/pagination.response.dto';
|
||||
import { CommandBus } from '@nestjs/cqrs';
|
||||
import { CreateOrphanSpaceCommand } from '../command/create-orphan-space-command';
|
||||
import { UserRepository } from '@app/common/modules/user/repositories';
|
||||
|
||||
@Injectable()
|
||||
export class ProjectService {
|
||||
constructor(
|
||||
private readonly projectRepository: ProjectRepository,
|
||||
private readonly userRepository: UserRepository,
|
||||
private commandBus: CommandBus,
|
||||
) {}
|
||||
|
||||
async createProject(
|
||||
createProjectDto: CreateProjectDto,
|
||||
): Promise<BaseResponseDto> {
|
||||
const { name } = createProjectDto;
|
||||
const { name, userUuid } = createProjectDto;
|
||||
|
||||
try {
|
||||
// Check if the project name already exists
|
||||
@ -35,14 +37,30 @@ export class ProjectService {
|
||||
);
|
||||
}
|
||||
|
||||
// Check if user exists
|
||||
const user = await this.userRepository.findOne({
|
||||
where: { uuid: userUuid },
|
||||
});
|
||||
if (!user) {
|
||||
throw new HttpException(
|
||||
`User with UUID ${userUuid} not found`,
|
||||
HttpStatus.NOT_FOUND,
|
||||
);
|
||||
}
|
||||
|
||||
const newProject = this.projectRepository.create(createProjectDto);
|
||||
const savedProject = await this.projectRepository.save(newProject);
|
||||
user.project = savedProject;
|
||||
await this.userRepository.save(user);
|
||||
|
||||
await this.commandBus.execute(new CreateOrphanSpaceCommand(savedProject));
|
||||
|
||||
return new SuccessResponseDto({
|
||||
message: `Project with ID ${savedProject.uuid} successfully created`,
|
||||
data: savedProject,
|
||||
data: {
|
||||
...savedProject,
|
||||
rootUser: { uuid: user.uuid, email: user.email },
|
||||
},
|
||||
statusCode: HttpStatus.CREATED,
|
||||
});
|
||||
} catch (error) {
|
||||
|
Reference in New Issue
Block a user