comment.service.ts
1.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import { Injectable } from '@nestjs/common'
import { InjectRepository } from '@nestjs/typeorm'
import { QueryRunner, Repository, getConnection } from 'typeorm'
import { Comment } from './model/comment.entity'
import { getCurrentDate } from '../shared/utils'
import { CreateCommentInput, GetCommentInput } from './dto/comment.input'
import { MASTER_TEST } from 'src/shared/const'
@Injectable()
export class CommentService {
constructor(
@InjectRepository(Comment) private commentRepository: Repository<Comment>,
) {}
private connection = getConnection()
async findAll(): Promise<Comment[]> {
return this.commentRepository.find()
}
async findOne(id: number): Promise<Comment> {
return this.commentRepository.findOne(id)
}
async findSome(input: Partial<GetCommentInput>): Promise<Comment[]> {
return this.commentRepository
.createQueryBuilder('comment')
.where('comment.post_id = :post_id', { post_id: input.post_id })
.orWhere('comment.author = :author', { author: input.author })
.orWhere('comment.parent = :parent', { parent: input.parent })
.getMany()
}
async createOne(input: CreateCommentInput): Promise<Comment> {
let result
const queryRunner: QueryRunner = this.connection.createQueryRunner()
await queryRunner.connect()
await queryRunner.startTransaction()
try {
const newInput = {
...input,
created_date: getCurrentDate(),
author: MASTER_TEST,
}
result = await queryRunner.manager.save(
this.commentRepository.create(newInput),
)
await queryRunner.commitTransaction()
} catch (err) {
await queryRunner.rollbackTransaction()
throw err
} finally {
await queryRunner.release()
}
return result
}
}