traintrape-moi/server/src/challenge-actions/challenge-actions.service.ts

55 lines
1.7 KiB
TypeScript
Raw Normal View History

2024-12-07 19:29:38 +01:00
import { Injectable } from '@nestjs/common'
import { CreateChallengeActionDto } from './dto/create-challenge-action.dto'
import { UpdateChallengeActionDto } from './dto/update-challenge-action.dto'
import { ChallengeAction, User } from '@prisma/client'
import { PrismaService } from 'src/prisma/prisma.service'
import { QueryPaginationDto } from 'src/common/dto/pagination-query.dto'
import { paginate } from 'src/common/utils/pagination.utils'
@Injectable()
export class ChallengeActionsService {
constructor(private prisma: PrismaService) { }
async create(authenticatedUser: User, createChallengeActionDto: CreateChallengeActionDto): Promise<ChallengeAction> {
const data = { ...createChallengeActionDto, userId: authenticatedUser.id }
return await this.prisma.challengeAction.create({
data: data,
include: { challenge: true },
})
2024-12-07 19:29:38 +01:00
}
async findAll(queryPagination?: QueryPaginationDto): Promise<[ChallengeAction[], number]> {
return [
await this.prisma.challengeAction.findMany({
...paginate(queryPagination),
include: {
challenge: true,
},
2024-12-07 19:29:38 +01:00
}),
await this.prisma.challenge.count(),
]
}
async findOne(id: number): Promise<ChallengeAction> {
return await this.prisma.challengeAction.findUnique({
where: { id },
include: {
challenge: true,
},
})
2024-12-07 19:29:38 +01:00
}
async update(id: number, updateChallengeActionDto: UpdateChallengeActionDto): Promise<ChallengeAction> {
return await this.prisma.challengeAction.update({
where: { id },
data: updateChallengeActionDto,
})
}
async remove(id: number): Promise<ChallengeAction> {
return await this.prisma.challengeAction.delete({
where: { id },
})
2024-12-07 19:29:38 +01:00
}
}