This commit is contained in:
2026-04-22 21:55:40 +03:30
parent 1a3a450960
commit f9e1ad69dc
85 changed files with 15644 additions and 4057 deletions
@@ -0,0 +1,83 @@
import { ConsumerDevicesSelect } from '@/generated/prisma/models'
import { PrismaService } from '@/prisma/prisma.service'
import { BadRequestException, Injectable } from '@nestjs/common'
import { ResponseMapper } from 'common/response/response-mapper'
import { CreateConfigDto } from './dto/create-config.dto'
@Injectable()
export class ConfigService {
constructor(private prisma: PrismaService) {}
private readonly defaultSelect: ConsumerDevicesSelect = {
uuid: true,
app_version: true,
brand: true,
browser_name: true,
build_number: true,
device: true,
os_version: true,
fcm_token: true,
model: true,
platform: true,
release_number: true,
sdk_version: true,
consumer: {
select: {
id: true,
first_name: true,
last_name: true,
},
},
}
async findOne(uuid: string) {
const config = await this.prisma.consumerDevices.findUnique({
where: {
uuid,
},
select: this.defaultSelect,
})
return ResponseMapper.single(config)
}
async create(consumer_id: string, data: CreateConfigDto) {
const prevConfig = await this.prisma.consumerDevices.findUnique({
where: {
uuid: data.uuid,
},
select: {
consumer_id: true,
},
})
if (prevConfig && consumer_id !== prevConfig.consumer_id) {
throw new BadRequestException('این دستگاه با کاربری دیگری ثبت شده است.')
}
const config = await this.prisma.consumerDevices.upsert({
where: {
uuid: data.uuid,
},
update: {
...data,
consumer: {
connect: {
id: consumer_id,
},
},
},
create: {
...data,
consumer: {
connect: {
id: consumer_id,
},
},
},
select: this.defaultSelect,
})
return ResponseMapper.create(config)
}
}