Ajout du défi dans le retour d'une action de défi

This commit is contained in:
Emmy D'Anello 2024-12-07 19:47:13 +01:00
parent 572a04130f
commit c82d39c009
Signed by: ynerant
GPG Key ID: 3A75C55819C8CF85
3 changed files with 30 additions and 8 deletions

View File

@ -12,20 +12,31 @@ export class ChallengeActionsService {
async create(authenticatedUser: User, createChallengeActionDto: CreateChallengeActionDto): Promise<ChallengeAction> { async create(authenticatedUser: User, createChallengeActionDto: CreateChallengeActionDto): Promise<ChallengeAction> {
const data = { ...createChallengeActionDto, userId: authenticatedUser.id } const data = { ...createChallengeActionDto, userId: authenticatedUser.id }
return await this.prisma.challengeAction.create({ data: data }) return await this.prisma.challengeAction.create({
data: data,
include: { challenge: true },
})
} }
async findAll(queryPagination?: QueryPaginationDto): Promise<[ChallengeAction[], number]> { async findAll(queryPagination?: QueryPaginationDto): Promise<[ChallengeAction[], number]> {
return [ return [
await this.prisma.challengeAction.findMany({ await this.prisma.challengeAction.findMany({
...paginate(queryPagination), ...paginate(queryPagination),
include: {
challenge: true,
},
}), }),
await this.prisma.challenge.count(), await this.prisma.challenge.count(),
] ]
} }
async findOne(id: number): Promise<ChallengeAction> { async findOne(id: number): Promise<ChallengeAction> {
return await this.prisma.challengeAction.findUnique({ where: { id } }) return await this.prisma.challengeAction.findUnique({
where: { id },
include: {
challenge: true,
},
})
} }
async update(id: number, updateChallengeActionDto: UpdateChallengeActionDto): Promise<ChallengeAction> { async update(id: number, updateChallengeActionDto: UpdateChallengeActionDto): Promise<ChallengeAction> {
@ -36,6 +47,8 @@ export class ChallengeActionsService {
} }
async remove(id: number): Promise<ChallengeAction> { async remove(id: number): Promise<ChallengeAction> {
return await this.prisma.challengeAction.delete({ where: { id } }) return await this.prisma.challengeAction.delete({
where: { id },
})
} }
} }

View File

@ -1,6 +1,6 @@
import { ApiProperty } from "@nestjs/swagger" import { ApiProperty } from "@nestjs/swagger"
import { Type } from "class-transformer" import { Type } from "class-transformer"
import { IsBoolean, IsInt } from "class-validator" import { IsBoolean, IsInt, IsOptional } from "class-validator"
export class CreateChallengeActionDto { export class CreateChallengeActionDto {
@IsInt() @IsInt()
@ -8,13 +8,15 @@ export class CreateChallengeActionDto {
@ApiProperty({ description: "Identifiant du défi rattaché à l'action" }) @ApiProperty({ description: "Identifiant du défi rattaché à l'action" })
challengeId: number challengeId: number
@IsOptional()
@IsBoolean() @IsBoolean()
@Type(() => Boolean) @Type(() => Boolean)
@ApiProperty({ description: "Est-ce que le défi est actuellement en train d'être réalisé" }) @ApiProperty({ description: "Est-ce que le défi est actuellement en train d'être réalisé", default: true })
active: boolean active: boolean = true
@IsOptional()
@IsBoolean() @IsBoolean()
@Type(() => Boolean) @Type(() => Boolean)
@ApiProperty({ description: "Est-ce que le défi a été réussi" }) @ApiProperty({ description: "Est-ce que le défi a été réussi", default: false })
success: boolean success: boolean = false
} }

View File

@ -1,9 +1,13 @@
import { ApiProperty } from "@nestjs/swagger" import { ApiProperty } from "@nestjs/swagger"
import { ChallengeAction } from "@prisma/client" import { ChallengeAction } from "@prisma/client"
import { ChallengeEntity } from "src/challenges/entities/challenge.entity"
export class ChallengeActionEntity implements ChallengeAction { export class ChallengeActionEntity implements ChallengeAction {
constructor(partial: Partial<ChallengeActionEntity>) { constructor(partial: Partial<ChallengeActionEntity>) {
Object.assign(this, partial) Object.assign(this, partial)
if (this.challenge) {
this.challenge = new ChallengeEntity(this.challenge)
}
} }
@ApiProperty({ description: "Identifiant unique" }) @ApiProperty({ description: "Identifiant unique" })
@ -15,6 +19,9 @@ export class ChallengeActionEntity implements ChallengeAction {
@ApiProperty({ description: "Identifiant du défi rattaché à l'action" }) @ApiProperty({ description: "Identifiant du défi rattaché à l'action" })
challengeId: number challengeId: number
@ApiProperty({ type: ChallengeEntity, description: "Défi rattaché à l'action", nullable: true })
challenge?: ChallengeEntity | null
@ApiProperty({ description: "Est-ce que le défi est actuellement en train d'être réalisé" }) @ApiProperty({ description: "Est-ce que le défi est actuellement en train d'être réalisé" })
active: boolean active: boolean