feat: markdown to html
This commit is contained in:
@ -1,8 +1,17 @@
|
||||
import { Resolver, Query, Mutation, Args, Int } from '@nestjs/graphql';
|
||||
import {
|
||||
Resolver,
|
||||
Query,
|
||||
Mutation,
|
||||
Args,
|
||||
Int,
|
||||
ResolveField,
|
||||
Parent,
|
||||
} from '@nestjs/graphql';
|
||||
import { ArticlesService } from './articles.service';
|
||||
import { Article } from './entities/article.entity';
|
||||
import { CreateArticleInput } from './dto/create-article.input';
|
||||
import { UpdateArticleInput } from './dto/update-article.input';
|
||||
import * as marked from 'marked';
|
||||
|
||||
@Resolver(() => Article)
|
||||
export class ArticlesResolver {
|
||||
@ -16,8 +25,8 @@ export class ArticlesResolver {
|
||||
}
|
||||
|
||||
@Query(() => [Article], { name: 'articles' })
|
||||
findAll() {
|
||||
return this.articlesService.findAll();
|
||||
async findAll() {
|
||||
return await this.articlesService.findAll();
|
||||
}
|
||||
|
||||
@Query(() => Article, { name: 'article' })
|
||||
@ -37,4 +46,19 @@ export class ArticlesResolver {
|
||||
removeArticle(@Args('id', { type: () => String }) id: string) {
|
||||
return this.articlesService.remove(id);
|
||||
}
|
||||
|
||||
@ResolveField(() => String)
|
||||
async html(@Parent() article: Article) {
|
||||
return marked(article.content);
|
||||
}
|
||||
|
||||
@ResolveField(() => String, { nullable: true })
|
||||
async description(@Parent() article: Article) {
|
||||
const tokens = marked.lexer(article.content);
|
||||
const token = tokens.find((token) =>
|
||||
['blockquote', 'paragraph'].includes(token.type),
|
||||
) as { text: string };
|
||||
|
||||
return token?.text;
|
||||
}
|
||||
}
|
||||
|
7
src/articles/dto/article-list-item.dto.ts
Normal file
7
src/articles/dto/article-list-item.dto.ts
Normal file
@ -0,0 +1,7 @@
|
||||
import { ObjectType, OmitType } from '@nestjs/graphql';
|
||||
import { Article } from '../entities/article.entity';
|
||||
|
||||
@ObjectType()
|
||||
export class ArticleListItemDto extends OmitType(Article, [
|
||||
'content',
|
||||
] as const) {}
|
Reference in New Issue
Block a user