transform core api codes into this project, update modules as admin/pos context modules
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
import { Body, Controller, Delete, Get, Param, Post, Put } from '@nestjs/common'
|
||||
import { DevicesService } from './devices.service'
|
||||
import { CreateDeviceDto, UpdateDeviceDto } from './dto/device.dto'
|
||||
|
||||
@Controller('admin/devices')
|
||||
export class DevicesController {
|
||||
constructor(private readonly devicesService: DevicesService) {}
|
||||
|
||||
@Get()
|
||||
async findAll() {
|
||||
return this.devicesService.findAll()
|
||||
}
|
||||
|
||||
@Get(':id')
|
||||
async findOne(@Param('id') id: string) {
|
||||
return this.devicesService.findOne(id)
|
||||
}
|
||||
|
||||
@Post()
|
||||
async create(@Body() data: CreateDeviceDto) {
|
||||
return this.devicesService.create(data)
|
||||
}
|
||||
|
||||
@Put(':id')
|
||||
async update(@Param('id') id: string, @Body() data: UpdateDeviceDto) {
|
||||
return this.devicesService.update(id, data)
|
||||
}
|
||||
|
||||
@Delete(':id')
|
||||
async delete(@Param('id') id: string) {
|
||||
return this.devicesService.delete(id)
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
import { PrismaModule } from '@/prisma/prisma.module'
|
||||
import { Module } from '@nestjs/common'
|
||||
import { DevicesController } from './devices.controller'
|
||||
import { DevicesService } from './devices.service'
|
||||
|
||||
@Module({
|
||||
imports: [PrismaModule],
|
||||
controllers: [DevicesController],
|
||||
providers: [DevicesService],
|
||||
})
|
||||
export class AdminDevicesModule {}
|
||||
@@ -0,0 +1,52 @@
|
||||
import { PrismaService } from '@/prisma/prisma.service'
|
||||
import { Injectable } from '@nestjs/common'
|
||||
import { ResponseMapper } from 'common/response/response-mapper'
|
||||
import { CreateDeviceDto, UpdateDeviceDto } from './dto/device.dto'
|
||||
|
||||
@Injectable()
|
||||
export class DevicesService {
|
||||
constructor(private readonly prisma: PrismaService) {}
|
||||
|
||||
async findAll(page = 1, pageSize = 10) {
|
||||
const [items, count] = await this.prisma.$transaction([
|
||||
this.prisma.device.findMany({
|
||||
skip: (page - 1) * pageSize,
|
||||
take: pageSize,
|
||||
include: { brand: true },
|
||||
}),
|
||||
this.prisma.device.count(),
|
||||
])
|
||||
return ResponseMapper.paginate(items, { count, page, pageSize })
|
||||
}
|
||||
|
||||
async findOne(id: string) {
|
||||
const item = await this.prisma.device.findUnique({
|
||||
where: { id },
|
||||
include: { brand: true },
|
||||
})
|
||||
return ResponseMapper.single(item)
|
||||
}
|
||||
|
||||
async create(data: CreateDeviceDto) {
|
||||
const { brand_id, ...rest } = data
|
||||
|
||||
const dataToCreate = {
|
||||
...rest,
|
||||
brand: { connect: { id: brand_id } },
|
||||
}
|
||||
const device = await this.prisma.device.create({
|
||||
data: dataToCreate,
|
||||
})
|
||||
return ResponseMapper.create(device)
|
||||
}
|
||||
|
||||
async update(id: string, data: UpdateDeviceDto) {
|
||||
const device = await this.prisma.device.update({ where: { id }, data })
|
||||
return ResponseMapper.update(device)
|
||||
}
|
||||
|
||||
async delete(id: string) {
|
||||
await this.prisma.device.delete({ where: { id } })
|
||||
return ResponseMapper.delete()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import { IsOptional, IsString } from 'class-validator'
|
||||
|
||||
export class CreateDeviceDto {
|
||||
@IsString()
|
||||
name: string
|
||||
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
os_version?: string
|
||||
|
||||
@IsString()
|
||||
brand_id: string
|
||||
}
|
||||
|
||||
export class UpdateDeviceDto {
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
name?: string
|
||||
|
||||
@IsOptional()
|
||||
@IsString()
|
||||
os_version?: string
|
||||
|
||||
@IsOptional()
|
||||
brand_id?: string
|
||||
}
|
||||
Reference in New Issue
Block a user