add a partial user to be returned

This commit is contained in:
batche
2022-11-14 17:25:43 +01:00
parent aa3eb111c1
commit 79b3cbb3d3
8 changed files with 123 additions and 10 deletions

View File

@@ -1,5 +1,4 @@
import { IsBoolean, IsEmail, IsOptional, IsString } from 'class-validator';
import { Unique } from 'typeorm';
export class CreateUsersDto {
@IsString()

View File

@@ -0,0 +1,4 @@
import { OmitType, PartialType } from "@nestjs/mapped-types";
import { CreateUsersDto } from "./create-users.dto";
export class PartialUsersDto extends OmitType(CreateUsersDto, ['fortyTwoId'] as const){}

View File

@@ -2,7 +2,7 @@
// et de les mettre comme optionnelles. De plus on peut hériter
// des décorateurs de la classe parente (par exemple @IsString()).
import { PartialType } from "@nestjs/mapped-types";
import { OmitType, PartialType } from "@nestjs/mapped-types";
import { CreateUsersDto } from "./create-users.dto";
export class UpdateUsersDto extends PartialType(CreateUsersDto){}
export class UpdateUsersDto extends OmitType(CreateUsersDto, ['fortyTwoId', 'email'] as const){}

View File

@@ -31,11 +31,11 @@ export class UsersController {
* car un utilisateur est crée à la première connexion avec l'Oauth de 42.
*/
// @UseGuards(AuthenticateGuard)
// @Get()
// findOne(@Req() req) {
// return this.usersService.findOne(req.user.id);
// }
@UseGuards(AuthenticateGuard)
@Get()
findOne(@Req() req) {
return this.usersService.findOne(req.user.id);
}
// @UseGuards(AuthenticateGuard)
// @Post()
@@ -47,6 +47,7 @@ export class UsersController {
@UseGuards(AuthenticateGuard)
@Patch()
update(@Req() req, @Body() usersUpdateDto: UpdateUsersDto) {
console.log("DANS PATCH USERS");
return this.usersService.update(req.user.id, usersUpdateDto);
}

View File

@@ -8,6 +8,7 @@ import { UpdateUsersDto } from './dto/update-users.dto';
import { Friendship } from '../friendship/entities/friendship.entity';
import { isNumberString } from 'class-validator';
import { PaginationQueryDto } from 'src/common/dto/pagination-query.dto';
import { PartialUsersDto } from './dto/partial-users.dto';
// On va devoir sûrement trouver un moyen plus simple pour passer l'id, sûrement via des pipes
// ou des interceptors, mais pour l'instant on va faire comme ça.
@@ -36,7 +37,13 @@ export class UsersService {
const user = await this.userRepository.findOneBy({id: +id});
if (!user)
throw new NotFoundException(`The requested user not found.`);
return user;
const partialUser : Partial<User> = {
username: user.username,
email: user.email,
image_url: user.image_url,
isEnabledTwoFactorAuth: user.isEnabledTwoFactorAuth,
};
return partialUser;
}
// Example : http://localhost:3000/users?limit=10&offset=20
@@ -68,7 +75,7 @@ export class UsersService {
}
async remove(id: string) {
const user = await this.findOne(id);
const user = await this.userRepository.findOneBy({id: +id});
if (!user)
throw new HttpException(`The user could not be deleted.`,HttpStatus.NOT_FOUND);
return this.userRepository.remove(user);