transform core api codes into this project, update modules as admin/pos context modules

This commit is contained in:
2026-03-07 11:25:11 +03:30
parent b949500482
commit 8c5f1d4d49
167 changed files with 26975 additions and 1837 deletions
@@ -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
}