solutions system

This commit is contained in:
mmacierzanka committed 2023-05-27 02:29:40 +02:00
1 parent 9216dd0726
commit 7dd7000885
6 files changed
+157 -2

No files matched your search

@@ -0,0 +1,40 @@
import { ConflictException, Injectable } from '@nestjs/common';
import { CreateSolutionDto } from './dto/create-solution.dto';
import { IssuesService } from 'src/issues/issues.service';
import { InjectRepository } from '@nestjs/typeorm';
import { Solution } from './entities/solution.entity';
import { Repository } from 'typeorm';
@Injectable()
export class SolutionsService {
constructor(
@InjectRepository(Solution)
private readonly repository: Repository<Solution>,
private readonly issues: IssuesService,
) {}
async create(issueId: string, createSolutionDto: CreateSolutionDto) {
if ((await this.getForIssue(issueId)) !== null)
throw new ConflictException('This issue already has a solution');
const solution = this.repository.create({ ...createSolutionDto });
const issue = await this.issues.findOne(issueId);
solution.issue = Promise.resolve(issue);
return this.repository.save(solution);
}
async getForIssue(issueId: string): Promise<Solution | null> {
return this.repository.findOneBy({ issue: { id: issueId } });
}
async like(issueId: string, remove?: boolean) {
const ent = await this.getForIssue(issueId);
ent.likes = remove ? ent.likes - 1 : ent.likes + 1;
return this.repository.save(ent);
}
async dislike(issueId: string, remove?: boolean) {
const ent = await this.getForIssue(issueId);
ent.dislikes = remove ? ent.dislikes - 1 : ent.dislikes + 1;
return this.repository.save(ent);
}
}