refactor(goods): streamline goods service and controller, remove favorites module
- Removed the PosGoodFavorite module, controller, and service to simplify the codebase. - Updated goods service to handle cache invalidation directly. - Refactored goods controller to remove commented-out code and improve clarity. - Introduced OwnedGoods module for better organization of owned goods functionality. - Updated DTOs to extend from existing structures for consistency. - Enhanced cache invalidation logic in goods service and owned goods service.
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
import {
|
||||
Body,
|
||||
Controller,
|
||||
Delete,
|
||||
Get,
|
||||
Param,
|
||||
Patch,
|
||||
Post,
|
||||
} from '@nestjs/common';
|
||||
import { {{pascalCase name}}Service } from './{{kebabCase name}}.service';
|
||||
import { Create{{pascalCase name}}Dto } from './dto/create-{{kebabCase name}}.dto';
|
||||
import { Update{{pascalCase name}}Dto } from './dto/update-{{kebabCase name}}.dto';
|
||||
|
||||
@Controller('{{kebabCase name}}')
|
||||
export class {{pascalCase name}}Controller {
|
||||
constructor(private readonly service: {{pascalCase name}}Service) {}
|
||||
|
||||
|
||||
@Get()
|
||||
findAll() {
|
||||
return this.service.findAll();
|
||||
}
|
||||
|
||||
@Get(':id')
|
||||
findOne(@Param('id') id: string) {
|
||||
return this.service.findOne(id);
|
||||
}
|
||||
|
||||
@Post()
|
||||
create(@Body() dto: Create{{pascalCase name}}Dto) {
|
||||
return this.service.create(dto);
|
||||
}
|
||||
|
||||
@Patch(':id')
|
||||
update(
|
||||
@Param('id') id: string,
|
||||
@Body() dto: Update{{pascalCase name}}Dto,
|
||||
) {
|
||||
return this.service.update(id, dto);
|
||||
}
|
||||
|
||||
@Delete(':id')
|
||||
remove(@Param('id') id: string) {
|
||||
return this.service.remove(id);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
import { IsString, IsNumber, IsBoolean, IsEmail } from 'class-validator';
|
||||
|
||||
export class Create{{pascalCase name}}Dto {
|
||||
{{#each parsedFields}}
|
||||
@{{validator}}()
|
||||
{{name}}: {{type}};
|
||||
|
||||
{{/each}}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
import { Module } from '@nestjs/common';
|
||||
import { {{pascalCase name}}Service } from './{{kebabCase name}}.service';
|
||||
import { {{pascalCase name}}Controller } from './{{kebabCase name}}.controller';
|
||||
import { PrismaService } from '{{prismaImportPath modulePath name}}';
|
||||
|
||||
@Module({
|
||||
controllers: [{{pascalCase name}}Controller],
|
||||
providers: [{{pascalCase name}}Service, PrismaService],
|
||||
})
|
||||
export class {{pascalCase name}}Module {}
|
||||
@@ -0,0 +1,63 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { PrismaService } from '@/prisma/prisma.service';
|
||||
import { ResponseMapper } from '@/common/response/response-mapper'
|
||||
import { Create{{pascalCase name}}Dto } from './dto/create-{{kebabCase name}}.dto';
|
||||
import { Update{{pascalCase name}}Dto } from './dto/update-{{kebabCase name}}.dto';
|
||||
|
||||
@Injectable()
|
||||
export class {{pascalCase name}}Service {
|
||||
constructor(private readonly prisma: PrismaService) {}
|
||||
|
||||
private readonly summarySelect = {
|
||||
id: true,
|
||||
}
|
||||
|
||||
private readonly select = {
|
||||
...this.summarySelect,
|
||||
}
|
||||
|
||||
private readonly where = () => ({})
|
||||
|
||||
|
||||
async findAll() {
|
||||
const items = await this.prisma.{{camelCase name}}.findMany({
|
||||
where: this.where(),
|
||||
select: this.summarySelect,
|
||||
});
|
||||
return ResponseMapper.list(items)
|
||||
}
|
||||
|
||||
async findOne(id: string) {
|
||||
const item = this.prisma.{{camelCase name}}.findUnique({
|
||||
where: {...this.where(), id },
|
||||
select: this.select,
|
||||
});
|
||||
|
||||
return ResponseMapper.single(item)
|
||||
}
|
||||
|
||||
async create(createDto: Create{{pascalCase name}}Dto) {
|
||||
const item = this.prisma.{{camelCase name}}.create({
|
||||
data: createDto,
|
||||
select: this.select,
|
||||
});
|
||||
|
||||
return ResponseMapper.create(item)
|
||||
}
|
||||
|
||||
async update(id: string, updateDto: Update{{pascalCase name}}Dto) {
|
||||
const item = this.prisma.{{camelCase name}}.update({
|
||||
where: { id },
|
||||
data: updateDto,
|
||||
select: this.select,
|
||||
});
|
||||
|
||||
return ResponseMapper.update(item)
|
||||
}
|
||||
|
||||
async remove(id: string) {
|
||||
return this.prisma.{{camelCase name}}.delete({
|
||||
where: { id },
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
import { PartialType } from '@nestjs/swagger'
|
||||
import { Create{{pascalCase name}}Dto } from './create-{{kebabCase name}}.dto';
|
||||
|
||||
export class Update{{pascalCase name}}Dto extends PartialType(Create{{pascalCase name}}Dto) {}
|
||||
Reference in New Issue
Block a user