update license structures and setup file storage services

This commit is contained in:
2026-04-16 22:19:20 +03:30
parent d098ef10e1
commit ca494ee82a
75 changed files with 4550 additions and 1255 deletions
@@ -1,5 +1,4 @@
import { Body, Controller, Get, Param, Patch } from '@nestjs/common'
import { UpdateLicenseDto } from './dto/license.dto'
import { Controller, Get, Param } from '@nestjs/common'
import { PartnerLicensesService } from './licenses.service'
@Controller('admin/licenses')
@@ -16,10 +15,10 @@ export class LicensesController {
return this.licensesService.findOne(id)
}
@Patch(':id')
async update(@Param('id') id: string, @Body() data: UpdateLicenseDto) {
return this.licensesService.update(id, data)
}
// @Patch(':id')
// async update(@Param('id') id: string, @Body() data: UpdateLicenseDto) {
// return this.licensesService.update(id, data)
// }
// @Delete(':id')
// async delete(@Param('id') id: string) {
+19 -21
View File
@@ -1,18 +1,16 @@
import { LicenseSelect } from '@/generated/prisma/models'
import { ActivatedLicenseSelect } from '@/generated/prisma/models'
import { PrismaService } from '@/prisma/prisma.service'
import { Injectable } from '@nestjs/common'
import { ResponseMapper } from 'common/response/response-mapper'
import { UpdateLicenseDto } from './dto/license.dto'
@Injectable()
export class PartnerLicensesService {
constructor(private readonly prisma: PrismaService) {}
private readonly licenseDefaultSelect: LicenseSelect = {
private readonly licenseDefaultSelect: ActivatedLicenseSelect = {
id: true,
starts_at: true,
expires_at: true,
status: true,
consumer: {
select: {
first_name: true,
@@ -21,22 +19,31 @@ export class PartnerLicensesService {
status: true,
},
},
partner: {
license: {
select: {
id: true,
name: true,
charged_license_transaction: {
select: {
partner: {
select: {
id: true,
name: true,
},
},
},
},
},
},
}
async findAll(page = 1, pageSize = 10) {
const [licenses, count] = await this.prisma.$transaction([
this.prisma.license.findMany({
this.prisma.activatedLicense.findMany({
select: this.licenseDefaultSelect,
skip: (page - 1) * pageSize,
take: pageSize,
}),
this.prisma.license.count(),
this.prisma.activatedLicense.count(),
])
return ResponseMapper.paginate(licenses, {
@@ -47,22 +54,13 @@ export class PartnerLicensesService {
}
async findOne(id: string) {
const license = await this.prisma.license.findFirst({
where: { id },
include: this.licenseDefaultSelect,
omit: {
partner_id: true,
const license = await this.prisma.activatedLicense.findFirst({
where: {
id,
},
select: this.licenseDefaultSelect,
})
return ResponseMapper.single(license)
}
async update(id: string, data: UpdateLicenseDto) {
const license = await this.prisma.license.update({
where: { id },
data: { ...data },
})
return ResponseMapper.update(license)
}
}