refactor: 调整adminResource服务结构
This commit is contained in:
@@ -9,8 +9,12 @@ import { AdminWebBlogController } from './controller/web/admin-web-blog.controll
|
|||||||
import { ResourceModule } from 'src/resource/resource.module';
|
import { ResourceModule } from 'src/resource/resource.module';
|
||||||
import { BlogModule } from 'src/blog/blog.module';
|
import { BlogModule } from 'src/blog/blog.module';
|
||||||
import { AuthModule } from 'src/auth/auth.module';
|
import { AuthModule } from 'src/auth/auth.module';
|
||||||
|
import { AdminResourceService } from './services/admin.resource.service';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
|
providers: [
|
||||||
|
AdminResourceService,
|
||||||
|
],
|
||||||
imports: [
|
imports: [
|
||||||
TypeOrmModule.forFeature([User]),
|
TypeOrmModule.forFeature([User]),
|
||||||
UserModule,
|
UserModule,
|
||||||
|
|||||||
@@ -10,17 +10,18 @@ import {
|
|||||||
UseGuards,
|
UseGuards,
|
||||||
} from '@nestjs/common';
|
} from '@nestjs/common';
|
||||||
import { CreateResourceDto } from 'src/admin/dto/admin-web/create-resource.dto';
|
import { CreateResourceDto } from 'src/admin/dto/admin-web/create-resource.dto';
|
||||||
|
import { AdminResourceService } from 'src/admin/services/admin.resource.service';
|
||||||
import { AuthGuard } from 'src/auth/guards/auth.guard';
|
import { AuthGuard } from 'src/auth/guards/auth.guard';
|
||||||
import { Role } from 'src/auth/role.enum';
|
import { Role } from 'src/auth/role.enum';
|
||||||
import { Roles } from 'src/common/decorators/role.decorator';
|
import { Roles } from 'src/common/decorators/role.decorator';
|
||||||
import { RolesGuard } from 'src/common/guard/roles.guard';
|
import { RolesGuard } from 'src/common/guard/roles.guard';
|
||||||
import { ResourceService } from 'src/resource/resource.service';
|
|
||||||
|
|
||||||
@Controller('/admin/web/resource')
|
@Controller('/admin/web/resource')
|
||||||
@UseGuards(AuthGuard, RolesGuard)
|
@UseGuards(AuthGuard, RolesGuard)
|
||||||
@Roles(Role.Admin)
|
@Roles(Role.Admin)
|
||||||
export class AdminWebResourceController {
|
export class AdminWebResourceController {
|
||||||
constructor(private readonly resourceService: ResourceService) { }
|
|
||||||
|
constructor(private readonly resourceService: AdminResourceService) { }
|
||||||
|
|
||||||
@Get()
|
@Get()
|
||||||
async list() {
|
async list() {
|
||||||
@@ -42,7 +43,10 @@ export class AdminWebResourceController {
|
|||||||
@Param('id', new ParseUUIDPipe({ version: '4' })) id: string,
|
@Param('id', new ParseUUIDPipe({ version: '4' })) id: string,
|
||||||
@Body() data: CreateResourceDto,
|
@Body() data: CreateResourceDto,
|
||||||
) {
|
) {
|
||||||
return this.resourceService.update(id, data);
|
return this.resourceService.update({
|
||||||
|
...data,
|
||||||
|
id,
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Delete(':id')
|
@Delete(':id')
|
||||||
|
|||||||
38
apps/backend/src/admin/services/admin.resource.service.ts
Normal file
38
apps/backend/src/admin/services/admin.resource.service.ts
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
import { Injectable } from "@nestjs/common";
|
||||||
|
import { InjectRepository } from "@nestjs/typeorm";
|
||||||
|
import { Resource } from "src/resource/entity/resource.entity";
|
||||||
|
import { Repository } from "typeorm";
|
||||||
|
|
||||||
|
@Injectable()
|
||||||
|
export class AdminResourceService {
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
@InjectRepository(Resource)
|
||||||
|
private readonly resourceRepository: Repository<Resource>,
|
||||||
|
) { }
|
||||||
|
|
||||||
|
|
||||||
|
async findAll() {
|
||||||
|
return this.resourceRepository.find();
|
||||||
|
}
|
||||||
|
|
||||||
|
async findById(id: string): Promise<Resource> {
|
||||||
|
return this.resourceRepository.findOne({ where: { id } });
|
||||||
|
}
|
||||||
|
|
||||||
|
async create(data: Partial<Resource>): Promise<Resource> {
|
||||||
|
const resource = this.resourceRepository.create(data);
|
||||||
|
return this.resourceRepository.save(resource);
|
||||||
|
}
|
||||||
|
|
||||||
|
async update(data: Partial<Resource>): Promise<Resource> {
|
||||||
|
// const updateRes = await this.resourceRepository.update(id, data);
|
||||||
|
// updateRes.affected
|
||||||
|
// return this.resourceRepository.findOne({ where: { id } });
|
||||||
|
return this.resourceRepository.save(data);
|
||||||
|
}
|
||||||
|
|
||||||
|
async delete(id: string): Promise<void> {
|
||||||
|
await this.resourceRepository.delete(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -39,3 +39,12 @@ export class Resource {
|
|||||||
@UpdateDateColumn({ precision: 3 })
|
@UpdateDateColumn({ precision: 3 })
|
||||||
updatedAt: Date;
|
updatedAt: Date;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface PublicResource {
|
||||||
|
id: string;
|
||||||
|
title: string;
|
||||||
|
description: string;
|
||||||
|
imageUrl: string;
|
||||||
|
link: string;
|
||||||
|
tags: ResourceTag[];
|
||||||
|
}
|
||||||
@@ -8,6 +8,6 @@ import { Resource } from './entity/resource.entity';
|
|||||||
imports: [TypeOrmModule.forFeature([Resource])],
|
imports: [TypeOrmModule.forFeature([Resource])],
|
||||||
controllers: [ResourceController],
|
controllers: [ResourceController],
|
||||||
providers: [ResourceService],
|
providers: [ResourceService],
|
||||||
exports: [ResourceService],
|
exports: [ResourceService, TypeOrmModule.forFeature([Resource])],
|
||||||
})
|
})
|
||||||
export class ResourceModule {}
|
export class ResourceModule {}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { Resource } from './entity/resource.entity';
|
import { PublicResource, Resource } from './entity/resource.entity';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
@@ -10,29 +10,12 @@ export class ResourceService {
|
|||||||
private readonly resourceRepository: Repository<Resource>,
|
private readonly resourceRepository: Repository<Resource>,
|
||||||
) { }
|
) { }
|
||||||
|
|
||||||
async findAll(): Promise<Resource[]> {
|
async findAll(): Promise<PublicResource[]> {
|
||||||
return this.resourceRepository.find({
|
return this.resourceRepository.find({
|
||||||
|
select: ['id', 'title', 'description', 'imageUrl', 'link', 'tags'],
|
||||||
order: {
|
order: {
|
||||||
createdAt: 'DESC',
|
updatedAt: 'DESC',
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
async findById(id: string): Promise<Resource> {
|
|
||||||
return this.resourceRepository.findOne({ where: { id } });
|
|
||||||
}
|
|
||||||
|
|
||||||
async create(data: Partial<Resource>): Promise<Resource> {
|
|
||||||
const resource = this.resourceRepository.create(data);
|
|
||||||
return this.resourceRepository.save(resource);
|
|
||||||
}
|
|
||||||
|
|
||||||
async update(id: string, data: Partial<Resource>): Promise<Resource> {
|
|
||||||
await this.resourceRepository.update(id, data);
|
|
||||||
return this.resourceRepository.findOne({ where: { id } });
|
|
||||||
}
|
|
||||||
|
|
||||||
async delete(id: string): Promise<void> {
|
|
||||||
await this.resourceRepository.delete(id);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user