feat: markdown to html

This commit is contained in:
Ivan
2021-07-02 15:16:27 +08:00
parent 2b7e344931
commit 76862b738d
4 changed files with 67 additions and 5 deletions

View File

@ -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;
}
}

View 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) {}