diff --git a/ghost/ghost/src/core/snippets/snippets.service.ts b/ghost/ghost/src/core/snippets/snippets.service.ts index 409dafabe9..8d34cc17af 100644 --- a/ghost/ghost/src/core/snippets/snippets.service.ts +++ b/ghost/ghost/src/core/snippets/snippets.service.ts @@ -9,6 +9,14 @@ export class SnippetsService { @Inject('SnippetsRepository') private readonly repository: SnippetsRepository ) {} + async create(data: any): Promise { + const snippet = Snippet.create(data); + + await this.repository.save(snippet); + + return snippet; + } + async getOne(id: ObjectID) { return this.repository.getOne(id); } diff --git a/ghost/ghost/src/http/controllers/snippets.controller.ts b/ghost/ghost/src/http/controllers/snippets.controller.ts index 58c884daa6..a9db7d44d5 100644 --- a/ghost/ghost/src/http/controllers/snippets.controller.ts +++ b/ghost/ghost/src/http/controllers/snippets.controller.ts @@ -1,10 +1,13 @@ -import {Controller, Get, Param, Query} from '@nestjs/common'; +import {Body, Controller, Get, Param, Post, Query, UseInterceptors} from '@nestjs/common'; import {SnippetsService} from '../../core/snippets/snippets.service'; import {SnippetDTO} from './snippet.dto'; import {Pagination} from '../../common/pagination.type'; import ObjectID from 'bson-objectid'; +import {now} from '../../common/date'; +import {LocationHeaderInterceptor} from './interceptors/location-header.interceptor'; @Controller('snippets') +@UseInterceptors(LocationHeaderInterceptor) export class SnippetsController { constructor(private readonly service: SnippetsService) {} @@ -22,6 +25,21 @@ export class SnippetsController { }; } + @Post('') + async add( + @Body() body: any, + @Query('formats') formats?: 'mobiledoc' | 'lexical' + ): Promise<{snippets: [SnippetDTO]}> { + const snippet = await this.service.create({ + ...body.snippets[0], + updatedAt: now() + }); + + return { + snippets: [new SnippetDTO(snippet, {formats})] + }; + } + @Get('') async browse( @Query('formats') formats?: 'mobiledoc' | 'lexical',