84 lines
1.9 KiB
TypeScript
84 lines
1.9 KiB
TypeScript
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)
|
|
}
|
|
}
|