update
This commit is contained in:
@@ -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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user