123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- import { BadRequestException, Injectable } from '@nestjs/common';
- import { Article } from './article.entity';
- import { InjectRepository } from '@nestjs/typeorm';
- import { Like, Repository } from 'typeorm';
- import {
- CreateArticleDto,
- CreateArticleTranslations,
- GetArticleDto,
- QueryArticleDto,
- UpdateArticleDto,
- } from './dto';
- import { ArticleTranslation } from './article.entity.translation';
- @Injectable()
- export class ArticleService {
- constructor(
- @InjectRepository(Article)
- private articleRepo: Repository<Article>,
- @InjectRepository(ArticleTranslation)
- private articleTranslationRepo: Repository<ArticleTranslation>,
- ) { }
- async create(createArticleDto: CreateArticleDto) {
- const article = this.articleRepo.create(createArticleDto);
- return this.articleRepo.save(article);
- }
- async findAll(query: GetArticleDto) {
- return this.articleRepo.find({ where: query });
- }
- async findPagination(query: QueryArticleDto) {
- const pageSize = query.pageSize || 10;
- const pageNo = query.pageNo || 1;
- const [data, total] = await this.articleRepo.findAndCount({
- where: {
- title: Like(`%${query.title || ''}%`),
- enable: query.enable || undefined,
- },
- relations: { user: true, category: true, translations: true },
- select: {
- user: {
- id: true,
- username: true,
- },
- category: {
- id: true,
- title: true,
- },
- },
- order: {
- // title: 'ASC',
- createTime: 'DESC',
- },
- take: pageSize,
- skip: (pageNo - 1) * pageSize,
- });
- const pageData = data.map((item) => {
- return { ...item };
- });
- return { pageData, total };
- }
- async remove(id: number) {
- await this.articleRepo.delete(id);
- return true;
- }
- async find(id: number) {
- return await this.articleRepo.findOne({
- where: { id },
- relations: { user: true, translations: true },
- select: {
- user: {
- id: true,
- username: true,
- },
- category: {
- id: true,
- title: true,
- },
- },
- });
- }
- async update(id: number, updateArticleDto: UpdateArticleDto) {
- const article = await this.articleRepo.findOne({ where: { id } });
- if (!article) throw new BadRequestException('权限不存在或者已删除');
- const updateArticle = this.articleRepo.merge(article, updateArticleDto);
- await this.articleRepo.save(updateArticle);
- return true;
- }
- }
|