Compare commits

..

No commits in common. "7988850063ae2a904b3855a9a83b7c23c297fb26" and "d61527709de0145baaee7501857be1382ad0514a" have entirely different histories.

3 changed files with 14 additions and 62 deletions

View File

@ -8,29 +8,17 @@ import {
Patch, Patch,
Post, Post,
Query, Query,
ValidationPipe,
} from '@nestjs/common'; } from '@nestjs/common';
import { CreatePostDto, QueryPostDto, UpdatePostDto } from '@/modules/content/dtos/post.dto';
import { PostService } from '@/modules/content/services/post.service'; import { PostService } from '@/modules/content/services/post.service';
import { PaginateOptions } from '@/modules/database/types';
@Controller('posts') @Controller('posts')
export class PostController { export class PostController {
constructor(private postService: PostService) {} constructor(private postService: PostService) {}
@Get() @Get()
async list( async list(@Query() options: PaginateOptions) {
@Query(
new ValidationPipe({
transform: true,
whitelist: true,
forbidUnknownValues: true,
forbidNonWhitelisted: true,
validationError: { target: false },
}),
)
options: QueryPostDto,
) {
return this.postService.paginate(options); return this.postService.paginate(options);
} }
@ -41,34 +29,16 @@ export class PostController {
@Post() @Post()
async store( async store(
@Body( @Body()
new ValidationPipe({ data: RecordAny,
transform: true,
whitelist: true,
forbidUnknownValues: true,
forbidNonWhitelisted: true,
validationError: { target: false },
groups: ['create'],
}),
)
data: CreatePostDto,
) { ) {
return this.postService.create(data); return this.postService.create(data);
} }
@Patch() @Patch()
async update( async update(
@Body( @Body()
new ValidationPipe({ data: RecordAny,
transform: true,
whitelist: true,
forbidUnknownValues: true,
forbidNonWhitelisted: true,
validationError: { target: false },
groups: ['update'],
}),
)
data: UpdatePostDto,
) { ) {
return this.postService.update(data); return this.postService.update(data);
} }

View File

@ -1,12 +1,5 @@
import { Expose } from 'class-transformer'; import { Expose } from 'class-transformer';
import { import { BaseEntity, Column, CreateDateColumn, Entity, PrimaryColumn } from 'typeorm';
BaseEntity,
Column,
CreateDateColumn,
Entity,
PrimaryColumn,
UpdateDateColumn,
} from 'typeorm';
import { PostBodyType } from '@/modules/content/constants'; import { PostBodyType } from '@/modules/content/constants';
@ -28,7 +21,7 @@ export class PostEntity extends BaseEntity {
@Column({ comment: '关键字', type: 'simple-array', nullable: true }) @Column({ comment: '关键字', type: 'simple-array', nullable: true })
keywords?: []; keywords?: [];
@Column({ comment: '文章类型', type: 'enum', enum: PostBodyType, default: PostBodyType.HTML }) @Column({ comment: '文章类型', type: 'enum', enum: PostBodyType })
type: PostBodyType; type: PostBodyType;
@Column({ comment: '发布时间', type: 'varchar', nullable: true }) @Column({ comment: '发布时间', type: 'varchar', nullable: true })
@ -40,6 +33,6 @@ export class PostEntity extends BaseEntity {
@CreateDateColumn({ comment: '创建时间' }) @CreateDateColumn({ comment: '创建时间' })
createdAt?: Date; createdAt?: Date;
@UpdateDateColumn({ comment: '更新时间' }) @Column({ comment: '更新时间', nullable: true })
updatedAt?: Date; updatedAt?: Date;
} }

View File

@ -5,7 +5,6 @@ import { isFunction, omit } from 'lodash';
import { EntityNotFoundError, IsNull, Not, SelectQueryBuilder } from 'typeorm'; import { EntityNotFoundError, IsNull, Not, SelectQueryBuilder } from 'typeorm';
import { PostOrder } from '@/modules/content/constants'; import { PostOrder } from '@/modules/content/constants';
import { CreatePostDto, UpdatePostDto } from '@/modules/content/dtos/post.dto';
import { PostEntity } from '@/modules/content/entities/post.entity'; import { PostEntity } from '@/modules/content/entities/post.entity';
import { PostRepository } from '@/modules/content/repositories/post.repository'; import { PostRepository } from '@/modules/content/repositories/post.repository';
import { PaginateOptions, QueryHook } from '@/modules/database/types'; import { PaginateOptions, QueryHook } from '@/modules/database/types';
@ -31,24 +30,14 @@ export class PostService {
return item; return item;
} }
async create(data: CreatePostDto) { async create(data: RecordAny) {
let publishedAt: Date | null; const item = await this.repository.save(data);
if (!isNil(data.publish)) {
publishedAt = data.publish ? new Date() : null;
}
const item = await this.repository.save({ ...omit(data, ['publish']), publishedAt });
return this.detail(item.id); return this.detail(item.id);
} }
async update(data: UpdatePostDto) { async update(data: RecordAny) {
let publishedAt: Date | null; data.updatedAt = new Date();
if (!isNil(data.publish)) { await this.repository.update(data.id, omit(data, ['id']));
publishedAt = data.publish ? new Date() : null;
}
await this.repository.update(data.id, {
...omit(data, ['id', 'publish']),
publishedAt,
});
return this.detail(data.id); return this.detail(data.id);
} }