From 464931cc98f94338897cf9f21f74ed375fbc1da9 Mon Sep 17 00:00:00 2001 From: tone <3341154833@qq.com> Date: Wed, 7 May 2025 18:33:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8D=9A=E5=AE=A2=E6=A8=A1?= =?UTF-8?q?=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tone-page-server/src/app.module.ts | 7 +++-- .../src/blog/blog.controller.spec.ts | 18 +++++++++++ tone-page-server/src/blog/blog.controller.ts | 15 ++++++++++ tone-page-server/src/blog/blog.module.ts | 12 ++++++++ .../src/blog/blog.service.spec.ts | 18 +++++++++++ tone-page-server/src/blog/blog.service.ts | 23 ++++++++++++++ .../src/blog/entity/Blog.entity.ts | 30 +++++++++++++++++++ 7 files changed, 121 insertions(+), 2 deletions(-) create mode 100644 tone-page-server/src/blog/blog.controller.spec.ts create mode 100644 tone-page-server/src/blog/blog.controller.ts create mode 100644 tone-page-server/src/blog/blog.module.ts create mode 100644 tone-page-server/src/blog/blog.service.spec.ts create mode 100644 tone-page-server/src/blog/blog.service.ts create mode 100644 tone-page-server/src/blog/entity/Blog.entity.ts diff --git a/tone-page-server/src/app.module.ts b/tone-page-server/src/app.module.ts index f5dde71..be00dae 100644 --- a/tone-page-server/src/app.module.ts +++ b/tone-page-server/src/app.module.ts @@ -9,6 +9,8 @@ import { VerificationModule } from './verification/verification.module'; import { NotificationModule } from './notification/notification.module'; import { PassportModule } from '@nestjs/passport'; import { ResourceModule } from './resource/resource.module'; +import { BlogModule } from './blog/blog.module'; +import { BlgService } from './blg/blg.service'; @Module({ imports: [ @@ -29,9 +31,10 @@ import { ResourceModule } from './resource/resource.module'; AuthModule, VerificationModule, NotificationModule, - ResourceModule + ResourceModule, + BlogModule ], controllers: [AppController], - providers: [AppService], + providers: [AppService, BlgService], }) export class AppModule { } diff --git a/tone-page-server/src/blog/blog.controller.spec.ts b/tone-page-server/src/blog/blog.controller.spec.ts new file mode 100644 index 0000000..954192c --- /dev/null +++ b/tone-page-server/src/blog/blog.controller.spec.ts @@ -0,0 +1,18 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { BlogController } from './blog.controller'; + +describe('BlogController', () => { + let controller: BlogController; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + controllers: [BlogController], + }).compile(); + + controller = module.get(BlogController); + }); + + it('should be defined', () => { + expect(controller).toBeDefined(); + }); +}); diff --git a/tone-page-server/src/blog/blog.controller.ts b/tone-page-server/src/blog/blog.controller.ts new file mode 100644 index 0000000..7949819 --- /dev/null +++ b/tone-page-server/src/blog/blog.controller.ts @@ -0,0 +1,15 @@ +import { Controller, Get } from '@nestjs/common'; +import { BlogService } from './blog.service'; + +@Controller('blog') +export class BlogController { + + constructor( + private readonly blogService: BlogService, + ) { } + + @Get() + getBlogs() { + return this.blogService.list(); + } +} diff --git a/tone-page-server/src/blog/blog.module.ts b/tone-page-server/src/blog/blog.module.ts new file mode 100644 index 0000000..7ba652f --- /dev/null +++ b/tone-page-server/src/blog/blog.module.ts @@ -0,0 +1,12 @@ +import { Module } from '@nestjs/common'; +import { BlogController } from './blog.controller'; +import { BlogService } from './blog.service'; +import { TypeOrmModule } from '@nestjs/typeorm'; +import { Blog } from './entity/Blog.entity'; + +@Module({ + imports: [TypeOrmModule.forFeature([Blog])], + controllers: [BlogController], + providers: [BlogService] +}) +export class BlogModule { } diff --git a/tone-page-server/src/blog/blog.service.spec.ts b/tone-page-server/src/blog/blog.service.spec.ts new file mode 100644 index 0000000..44aa51a --- /dev/null +++ b/tone-page-server/src/blog/blog.service.spec.ts @@ -0,0 +1,18 @@ +import { Test, TestingModule } from '@nestjs/testing'; +import { BlogService } from './blog.service'; + +describe('BlogService', () => { + let service: BlogService; + + beforeEach(async () => { + const module: TestingModule = await Test.createTestingModule({ + providers: [BlogService], + }).compile(); + + service = module.get(BlogService); + }); + + it('should be defined', () => { + expect(service).toBeDefined(); + }); +}); diff --git a/tone-page-server/src/blog/blog.service.ts b/tone-page-server/src/blog/blog.service.ts new file mode 100644 index 0000000..9aebe23 --- /dev/null +++ b/tone-page-server/src/blog/blog.service.ts @@ -0,0 +1,23 @@ +import { Injectable } from '@nestjs/common'; +import { InjectRepository } from '@nestjs/typeorm'; +import { Blog } from './entity/Blog.entity'; +import { Repository } from 'typeorm'; + +@Injectable() +export class BlogService { + + constructor( + @InjectRepository(Blog) + private readonly blogRepository: Repository, + ) { } + + async list() { + return this.blogRepository.find({ + where: { deletedAt: null }, + order: { + publishAt: 'DESC', + } + }) + } + +} diff --git a/tone-page-server/src/blog/entity/Blog.entity.ts b/tone-page-server/src/blog/entity/Blog.entity.ts new file mode 100644 index 0000000..d190bb8 --- /dev/null +++ b/tone-page-server/src/blog/entity/Blog.entity.ts @@ -0,0 +1,30 @@ +import { Column, CreateDateColumn, DeleteDateColumn, Entity, OneToMany, PrimaryGeneratedColumn, UpdateDateColumn } from "typeorm"; + +@Entity() +export class Blog { + @PrimaryGeneratedColumn('uuid') + id: string; + + @Column() + title: string; + + @Column() + description: string; + + @Column() + contentUrl: string; + + @Column({ precision: 3 }) + publishAt: Date; + + @CreateDateColumn({ precision: 3 }) + createdAt: Date; + + @UpdateDateColumn({ precision: 3 }) + updatedAt: Date; + + @DeleteDateColumn({ precision: 3, nullable: true }) + deletedAt: Date; + + // 权限关系 TODO +} \ No newline at end of file