From 1160d81cdb282f1c48ce1382c5cc7d1c63d9f476 Mon Sep 17 00:00:00 2001 From: ahasani194 Date: Mon, 6 Apr 2026 13:31:40 +0330 Subject: [PATCH] create license management --- .../20260405112120_init/migration.sql | 2 + .../20260405114919_init/migration.sql | 17 + .../20260405130635_init/migration.sql | 14 + prisma/schema/admin/auth.prisma | 2 +- prisma/schema/admin/consumers.prisma | 3 +- prisma/schema/admin/license.prisma | 9 +- prisma/schema/schema.prisma | 17 +- prisma/seed.ts | 280 +++++++++++++- req.d.ts | 13 +- .../decorators/consumerInfo.decorator.ts | 33 ++ src/common/decorators/tokenInfo.decorator.ts | 2 +- src/common/guards/auth-consumer.guard.ts | 52 +++ .../{pos.gaurd.ts => auth-pos.guard.ts} | 56 +-- src/common/guards/jwt-auth.guard.ts | 22 +- src/common/models/consumerPayload.model.ts | 4 + src/common/models/index.ts | 3 + src/generated/prisma/internal/class.ts | 4 +- .../prisma/internal/prismaNamespace.ts | 6 +- .../prisma/internal/prismaNamespaceBrowser.ts | 6 +- src/generated/prisma/models/Account.ts | 4 +- src/generated/prisma/models/Consumer.ts | 221 +++++++++++- src/generated/prisma/models/License.ts | 341 +++++++++--------- src/generated/prisma/models/Partner.ts | 15 +- src/generated/prisma/models/Pos.ts | 158 -------- src/main.ts | 11 +- .../admin/consumers/consumers.controller.ts | 7 +- .../admin/consumers/consumers.module.ts | 8 +- .../admin/consumers/consumers.service.ts | 140 +++++-- .../admin/consumers/dto/consumer.dto.ts | 15 +- .../consumers/licenses/dto/license.dto.ts | 37 ++ .../consumers/licenses/licenses.controller.ts | 25 ++ .../consumers/licenses/licenses.module.ts | 12 + .../consumers/licenses/licenses.service.ts | 51 +++ .../admin/guilds/goods/goods.controller.ts | 4 +- .../admin/guilds/goods/goods.service.ts | 2 +- .../admin/licenses/licenses.controller.ts | 9 +- .../admin/licenses/licenses.service.ts | 27 +- src/modules/consumer/consumer.controller.ts | 13 +- src/modules/consumer/consumer.guard.ts | 14 - src/modules/consumer/consumer.middleware.ts | 48 ++- src/modules/consumer/consumer.module.ts | 8 +- src/modules/consumer/consumer.service.ts | 40 ++ 42 files changed, 1233 insertions(+), 522 deletions(-) create mode 100644 prisma/migrations/20260405112120_init/migration.sql create mode 100644 prisma/migrations/20260405114919_init/migration.sql create mode 100644 prisma/migrations/20260405130635_init/migration.sql create mode 100644 src/common/decorators/consumerInfo.decorator.ts create mode 100644 src/common/guards/auth-consumer.guard.ts rename src/common/guards/{pos.gaurd.ts => auth-pos.guard.ts} (58%) create mode 100644 src/common/models/consumerPayload.model.ts create mode 100644 src/common/models/index.ts create mode 100644 src/modules/admin/consumers/licenses/dto/license.dto.ts create mode 100644 src/modules/admin/consumers/licenses/licenses.controller.ts create mode 100644 src/modules/admin/consumers/licenses/licenses.module.ts create mode 100644 src/modules/admin/consumers/licenses/licenses.service.ts delete mode 100644 src/modules/consumer/consumer.guard.ts create mode 100644 src/modules/consumer/consumer.service.ts diff --git a/prisma/migrations/20260405112120_init/migration.sql b/prisma/migrations/20260405112120_init/migration.sql new file mode 100644 index 0000000..03e0397 --- /dev/null +++ b/prisma/migrations/20260405112120_init/migration.sql @@ -0,0 +1,2 @@ +-- DropIndex +DROP INDEX `accounts_password_key` ON `accounts`; diff --git a/prisma/migrations/20260405114919_init/migration.sql b/prisma/migrations/20260405114919_init/migration.sql new file mode 100644 index 0000000..e7a9768 --- /dev/null +++ b/prisma/migrations/20260405114919_init/migration.sql @@ -0,0 +1,17 @@ +-- DropForeignKey +ALTER TABLE `licenses` DROP FOREIGN KEY `licenses_partner_id_fkey`; + +-- DropIndex +DROP INDEX `licenses_partner_id_fkey` ON `licenses`; + +-- AlterTable +ALTER TABLE `consumers` ADD COLUMN `license_id` VARCHAR(191) NULL; + +-- AlterTable +ALTER TABLE `licenses` MODIFY `partner_id` VARCHAR(191) NULL; + +-- AddForeignKey +ALTER TABLE `consumers` ADD CONSTRAINT `consumers_license_id_fkey` FOREIGN KEY (`license_id`) REFERENCES `licenses`(`id`) ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE `licenses` ADD CONSTRAINT `licenses_partner_id_fkey` FOREIGN KEY (`partner_id`) REFERENCES `partners`(`id`) ON DELETE SET NULL ON UPDATE CASCADE; diff --git a/prisma/migrations/20260405130635_init/migration.sql b/prisma/migrations/20260405130635_init/migration.sql new file mode 100644 index 0000000..92b4e73 --- /dev/null +++ b/prisma/migrations/20260405130635_init/migration.sql @@ -0,0 +1,14 @@ +/* + Warnings: + + - You are about to drop the column `pos_id` on the `licenses` table. All the data in the column will be lost. + +*/ +-- DropForeignKey +ALTER TABLE `licenses` DROP FOREIGN KEY `licenses_pos_id_fkey`; + +-- DropIndex +DROP INDEX `licenses_pos_id_fkey` ON `licenses`; + +-- AlterTable +ALTER TABLE `licenses` DROP COLUMN `pos_id`; diff --git a/prisma/schema/admin/auth.prisma b/prisma/schema/admin/auth.prisma index 79046b6..edbc0f7 100644 --- a/prisma/schema/admin/auth.prisma +++ b/prisma/schema/admin/auth.prisma @@ -1,7 +1,7 @@ model Account { id String @id @default(uuid()) username String @unique() - password String @unique() + password String status AccountStatus type AccountType diff --git a/prisma/schema/admin/consumers.prisma b/prisma/schema/admin/consumers.prisma index 6a587ee..b81be8f 100644 --- a/prisma/schema/admin/consumers.prisma +++ b/prisma/schema/admin/consumers.prisma @@ -4,10 +4,12 @@ model Consumer { first_name String last_name String status ConsumerStatus @default(ACTIVE) + license_id String? created_at DateTime @default(now()) @db.Timestamp(0) updated_at DateTime @updatedAt() @db.Timestamp(0) + license License? @relation(fields: [license_id], references: [id]) accounts ConsumerAccount[] businessActivities BusinessActivity[] @@ -93,7 +95,6 @@ model Pos { provider_id String? provider Provider? @relation(fields: [provider_id], references: [id]) - licenses License[] permissionPos PermissionPos[] salesInvoices SalesInvoice[] diff --git a/prisma/schema/admin/license.prisma b/prisma/schema/admin/license.prisma index da687da..c23845d 100644 --- a/prisma/schema/admin/license.prisma +++ b/prisma/schema/admin/license.prisma @@ -7,11 +7,12 @@ model License { created_at DateTime @default(now()) @db.Timestamp(0) updated_at DateTime @updatedAt() @db.Timestamp(0) - pos_id String - partner_id String + partner_id String? - pos Pos @relation(fields: [pos_id], references: [id]) - partner Partner @relation(fields: [partner_id], references: [id]) + // pos Pos @relation(fields: [pos_id], references: [id]) + partner Partner? @relation(fields: [partner_id], references: [id]) + + consumers Consumer[] @@map("licenses") } diff --git a/prisma/schema/schema.prisma b/prisma/schema/schema.prisma index e5b0faa..9170a52 100644 --- a/prisma/schema/schema.prisma +++ b/prisma/schema/schema.prisma @@ -1,7 +1,18 @@ +// generator client { +// provider = "prisma-client-js" +// // output = "../../src/generated/prisma" +// // moduleFormat = "cjs" +// previewFeatures = ["views"] +// } + +// datasource db { +// provider = "mysql" +// } + generator client { - provider = "prisma-client-js" - // output = "../../src/generated/prisma" - // moduleFormat = "cjs" + provider = "prisma-client" + output = "../../src/generated/prisma" + moduleFormat = "cjs" previewFeatures = ["views"] } diff --git a/prisma/seed.ts b/prisma/seed.ts index eb261f7..921a3c8 100644 --- a/prisma/seed.ts +++ b/prisma/seed.ts @@ -1,4 +1,6 @@ import { PasswordUtil } from '@/common/utils/password.util' +import { GoodPricingModel, POSType, UnitType } from '@/generated/prisma/enums' +import { GoodCreateInput, GoodCreateManyInput } from '@/generated/prisma/models' import { prisma } from '../src/lib/prisma' async function main() { @@ -28,8 +30,9 @@ async function main() { }, }) - const guildsCount = prisma.guild.count() - if (!guildsCount) { + // ****************** GUILD Start ****************** // + const guilds = await prisma.guild.findMany() + if (!guilds.length) { const guilds = await prisma.guild.createMany({ data: [ { @@ -42,9 +45,17 @@ async function main() { }, ], }) + } - const goldGuildId = guilds[0].id - + // ****************** GUILD Good Categories Start ****************** // + const goldGuildId = guilds[0].id + const goldGuildGoodCategories = await prisma.goodCategory.findMany({ + where: { + guild_id: goldGuildId, + is_default_guild_good: true, + }, + }) + if (!goldGuildGoodCategories) { const categoryFactory = (name: string) => ({ name, guild_id: goldGuildId, @@ -62,6 +73,267 @@ async function main() { ], }) } + + // ****************** GUILD Good Start ****************** // + const goodFactory = ( + name: string, + categoryId: string, + pricingModel: GoodPricingModel, + unitType: UnitType, + ): GoodCreateManyInput => ({ + name, + category_id: categoryId, + pricing_model: pricingModel, + sku: '', + unit_type: unitType, + is_default_guild_good: true, + }) + + const zivarCategory = await prisma.goodCategory.findFirst({ + where: { + name: 'زیورآلات', + }, + }) + if (zivarCategory) { + const zivarGoods = await prisma.good.count({ + where: { + category_id: zivarCategory?.id, + }, + }) + if (!zivarGoods) { + const goodItems: GoodCreateManyInput[] = [] + + goodItems.push( + ...[ + goodFactory( + 'آویز گردنبند طلا', + zivarCategory.id, + GoodPricingModel.GOLD, + UnitType.GRAM, + ), + goodFactory('النگو', zivarCategory.id, GoodPricingModel.GOLD, UnitType.GRAM), + goodFactory('انگشتر', zivarCategory.id, GoodPricingModel.GOLD, UnitType.GRAM), + goodFactory('دست‌بند', zivarCategory.id, GoodPricingModel.GOLD, UnitType.GRAM), + goodFactory('زنجیر', zivarCategory.id, GoodPricingModel.GOLD, UnitType.GRAM), + goodFactory('سرویس', zivarCategory.id, GoodPricingModel.GOLD, UnitType.GRAM), + goodFactory('گوشواره', zivarCategory.id, GoodPricingModel.GOLD, UnitType.GRAM), + ], + ) + + await prisma.good.createMany({ data: goodItems }) + } + } + + const goldCategory = await prisma.goodCategory.findFirst({ + where: { + name: 'طلا', + }, + }) + if (goldCategory) { + const goldGoods = await prisma.good.count({ + where: { + category_id: goldCategory?.id, + }, + }) + if (!goldGoods) { + const goodItems: GoodCreateInput[] = [] + goodItems.push( + ...[ + goodFactory( + 'طلای آب شده', + goldCategory.id, + GoodPricingModel.GOLD, + UnitType.GRAM, + ), + goodFactory( + 'طلای شکسته', + goldCategory.id, + GoodPricingModel.GOLD, + UnitType.GRAM, + ), + goodFactory( + 'طلای مستعمل', + goldCategory.id, + GoodPricingModel.GOLD, + UnitType.GRAM, + ), + ], + ) + await prisma.good.createMany({ data: goodItems }) + } + } + + const coinCategory = await prisma.goodCategory.findFirst({ + where: { + name: 'سکه', + }, + }) + if (coinCategory) { + const coinGoods = await prisma.good.count({ + where: { + category_id: coinCategory?.id, + }, + }) + if (!coinGoods) { + const goodItems: GoodCreateInput[] = [] + goodItems.push( + ...[ + goodFactory( + 'مسکوکات خارجی', + coinCategory.id, + GoodPricingModel.STANDARD, + UnitType.COUNT, + ), + goodFactory( + 'مسکوکات داخلی (پارسیان)', + coinCategory.id, + GoodPricingModel.STANDARD, + UnitType.COUNT, + ), + goodFactory( + 'تمام بهار آزادی (طرح جدید)', + coinCategory.id, + GoodPricingModel.STANDARD, + UnitType.COUNT, + ), + goodFactory( + 'تمام بهار آزادی (طرح قدیم)', + coinCategory.id, + GoodPricingModel.STANDARD, + UnitType.COUNT, + ), + ], + ) + await prisma.good.createMany({ data: goodItems }) + } + } + + const shemshCategory = await prisma.goodCategory.findFirst({ + where: { + name: 'شمش', + }, + }) + + if (shemshCategory) { + const shemshGoods = await prisma.good.count({ + where: { + category_id: shemshCategory?.id, + }, + }) + if (!shemshGoods) { + await prisma.good.create({ + data: goodFactory( + 'شمش استاندارد', + shemshCategory.id, + GoodPricingModel.GOLD, + UnitType.GRAM, + ), + }) + } + } + + // ****************** BA Start ****************** // + const ba = await prisma.businessActivity.count() + + if (!ba) { + await prisma.businessActivity.create({ + data: { + name: 'طلا فروشی', + user: { + create: { + first_name: 'محمد', + last_name: 'زرگر', + mobile_number: '09120258155', + accounts: { + create: { + role: 'OWNER', + account: { + create: { + username: 'zargar', + password: await PasswordUtil.hash('123456'), + status: 'ACTIVE', + type: 'CONSUMER', + }, + }, + }, + }, + }, + }, + guild: { + connect: { + id: guilds[0].id, + }, + }, + complexes: { + create: { + name: 'فروشگاه طلای مرکزی', + address: 'تهران، خیابان جمهوری', + tax_id: '12312452345765', + pos_list: { + create: { + name: 'لاین ۱', + pos_type: POSType.WEB, + serial: '12312312', + status: 'ACTIVE', + }, + }, + }, + }, + }, + }) + } + // ****************** BA Start ****************** // + + // ****************** partner Start ****************** // + const partner = await prisma.partner.count() + if (!partner) { + await prisma.partner.create({ + data: { + name: 'تیس', + code: 'TIS', + license_quota: 5, + status: 'ACTIVE', + accounts: { + create: { + role: 'OWNER', + account: { + create: { + username: 'tis', + password: await PasswordUtil.hash('123456'), + status: 'ACTIVE', + type: 'PARTNER', + }, + }, + }, + }, + }, + }) + } + + // ****************** provider Start ****************** // + const provider = await prisma.provider.count() + if (!provider) { + await prisma.provider.create({ + data: { + name: 'توسن', + code: 'Tosan', + status: 'ACTIVE', + accounts: { + create: { + role: 'OWNER', + account: { + create: { + username: 'tosan', + password: await PasswordUtil.hash('123456'), + status: 'ACTIVE', + type: 'PROVIDER', + }, + }, + }, + }, + }, + }) + } } main() diff --git a/req.d.ts b/req.d.ts index 5493a7b..e5deca3 100644 --- a/req.d.ts +++ b/req.d.ts @@ -1,15 +1,16 @@ -import { IPosPayload } from '@/common/models/posPayload.model' -import { AccessTokenPayload } from '@/common/models/tokenPayload.model' +import { AccessTokenPayload, IConsumerPayload, IPosPayload } from '@/common/models' declare global { interface Request { - decodedToken: AccessTokenPayload - posData: IPosPayload + decodedToken?: AccessTokenPayload + consumerData?: IConsumerPayload + posData?: IPosPayload } namespace Express { interface Request { - decodedToken: AccessTokenPayload - posData: IPosPayload + decodedToken?: AccessTokenPayload + consumerData?: IConsumerPayload + posData?: IPosPayload } } } diff --git a/src/common/decorators/consumerInfo.decorator.ts b/src/common/decorators/consumerInfo.decorator.ts new file mode 100644 index 0000000..09ef882 --- /dev/null +++ b/src/common/decorators/consumerInfo.decorator.ts @@ -0,0 +1,33 @@ +import { + BadRequestException, + createParamDecorator, + ExecutionContext, + ForbiddenException, +} from '@nestjs/common' +import { Request } from 'express' +import { IConsumerPayload } from '../models' + +export const ConsumerInfoInfo = createParamDecorator( + (data: keyof IConsumerPayload | undefined, ctx: ExecutionContext) => { + try { + const request = ctx.switchToHttp().getRequest() + const info = request.consumerData + + if (!info) { + throw new ForbiddenException('شما به این بخش دسترسی ندارید') + } + + if (data) { + return info[data] + } + + return info + } catch (err) { + if (err) { + throw err + } + + throw new BadRequestException('مشکلی در ساختار درخواست شما وجود دارد.') + } + }, +) diff --git a/src/common/decorators/tokenInfo.decorator.ts b/src/common/decorators/tokenInfo.decorator.ts index 08f776a..1156f55 100644 --- a/src/common/decorators/tokenInfo.decorator.ts +++ b/src/common/decorators/tokenInfo.decorator.ts @@ -14,7 +14,7 @@ export const TokenAccount = createParamDecorator( const account = request.decodedToken // ✅ if middleware didn't populate req.account, return undefined or throw - if (!account.user?.id) { + if (!account || !account.user?.id) { throw new UnauthorizedException('شما به این بخش دسترسی ندارید') } diff --git a/src/common/guards/auth-consumer.guard.ts b/src/common/guards/auth-consumer.guard.ts new file mode 100644 index 0000000..3921a33 --- /dev/null +++ b/src/common/guards/auth-consumer.guard.ts @@ -0,0 +1,52 @@ +// src/common/guards/permissions.guard.ts +import { ITokenPayload } from '@/modules/auth/auth.utils' +import { PrismaService } from '@/prisma/prisma.service' +import { ExecutionContext, ForbiddenException, Injectable } from '@nestjs/common' +import { Request as ExpressRequest } from 'express' + +@Injectable() +export class ConsumerGuard { + constructor(private prisma: PrismaService) {} + + async canActivate( + tokenPayload: ITokenPayload, + context: ExecutionContext, + ): Promise { + if (!tokenPayload || tokenPayload.type !== 'CONSUMER') + throw new ForbiddenException('شما دسترسی لازم را ندارید.') + + const consumer = await this.prisma.consumer.findFirst({ + where: { + accounts: { + some: { + id: tokenPayload.account_id, + }, + }, + }, + select: { + license: { + select: { + expires_at: true, + }, + }, + }, + }) + if (!consumer) { + throw new ForbiddenException('شما دسترسی لازم را ندارید.') + } + + const req = context.switchToHttp().getRequest() + + if (req.method !== 'GET') { + if (!consumer.license?.expires_at) { + throw new ForbiddenException('برای کاربر شما لایسنس ایجاد نشده است.') + } + if ( + new Date().toUTCString() > new Date(consumer.license?.expires_at).toUTCString() + ) { + throw new ForbiddenException('لایسنس شما منقضی شده است.') + } + } + return true + } +} diff --git a/src/common/guards/pos.gaurd.ts b/src/common/guards/auth-pos.guard.ts similarity index 58% rename from src/common/guards/pos.gaurd.ts rename to src/common/guards/auth-pos.guard.ts index 20735f2..7bb6d0a 100644 --- a/src/common/guards/pos.gaurd.ts +++ b/src/common/guards/auth-pos.guard.ts @@ -1,54 +1,26 @@ // src/common/guards/permissions.guard.ts +import { ITokenPayload } from '@/modules/auth/auth.utils' import { PrismaService } from '@/prisma/prisma.service' -import { - CanActivate, - ExecutionContext, - ForbiddenException, - Injectable, -} from '@nestjs/common' -import { Reflector } from '@nestjs/core' -import { JwtService } from '@nestjs/jwt' +import { ExecutionContext, ForbiddenException, Injectable } from '@nestjs/common' import { Request as ExpressRequest } from 'express' -import { IS_PUBLIC_KEY } from '../decorators/public.decorator' -import { checkAndDecodeJwtToken } from '../utils/jwt-user.util' @Injectable() -export class PosGuard implements CanActivate { - constructor( - private jwt: JwtService, - private reflector: Reflector, - private prisma: PrismaService, - ) {} - - async canActivate(context: ExecutionContext): Promise { - const isPublic = this.reflector.getAllAndOverride(IS_PUBLIC_KEY, [ - context.getHandler(), - context.getClass(), - ]) - if (isPublic) return true - - // const requiredPermissions = this.reflector.get( - // 'permissions', - // context.getHandler(), - // ) - // if (!requiredPermissions || requiredPermissions.length === 0) return true +export class PosGuard { + constructor(private prisma: PrismaService) {} + async canActivate( + tokenPayload: ITokenPayload, + context: ExecutionContext, + ): Promise { const req = context.switchToHttp().getRequest() - const account = checkAndDecodeJwtToken(req, this.jwt) - // const account = req.decodedToken - - if (!req.url.startsWith('/api/v1/pos/')) { - return true - } - - if (!account || account.type !== 'CONSUMER') + if (!tokenPayload || tokenPayload.type !== 'CONSUMER') throw new ForbiddenException('شما دسترسی لازم را ندارید.') const cookie = req.cookies - const { posId, accessToken } = cookie + const { posId } = cookie - if (!posId || !accessToken) { + if (!posId) { return false } @@ -60,7 +32,7 @@ export class PosGuard implements CanActivate { user: { accounts: { some: { - id: account.account_id, + id: tokenPayload.account_id, }, }, }, @@ -83,7 +55,7 @@ export class PosGuard implements CanActivate { const foundedAccount = await this.prisma.consumerAccount.findUnique({ where: { - id: account.account_id, + id: tokenPayload.account_id, }, select: { role: true, @@ -96,7 +68,7 @@ export class PosGuard implements CanActivate { const accountPermissions = await this.prisma.permissionConsumer.findUnique({ where: { - account_id: account.account_id, + account_id: tokenPayload.account_id, }, select: { posPermissions: true, diff --git a/src/common/guards/jwt-auth.guard.ts b/src/common/guards/jwt-auth.guard.ts index b9f4342..205ef86 100644 --- a/src/common/guards/jwt-auth.guard.ts +++ b/src/common/guards/jwt-auth.guard.ts @@ -1,6 +1,8 @@ +import { ITokenPayload } from '@/modules/auth/auth.utils' import { CanActivate, ExecutionContext, + ForbiddenException, Injectable, UnauthorizedException, } from '@nestjs/common' @@ -8,12 +10,16 @@ import { Reflector } from '@nestjs/core' import { JwtService } from '@nestjs/jwt' import { Request as ExpressRequest } from 'express' import { IS_PUBLIC_KEY } from '../decorators/public.decorator' +import { ConsumerGuard } from './auth-consumer.guard' +import { PosGuard } from './auth-pos.guard' @Injectable() export class JwtAuthGuard implements CanActivate { constructor( private jwt: JwtService, private reflector: Reflector, + private consumerGuard: ConsumerGuard, + private posGuard: PosGuard, ) {} async canActivate(context: ExecutionContext): Promise { @@ -42,15 +48,19 @@ export class JwtAuthGuard implements CanActivate { secret: process.env.JWT_SECRET, }) - // if (payload.type !== 'POS') - // throw new UnauthorizedException('Invalid or expired token') - - // Set the typed dataPayload to the request - // req.dataPayload = payload + const tokenPayload = this.jwt.decode(token) as ITokenPayload + if (req.url.startsWith('/api/v1/consumer')) { + await this.consumerGuard.canActivate(tokenPayload, context) + } else if (req.url.startsWith('/api/v1/pos')) { + await this.consumerGuard.canActivate(tokenPayload, context) + await this.posGuard.canActivate(tokenPayload, context) + } else if (tokenPayload.type != 'ADMIN') { + throw new ForbiddenException('شما دسترسی لازم را ندارید') + } return true } catch (err) { - console.log(err) + if (err) throw err throw new UnauthorizedException('Invalid or expired token') } } diff --git a/src/common/models/consumerPayload.model.ts b/src/common/models/consumerPayload.model.ts new file mode 100644 index 0000000..69f4f8e --- /dev/null +++ b/src/common/models/consumerPayload.model.ts @@ -0,0 +1,4 @@ +export interface IConsumerPayload { + user_id: string + account_id: string +} diff --git a/src/common/models/index.ts b/src/common/models/index.ts new file mode 100644 index 0000000..29d8392 --- /dev/null +++ b/src/common/models/index.ts @@ -0,0 +1,3 @@ +export * from './consumerPayload.model' +export * from './posPayload.model' +export * from './tokenPayload.model' diff --git a/src/generated/prisma/internal/class.ts b/src/generated/prisma/internal/class.ts index 4357f3a..80048ce 100644 --- a/src/generated/prisma/internal/class.ts +++ b/src/generated/prisma/internal/class.ts @@ -22,7 +22,7 @@ const config: runtime.GetPrismaClientConfig = { "clientVersion": "7.2.0", "engineVersion": "0c8ef2ce45c83248ab3df073180d5eda9e8be7a3", "activeProvider": "mysql", - "inlineSchema": "model Admin {\n id String @id @default(uuid())\n mobile_number String @unique()\n national_code String? @unique()\n first_name String\n last_name String\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt() @db.Timestamp(0)\n\n accounts AdminAccount[]\n\n @@map(\"admins\")\n}\n\nmodel AdminAccount {\n id String @id @default(uuid())\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt() @db.Timestamp(0)\n\n user_id String\n user Admin @relation(fields: [user_id], references: [id])\n\n account_id String @unique\n account Account @relation(fields: [account_id], references: [id])\n\n @@map(\"admin_accounts\")\n}\n\n// model LegalProfile {\n// user_id String @id\n// company_name String\n// register_no String @unique()\n// representative_name String?\n// representative_national_id String?\n\n// // user User @relation(fields: [user_id], references: [id])\n\n// @@map(\"legal_profiles\")\n// }\n\n// model IndividualProfile {\n// user_id String @id\n// national_code String @unique()\n// first_name String\n// last_name String\n// birth_date DateTime?\n// mobile_number String\n// // user User @relation(fields: [user_id], references: [id])\n\n// @@map(\"individual_profiles\")\n// }\n\nmodel Account {\n id String @id @default(uuid())\n username String @unique()\n password String @unique()\n status AccountStatus\n type AccountType\n\n admin_account AdminAccount?\n provider_account ProviderAccount?\n partner_account PartnerAccount?\n consumer_account ConsumerAccount?\n\n // tokens Token[]\n // refresh_tokens RefreshToken[]\n\n @@map(\"accounts\")\n}\n\n// model Token {\n// id String @id @d @uniqueefault(uuid())\n// token String @unique\n// type TokenType\n// created_at DateTime @default(now())\n// expires_at DateTime\n\n// account_id String\n// account Account @relation(fields: [account_id], references: [id])\n\n// @@unique([type, account_id])\n// @@map(\"tokens\")\n// }\n\n// model VerificationCode {\n// id String @id @default(uuid())\n// code String\n// is_used Boolean @default(false)\n// created_at DateTime @default(now())\n// expires_at DateTime\n\n// account_id String\n// account Account @relation(fields: [account_id], references: [id])\n\n// @@map(\"verification_codes\")\n// }\n\nmodel Consumer {\n id String @id @default(uuid())\n mobile_number String @unique()\n first_name String\n last_name String\n status ConsumerStatus @default(ACTIVE)\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt() @db.Timestamp(0)\n\n accounts ConsumerAccount[]\n businessActivities BusinessActivity[]\n\n @@map(\"consumers\")\n}\n\nmodel ConsumerAccount {\n id String @id @default(uuid())\n role ConsumerRole\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt() @db.Timestamp(0)\n\n user_id String\n user Consumer @relation(fields: [user_id], references: [id])\n\n account_id String @unique\n account Account @relation(fields: [account_id], references: [id])\n\n permissions PermissionConsumer[]\n salesInvoices SalesInvoice[]\n\n @@map(\"consumer_accounts\")\n}\n\nmodel BusinessActivity {\n id String @id @default(uuid())\n name String\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt() @db.Timestamp(0)\n\n guild_id String\n user_id String\n\n guild Guild @relation(fields: [guild_id], references: [id])\n user Consumer @relation(fields: [user_id], references: [id])\n\n complexes Complex[]\n permissionBusinesses PermissionBusiness[]\n\n @@map(\"business_activities\")\n}\n\nmodel Complex {\n id String @id @default(uuid())\n name String\n address String?\n tax_id String?\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt() @db.Timestamp(0)\n\n business_activity_id String\n\n business_activity BusinessActivity @relation(fields: [business_activity_id], references: [id])\n\n pos_list Pos[]\n goods Good[]\n good_categories GoodCategory[]\n permissionComplexes PermissionComplex[]\n customerIndividuals CustomerIndividual[]\n customerLegals CustomerLegal[]\n\n @@map(\"complexes\")\n}\n\nmodel Pos {\n id String @id @default(uuid())\n name String\n serial String @unique\n model String?\n status POSStatus @default(ACTIVE)\n pos_type POSType\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt() @db.Timestamp(0)\n\n complex_id String\n complex Complex @relation(fields: [complex_id], references: [id])\n\n device_id String?\n device Device? @relation(fields: [device_id], references: [id])\n\n provider_id String?\n provider Provider? @relation(fields: [provider_id], references: [id])\n\n licenses License[]\n permissionPos PermissionPos[]\n salesInvoices SalesInvoice[]\n\n @@map(\"poses\")\n}\n\n// model BusinessAccount {\n// id String @id @default(uuid())\n// role BusinessRole\n// status AccountStatus @default(ACTIVE)\n// created_at DateTime @default(now())\n// business_activity_id String\n// account_id String @unique\n\n// account Account @relation(fields: [account_id], references: [id])\n// owned_activities BusinessActivity[] @relation(\"business_owner\")\n\n// @@unique([business_activity_id, account_id])\n// @@map(\"business_accounts\")\n// }\n\n// model PosAccount {\n// id String @id @default(uuid())\n// pos_id String\n// account_id String\n// role POSRole\n// created_at DateTime @default(now())\n\n// pos Pos @relation(fields: [pos_id], references: [id])\n// account Account @relation(fields: [account_id], references: [id])\n\n// @@unique([pos_id, account_id])\n// @@map(\"pos_accounts\")\n// }\n\nmodel DeviceBrand {\n id String @id @default(uuid())\n name String\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt() @db.Timestamp(0)\n\n devices Device[]\n\n @@map(\"device_brands\")\n}\n\nmodel Device {\n id String @id @default(uuid())\n name String\n os_version String?\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt() @db.Timestamp(0)\n\n brand_id String\n\n brand DeviceBrand @relation(fields: [brand_id], references: [id])\n poses Pos[]\n\n @@map(\"devices\")\n}\n\nmodel License {\n id String @id @default(uuid())\n starts_at DateTime\n expires_at DateTime\n status LicenseStatus\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt() @db.Timestamp(0)\n\n pos_id String\n partner_id String\n\n pos Pos @relation(fields: [pos_id], references: [id])\n partner Partner @relation(fields: [partner_id], references: [id])\n\n @@map(\"licenses\")\n}\n\nmodel Partner {\n id String @id @default(uuid())\n name String\n code String @unique()\n license_quota Int? @default(0)\n status PartnerStatus @default(ACTIVE)\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @default(now()) @updatedAt @db.Timestamp(0)\n\n licenses License[]\n accounts PartnerAccount[]\n\n @@map(\"partners\")\n}\n\nmodel PartnerAccount {\n id String @id @default(uuid())\n role PartnerRole\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @default(now()) @updatedAt @db.Timestamp(0)\n\n user_id String\n user Partner @relation(fields: [user_id], references: [id])\n\n account_id String @unique\n account Account @relation(fields: [account_id], references: [id])\n\n @@map(\"partner_accounts\")\n}\n\nmodel PermissionConsumer {\n id String @id @default(uuid())\n\n account_id String @unique\n\n account ConsumerAccount @relation(fields: [account_id], references: [id])\n\n posPermissions PermissionPos[]\n complexPermissions PermissionComplex[]\n businessPermissions PermissionBusiness[]\n\n @@map(\"permission_consumers\")\n}\n\nmodel PermissionPos {\n id String @id @default(uuid())\n role POSRole\n\n pos_id String\n permission_id String\n\n pos Pos @relation(fields: [pos_id], references: [id])\n permission PermissionConsumer @relation(fields: [permission_id], references: [id])\n\n @@unique([permission_id, pos_id])\n @@map(\"permission_poses\")\n}\n\nmodel PermissionComplex {\n id String @id @default(uuid())\n role ComplexRole\n\n complex_id String\n permission_id String\n\n complex Complex @relation(fields: [complex_id], references: [id])\n permission PermissionConsumer @relation(fields: [permission_id], references: [id])\n\n @@unique([permission_id, complex_id])\n @@map(\"permission_complexes\")\n}\n\nmodel PermissionBusiness {\n id String @id @default(uuid())\n role BusinessRole\n\n business_id String\n permission_id String\n\n business BusinessActivity @relation(fields: [business_id], references: [id])\n permission PermissionConsumer @relation(fields: [permission_id], references: [id])\n\n @@unique([permission_id, business_id])\n @@map(\"permission_business_activities\")\n}\n\nmodel Provider {\n id String @id @default(uuid())\n code String @unique()\n status PartnerStatus @default(ACTIVE)\n name String\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt @db.Timestamp(0)\n\n pos_list Pos[]\n accounts ProviderAccount[]\n\n @@map(\"providers\")\n}\n\nmodel ProviderAccount {\n id String @id @default(uuid())\n role ProviderRole\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt() @db.Timestamp(0)\n\n user_id String\n user Provider @relation(fields: [user_id], references: [id])\n\n account_id String @unique\n account Account @relation(fields: [account_id], references: [id])\n\n @@map(\"provider_accounts\")\n}\n\nmodel TriggerLog {\n id Int @id @default(autoincrement())\n message String @db.Text\n createdAt DateTime @default(now()) @db.Timestamp(0)\n name String @db.Text\n\n @@map(\"trigger_logs\")\n}\n\nmodel UserDevices {\n account_id String? @db.VarChar(255)\n app_version String @db.VarChar(20)\n build_number String @db.VarChar(20)\n\n uuid String @id @unique() @db.VarChar(255)\n platform String @db.VarChar(100)\n brand String @db.VarChar(100)\n model String @db.VarChar(100)\n device String @db.VarChar(100)\n os_version String @db.VarChar(20)\n sdk_version String @db.VarChar(20)\n release_number String @db.VarChar(20)\n browser_name String? @db.VarChar(100)\n fcm_token String? @db.VarChar(100)\n\n @@map(\"user_devices\")\n}\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"../../src/generated/prisma\"\n moduleFormat = \"cjs\"\n previewFeatures = [\"views\"]\n}\n\ndatasource db {\n provider = \"mysql\"\n}\n\nmodel Customer {\n id String @id @default(uuid())\n type CustomerType\n is_favorite Boolean? @default(false)\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt @db.Timestamp(0)\n deleted_at DateTime? @db.Timestamp(0)\n\n sales_invoices SalesInvoice[]\n customer_individuals CustomerIndividual?\n customer_legals CustomerLegal?\n\n @@map(\"customers\")\n}\n\nmodel CustomerIndividual {\n customer_id String @id\n first_name String @db.VarChar(255)\n last_name String @db.VarChar(255)\n national_id String @db.Char(10)\n postal_code String @db.Char(10)\n economic_code String? @db.Char(10)\n complex_id String\n\n customer Customer @relation(fields: [customer_id], references: [id])\n complex Complex @relation(fields: [complex_id], references: [id])\n\n @@unique([complex_id, national_id])\n @@map(\"customer_individuals\")\n}\n\nmodel CustomerLegal {\n customer_id String @id\n company_name String @db.VarChar(255)\n economic_code String @db.Char(10)\n registration_number String @db.Char(20)\n postal_code String @db.Char(10)\n complex_id String\n\n customer Customer @relation(fields: [customer_id], references: [id])\n complex Complex @relation(fields: [complex_id], references: [id])\n\n @@unique([complex_id, registration_number])\n @@map(\"customer_legal\")\n}\n\nenum PaymentMethodType {\n TERMINAL\n CASH\n SET_OFF\n CARD\n BANK\n CHECK\n OTHER\n}\n\nenum UnitType {\n COUNT\n GRAM\n KILOGRAM\n MILLILITER\n LITER\n METER\n HOUR\n}\n\nenum GoodPricingModel {\n STANDARD\n GOLD\n}\n\nenum CustomerType {\n INDIVIDUAL\n LEGAL\n UNKNOWN\n}\n\nenum POSStatus {\n ACTIVE\n DISABLED\n}\n\nenum POSRole {\n MANAGER\n OPERATOR\n}\n\nenum ComplexRole {\n MANAGER\n OPERATOR\n}\n\nenum BusinessRole {\n MANAGER\n OPERATOR\n}\n\nenum LicenseType {\n BASIC\n PRO\n ENTERPRISE\n}\n\nenum LicenseStatus {\n ACTIVE\n EXPIRED\n SUSPENDED\n}\n\nenum POSType {\n PSP\n MOBILE\n WEB\n API\n}\n\nenum UserType {\n LEGAL\n INDIVIDUAL\n}\n\nenum AccountType {\n ADMIN\n PROVIDER\n PARTNER\n CONSUMER\n}\n\nenum UserStatus {\n ACTIVE\n INACTIVE\n}\n\nenum AccountRole {\n OWNER\n OPERATOR\n ACCOUNTANT\n}\n\nenum AccountStatus {\n ACTIVE\n SUSPENDED\n}\n\nenum PartnerRole {\n OWNER\n MANAGER\n OPERATOR\n}\n\nenum PartnerStatus {\n ACTIVE\n SUSPENDED\n}\n\nenum ProviderRole {\n OWNER\n MANAGER\n OPERATOR\n}\n\nenum ProviderStatus {\n ACTIVE\n SUSPENDED\n}\n\nenum ConsumerRole {\n OWNER\n MANAGER\n OPERATOR\n}\n\nenum ConsumerStatus {\n ACTIVE\n SUSPENDED\n}\n\nenum TokenType {\n ACCESS\n REFRESH\n}\n\nmodel Good {\n id String @id @default(uuid())\n name String @db.VarChar(255)\n is_default_guild_good Boolean @default(false)\n sku String @db.VarChar(100)\n unit_type UnitType\n pricing_model GoodPricingModel\n description String? @db.Text\n local_sku String? @unique() @db.VarChar(100)\n barcode String? @unique() @db.VarChar(100)\n base_sale_price Decimal? @default(0.00) @db.Decimal(15, 0)\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt @db.Timestamp(0)\n deleted_at DateTime? @db.Timestamp(0)\n\n complex_id String?\n category_id String?\n\n category GoodCategory? @relation(fields: [category_id], references: [id])\n complex Complex? @relation(fields: [complex_id], references: [id])\n sales_invoice_items SalesInvoiceItem[]\n\n @@index([category_id])\n @@map(\"goods\")\n}\n\nmodel GoodCategory {\n id String @id @default(uuid())\n name String @db.VarChar(100)\n description String? @db.Text\n image_url String? @db.VarChar(255)\n complex_id String?\n is_default_guild_good Boolean @default(false)\n guild_id String?\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt @db.Timestamp(0)\n deleted_at DateTime? @db.Timestamp(0)\n\n goods Good[]\n guild Guild? @relation(fields: [guild_id], references: [id])\n complex Complex? @relation(fields: [complex_id], references: [id])\n\n @@map(\"good_categories\")\n}\n\nmodel Guild {\n id String @id @default(uuid())\n name String\n code String?\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt() @db.Timestamp(0)\n\n business_activities BusinessActivity[]\n good_categories GoodCategory[]\n\n @@map(\"guilds\")\n}\n\nmodel SalesInvoice {\n id String @id @default(uuid())\n code String @unique @db.VarChar(100)\n total_amount Decimal @db.Decimal(15, 2)\n notes String? @db.Text\n unknown_customer Json? @db.Json\n invoice_date DateTime? @default(now()) @db.Timestamp(0)\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt @db.Timestamp(0)\n\n customer_id String?\n account_id String\n pos_id String\n\n customer Customer? @relation(fields: [customer_id], references: [id])\n pos Pos @relation(fields: [pos_id], references: [id])\n account ConsumerAccount @relation(fields: [account_id], references: [id])\n items SalesInvoiceItem[]\n payments SalesInvoicePayment[]\n\n @@map(\"sales_invoices\")\n}\n\nmodel SalesInvoiceItem {\n id String @id @default(uuid())\n quantity Decimal @db.Decimal(10, 0)\n unit_type UnitType\n unit_price Decimal @default(0.00) @db.Decimal(15, 2)\n total_amount Decimal @default(0.00) @db.Decimal(15, 2)\n created_at DateTime @default(now()) @db.Timestamp(0)\n discount Decimal @default(0.00) @db.Decimal(15, 2)\n notes String? @db.Text\n\n invoice_id String\n good_id String?\n service_id String?\n\n payload Json?\n\n invoice SalesInvoice @relation(fields: [invoice_id], references: [id])\n good Good? @relation(fields: [good_id], references: [id])\n service Service? @relation(fields: [service_id], references: [id])\n\n @@index([invoice_id, good_id])\n @@map(\"sales_invoice_items\")\n}\n\nmodel SalesInvoicePayment {\n id String @id @default(uuid())\n invoice_id String\n amount Decimal @db.Decimal(15, 2)\n payment_method PaymentMethodType\n paid_at DateTime\n created_at DateTime @default(now())\n\n invoice SalesInvoice @relation(fields: [invoice_id], references: [id])\n\n @@index([invoice_id])\n @@map(\"sales_invoice_payments\")\n}\n\nmodel Service {\n id String @id @default(uuid())\n name String @db.VarChar(255)\n description String? @db.Text\n sku String @unique() @db.VarChar(100)\n local_sku String? @unique() @db.VarChar(100)\n barcode String? @unique() @db.VarChar(100)\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt @db.Timestamp(0)\n deleted_at DateTime? @db.Timestamp(0)\n category_id String?\n base_sale_price Decimal @default(0.00) @db.Decimal(15, 0)\n account_id String\n complex_id String\n\n category ServiceCategory? @relation(fields: [category_id], references: [id])\n sales_invoice_items SalesInvoiceItem[]\n\n @@index([category_id])\n @@map(\"services\")\n}\n\nmodel ServiceCategory {\n id String @id @default(uuid())\n name String @db.VarChar(100)\n description String? @db.Text\n image_url String? @db.VarChar(255)\n account_id String\n complex_id String\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt @db.Timestamp(0)\n deleted_at DateTime? @db.Timestamp(0)\n\n services Service[]\n\n @@map(\"service_categories\")\n}\n", + "inlineSchema": "model Admin {\n id String @id @default(uuid())\n mobile_number String @unique()\n national_code String? @unique()\n first_name String\n last_name String\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt() @db.Timestamp(0)\n\n accounts AdminAccount[]\n\n @@map(\"admins\")\n}\n\nmodel AdminAccount {\n id String @id @default(uuid())\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt() @db.Timestamp(0)\n\n user_id String\n user Admin @relation(fields: [user_id], references: [id])\n\n account_id String @unique\n account Account @relation(fields: [account_id], references: [id])\n\n @@map(\"admin_accounts\")\n}\n\n// model LegalProfile {\n// user_id String @id\n// company_name String\n// register_no String @unique()\n// representative_name String?\n// representative_national_id String?\n\n// // user User @relation(fields: [user_id], references: [id])\n\n// @@map(\"legal_profiles\")\n// }\n\n// model IndividualProfile {\n// user_id String @id\n// national_code String @unique()\n// first_name String\n// last_name String\n// birth_date DateTime?\n// mobile_number String\n// // user User @relation(fields: [user_id], references: [id])\n\n// @@map(\"individual_profiles\")\n// }\n\nmodel Account {\n id String @id @default(uuid())\n username String @unique()\n password String\n status AccountStatus\n type AccountType\n\n admin_account AdminAccount?\n provider_account ProviderAccount?\n partner_account PartnerAccount?\n consumer_account ConsumerAccount?\n\n // tokens Token[]\n // refresh_tokens RefreshToken[]\n\n @@map(\"accounts\")\n}\n\n// model Token {\n// id String @id @d @uniqueefault(uuid())\n// token String @unique\n// type TokenType\n// created_at DateTime @default(now())\n// expires_at DateTime\n\n// account_id String\n// account Account @relation(fields: [account_id], references: [id])\n\n// @@unique([type, account_id])\n// @@map(\"tokens\")\n// }\n\n// model VerificationCode {\n// id String @id @default(uuid())\n// code String\n// is_used Boolean @default(false)\n// created_at DateTime @default(now())\n// expires_at DateTime\n\n// account_id String\n// account Account @relation(fields: [account_id], references: [id])\n\n// @@map(\"verification_codes\")\n// }\n\nmodel Consumer {\n id String @id @default(uuid())\n mobile_number String @unique()\n first_name String\n last_name String\n status ConsumerStatus @default(ACTIVE)\n license_id String?\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt() @db.Timestamp(0)\n\n license License? @relation(fields: [license_id], references: [id])\n accounts ConsumerAccount[]\n businessActivities BusinessActivity[]\n\n @@map(\"consumers\")\n}\n\nmodel ConsumerAccount {\n id String @id @default(uuid())\n role ConsumerRole\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt() @db.Timestamp(0)\n\n user_id String\n user Consumer @relation(fields: [user_id], references: [id])\n\n account_id String @unique\n account Account @relation(fields: [account_id], references: [id])\n\n permissions PermissionConsumer[]\n salesInvoices SalesInvoice[]\n\n @@map(\"consumer_accounts\")\n}\n\nmodel BusinessActivity {\n id String @id @default(uuid())\n name String\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt() @db.Timestamp(0)\n\n guild_id String\n user_id String\n\n guild Guild @relation(fields: [guild_id], references: [id])\n user Consumer @relation(fields: [user_id], references: [id])\n\n complexes Complex[]\n permissionBusinesses PermissionBusiness[]\n\n @@map(\"business_activities\")\n}\n\nmodel Complex {\n id String @id @default(uuid())\n name String\n address String?\n tax_id String?\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt() @db.Timestamp(0)\n\n business_activity_id String\n\n business_activity BusinessActivity @relation(fields: [business_activity_id], references: [id])\n\n pos_list Pos[]\n goods Good[]\n good_categories GoodCategory[]\n permissionComplexes PermissionComplex[]\n customerIndividuals CustomerIndividual[]\n customerLegals CustomerLegal[]\n\n @@map(\"complexes\")\n}\n\nmodel Pos {\n id String @id @default(uuid())\n name String\n serial String @unique\n model String?\n status POSStatus @default(ACTIVE)\n pos_type POSType\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt() @db.Timestamp(0)\n\n complex_id String\n complex Complex @relation(fields: [complex_id], references: [id])\n\n device_id String?\n device Device? @relation(fields: [device_id], references: [id])\n\n provider_id String?\n provider Provider? @relation(fields: [provider_id], references: [id])\n\n permissionPos PermissionPos[]\n salesInvoices SalesInvoice[]\n\n @@map(\"poses\")\n}\n\n// model BusinessAccount {\n// id String @id @default(uuid())\n// role BusinessRole\n// status AccountStatus @default(ACTIVE)\n// created_at DateTime @default(now())\n// business_activity_id String\n// account_id String @unique\n\n// account Account @relation(fields: [account_id], references: [id])\n// owned_activities BusinessActivity[] @relation(\"business_owner\")\n\n// @@unique([business_activity_id, account_id])\n// @@map(\"business_accounts\")\n// }\n\n// model PosAccount {\n// id String @id @default(uuid())\n// pos_id String\n// account_id String\n// role POSRole\n// created_at DateTime @default(now())\n\n// pos Pos @relation(fields: [pos_id], references: [id])\n// account Account @relation(fields: [account_id], references: [id])\n\n// @@unique([pos_id, account_id])\n// @@map(\"pos_accounts\")\n// }\n\nmodel DeviceBrand {\n id String @id @default(uuid())\n name String\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt() @db.Timestamp(0)\n\n devices Device[]\n\n @@map(\"device_brands\")\n}\n\nmodel Device {\n id String @id @default(uuid())\n name String\n os_version String?\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt() @db.Timestamp(0)\n\n brand_id String\n\n brand DeviceBrand @relation(fields: [brand_id], references: [id])\n poses Pos[]\n\n @@map(\"devices\")\n}\n\nmodel License {\n id String @id @default(uuid())\n starts_at DateTime\n expires_at DateTime\n status LicenseStatus\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt() @db.Timestamp(0)\n\n partner_id String?\n\n // pos Pos @relation(fields: [pos_id], references: [id])\n partner Partner? @relation(fields: [partner_id], references: [id])\n\n consumers Consumer[]\n\n @@map(\"licenses\")\n}\n\nmodel Partner {\n id String @id @default(uuid())\n name String\n code String @unique()\n license_quota Int? @default(0)\n status PartnerStatus @default(ACTIVE)\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @default(now()) @updatedAt @db.Timestamp(0)\n\n licenses License[]\n accounts PartnerAccount[]\n\n @@map(\"partners\")\n}\n\nmodel PartnerAccount {\n id String @id @default(uuid())\n role PartnerRole\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @default(now()) @updatedAt @db.Timestamp(0)\n\n user_id String\n user Partner @relation(fields: [user_id], references: [id])\n\n account_id String @unique\n account Account @relation(fields: [account_id], references: [id])\n\n @@map(\"partner_accounts\")\n}\n\nmodel PermissionConsumer {\n id String @id @default(uuid())\n\n account_id String @unique\n\n account ConsumerAccount @relation(fields: [account_id], references: [id])\n\n posPermissions PermissionPos[]\n complexPermissions PermissionComplex[]\n businessPermissions PermissionBusiness[]\n\n @@map(\"permission_consumers\")\n}\n\nmodel PermissionPos {\n id String @id @default(uuid())\n role POSRole\n\n pos_id String\n permission_id String\n\n pos Pos @relation(fields: [pos_id], references: [id])\n permission PermissionConsumer @relation(fields: [permission_id], references: [id])\n\n @@unique([permission_id, pos_id])\n @@map(\"permission_poses\")\n}\n\nmodel PermissionComplex {\n id String @id @default(uuid())\n role ComplexRole\n\n complex_id String\n permission_id String\n\n complex Complex @relation(fields: [complex_id], references: [id])\n permission PermissionConsumer @relation(fields: [permission_id], references: [id])\n\n @@unique([permission_id, complex_id])\n @@map(\"permission_complexes\")\n}\n\nmodel PermissionBusiness {\n id String @id @default(uuid())\n role BusinessRole\n\n business_id String\n permission_id String\n\n business BusinessActivity @relation(fields: [business_id], references: [id])\n permission PermissionConsumer @relation(fields: [permission_id], references: [id])\n\n @@unique([permission_id, business_id])\n @@map(\"permission_business_activities\")\n}\n\nmodel Provider {\n id String @id @default(uuid())\n code String @unique()\n status PartnerStatus @default(ACTIVE)\n name String\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt @db.Timestamp(0)\n\n pos_list Pos[]\n accounts ProviderAccount[]\n\n @@map(\"providers\")\n}\n\nmodel ProviderAccount {\n id String @id @default(uuid())\n role ProviderRole\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt() @db.Timestamp(0)\n\n user_id String\n user Provider @relation(fields: [user_id], references: [id])\n\n account_id String @unique\n account Account @relation(fields: [account_id], references: [id])\n\n @@map(\"provider_accounts\")\n}\n\nmodel TriggerLog {\n id Int @id @default(autoincrement())\n message String @db.Text\n createdAt DateTime @default(now()) @db.Timestamp(0)\n name String @db.Text\n\n @@map(\"trigger_logs\")\n}\n\nmodel UserDevices {\n account_id String? @db.VarChar(255)\n app_version String @db.VarChar(20)\n build_number String @db.VarChar(20)\n\n uuid String @id @unique() @db.VarChar(255)\n platform String @db.VarChar(100)\n brand String @db.VarChar(100)\n model String @db.VarChar(100)\n device String @db.VarChar(100)\n os_version String @db.VarChar(20)\n sdk_version String @db.VarChar(20)\n release_number String @db.VarChar(20)\n browser_name String? @db.VarChar(100)\n fcm_token String? @db.VarChar(100)\n\n @@map(\"user_devices\")\n}\n\n// generator client {\n// provider = \"prisma-client-js\"\n// // output = \"../../src/generated/prisma\"\n// // moduleFormat = \"cjs\"\n// previewFeatures = [\"views\"]\n// }\n\n// datasource db {\n// provider = \"mysql\"\n// }\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"../../src/generated/prisma\"\n moduleFormat = \"cjs\"\n previewFeatures = [\"views\"]\n}\n\ndatasource db {\n provider = \"mysql\"\n}\n\nmodel Customer {\n id String @id @default(uuid())\n type CustomerType\n is_favorite Boolean? @default(false)\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt @db.Timestamp(0)\n deleted_at DateTime? @db.Timestamp(0)\n\n sales_invoices SalesInvoice[]\n customer_individuals CustomerIndividual?\n customer_legals CustomerLegal?\n\n @@map(\"customers\")\n}\n\nmodel CustomerIndividual {\n customer_id String @id\n first_name String @db.VarChar(255)\n last_name String @db.VarChar(255)\n national_id String @db.Char(10)\n postal_code String @db.Char(10)\n economic_code String? @db.Char(10)\n complex_id String\n\n customer Customer @relation(fields: [customer_id], references: [id])\n complex Complex @relation(fields: [complex_id], references: [id])\n\n @@unique([complex_id, national_id])\n @@map(\"customer_individuals\")\n}\n\nmodel CustomerLegal {\n customer_id String @id\n company_name String @db.VarChar(255)\n economic_code String @db.Char(10)\n registration_number String @db.Char(20)\n postal_code String @db.Char(10)\n complex_id String\n\n customer Customer @relation(fields: [customer_id], references: [id])\n complex Complex @relation(fields: [complex_id], references: [id])\n\n @@unique([complex_id, registration_number])\n @@map(\"customer_legal\")\n}\n\nenum PaymentMethodType {\n TERMINAL\n CASH\n SET_OFF\n CARD\n BANK\n CHECK\n OTHER\n}\n\nenum UnitType {\n COUNT\n GRAM\n KILOGRAM\n MILLILITER\n LITER\n METER\n HOUR\n}\n\nenum GoodPricingModel {\n STANDARD\n GOLD\n}\n\nenum CustomerType {\n INDIVIDUAL\n LEGAL\n UNKNOWN\n}\n\nenum POSStatus {\n ACTIVE\n DISABLED\n}\n\nenum POSRole {\n MANAGER\n OPERATOR\n}\n\nenum ComplexRole {\n MANAGER\n OPERATOR\n}\n\nenum BusinessRole {\n MANAGER\n OPERATOR\n}\n\nenum LicenseType {\n BASIC\n PRO\n ENTERPRISE\n}\n\nenum LicenseStatus {\n ACTIVE\n EXPIRED\n SUSPENDED\n}\n\nenum POSType {\n PSP\n MOBILE\n WEB\n API\n}\n\nenum UserType {\n LEGAL\n INDIVIDUAL\n}\n\nenum AccountType {\n ADMIN\n PROVIDER\n PARTNER\n CONSUMER\n}\n\nenum UserStatus {\n ACTIVE\n INACTIVE\n}\n\nenum AccountRole {\n OWNER\n OPERATOR\n ACCOUNTANT\n}\n\nenum AccountStatus {\n ACTIVE\n SUSPENDED\n}\n\nenum PartnerRole {\n OWNER\n MANAGER\n OPERATOR\n}\n\nenum PartnerStatus {\n ACTIVE\n SUSPENDED\n}\n\nenum ProviderRole {\n OWNER\n MANAGER\n OPERATOR\n}\n\nenum ProviderStatus {\n ACTIVE\n SUSPENDED\n}\n\nenum ConsumerRole {\n OWNER\n MANAGER\n OPERATOR\n}\n\nenum ConsumerStatus {\n ACTIVE\n SUSPENDED\n}\n\nenum TokenType {\n ACCESS\n REFRESH\n}\n\nmodel Good {\n id String @id @default(uuid())\n name String @db.VarChar(255)\n is_default_guild_good Boolean @default(false)\n sku String @db.VarChar(100)\n unit_type UnitType\n pricing_model GoodPricingModel\n description String? @db.Text\n local_sku String? @unique() @db.VarChar(100)\n barcode String? @unique() @db.VarChar(100)\n base_sale_price Decimal? @default(0.00) @db.Decimal(15, 0)\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt @db.Timestamp(0)\n deleted_at DateTime? @db.Timestamp(0)\n\n complex_id String?\n category_id String?\n\n category GoodCategory? @relation(fields: [category_id], references: [id])\n complex Complex? @relation(fields: [complex_id], references: [id])\n sales_invoice_items SalesInvoiceItem[]\n\n @@index([category_id])\n @@map(\"goods\")\n}\n\nmodel GoodCategory {\n id String @id @default(uuid())\n name String @db.VarChar(100)\n description String? @db.Text\n image_url String? @db.VarChar(255)\n complex_id String?\n is_default_guild_good Boolean @default(false)\n guild_id String?\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt @db.Timestamp(0)\n deleted_at DateTime? @db.Timestamp(0)\n\n goods Good[]\n guild Guild? @relation(fields: [guild_id], references: [id])\n complex Complex? @relation(fields: [complex_id], references: [id])\n\n @@map(\"good_categories\")\n}\n\nmodel Guild {\n id String @id @default(uuid())\n name String\n code String?\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt() @db.Timestamp(0)\n\n business_activities BusinessActivity[]\n good_categories GoodCategory[]\n\n @@map(\"guilds\")\n}\n\nmodel SalesInvoice {\n id String @id @default(uuid())\n code String @unique @db.VarChar(100)\n total_amount Decimal @db.Decimal(15, 2)\n notes String? @db.Text\n unknown_customer Json? @db.Json\n invoice_date DateTime? @default(now()) @db.Timestamp(0)\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt @db.Timestamp(0)\n\n customer_id String?\n account_id String\n pos_id String\n\n customer Customer? @relation(fields: [customer_id], references: [id])\n pos Pos @relation(fields: [pos_id], references: [id])\n account ConsumerAccount @relation(fields: [account_id], references: [id])\n items SalesInvoiceItem[]\n payments SalesInvoicePayment[]\n\n @@map(\"sales_invoices\")\n}\n\nmodel SalesInvoiceItem {\n id String @id @default(uuid())\n quantity Decimal @db.Decimal(10, 0)\n unit_type UnitType\n unit_price Decimal @default(0.00) @db.Decimal(15, 2)\n total_amount Decimal @default(0.00) @db.Decimal(15, 2)\n created_at DateTime @default(now()) @db.Timestamp(0)\n discount Decimal @default(0.00) @db.Decimal(15, 2)\n notes String? @db.Text\n\n invoice_id String\n good_id String?\n service_id String?\n\n payload Json?\n\n invoice SalesInvoice @relation(fields: [invoice_id], references: [id])\n good Good? @relation(fields: [good_id], references: [id])\n service Service? @relation(fields: [service_id], references: [id])\n\n @@index([invoice_id, good_id])\n @@map(\"sales_invoice_items\")\n}\n\nmodel SalesInvoicePayment {\n id String @id @default(uuid())\n invoice_id String\n amount Decimal @db.Decimal(15, 2)\n payment_method PaymentMethodType\n paid_at DateTime\n created_at DateTime @default(now())\n\n invoice SalesInvoice @relation(fields: [invoice_id], references: [id])\n\n @@index([invoice_id])\n @@map(\"sales_invoice_payments\")\n}\n\nmodel Service {\n id String @id @default(uuid())\n name String @db.VarChar(255)\n description String? @db.Text\n sku String @unique() @db.VarChar(100)\n local_sku String? @unique() @db.VarChar(100)\n barcode String? @unique() @db.VarChar(100)\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt @db.Timestamp(0)\n deleted_at DateTime? @db.Timestamp(0)\n category_id String?\n base_sale_price Decimal @default(0.00) @db.Decimal(15, 0)\n account_id String\n complex_id String\n\n category ServiceCategory? @relation(fields: [category_id], references: [id])\n sales_invoice_items SalesInvoiceItem[]\n\n @@index([category_id])\n @@map(\"services\")\n}\n\nmodel ServiceCategory {\n id String @id @default(uuid())\n name String @db.VarChar(100)\n description String? @db.Text\n image_url String? @db.VarChar(255)\n account_id String\n complex_id String\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt @db.Timestamp(0)\n deleted_at DateTime? @db.Timestamp(0)\n\n services Service[]\n\n @@map(\"service_categories\")\n}\n", "runtimeDataModel": { "models": {}, "enums": {}, @@ -30,7 +30,7 @@ const config: runtime.GetPrismaClientConfig = { } } -config.runtimeDataModel = JSON.parse("{\"models\":{\"Admin\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mobile_number\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"national_code\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"first_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"last_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"AdminAccount\",\"relationName\":\"AdminToAdminAccount\"}],\"dbName\":\"admins\"},\"AdminAccount\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"Admin\",\"relationName\":\"AdminToAdminAccount\"},{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"account\",\"kind\":\"object\",\"type\":\"Account\",\"relationName\":\"AccountToAdminAccount\"}],\"dbName\":\"admin_accounts\"},\"Account\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"username\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"AccountStatus\"},{\"name\":\"type\",\"kind\":\"enum\",\"type\":\"AccountType\"},{\"name\":\"admin_account\",\"kind\":\"object\",\"type\":\"AdminAccount\",\"relationName\":\"AccountToAdminAccount\"},{\"name\":\"provider_account\",\"kind\":\"object\",\"type\":\"ProviderAccount\",\"relationName\":\"AccountToProviderAccount\"},{\"name\":\"partner_account\",\"kind\":\"object\",\"type\":\"PartnerAccount\",\"relationName\":\"AccountToPartnerAccount\"},{\"name\":\"consumer_account\",\"kind\":\"object\",\"type\":\"ConsumerAccount\",\"relationName\":\"AccountToConsumerAccount\"}],\"dbName\":\"accounts\"},\"Consumer\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mobile_number\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"first_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"last_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"ConsumerStatus\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"ConsumerAccount\",\"relationName\":\"ConsumerToConsumerAccount\"},{\"name\":\"businessActivities\",\"kind\":\"object\",\"type\":\"BusinessActivity\",\"relationName\":\"BusinessActivityToConsumer\"}],\"dbName\":\"consumers\"},\"ConsumerAccount\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"role\",\"kind\":\"enum\",\"type\":\"ConsumerRole\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"Consumer\",\"relationName\":\"ConsumerToConsumerAccount\"},{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"account\",\"kind\":\"object\",\"type\":\"Account\",\"relationName\":\"AccountToConsumerAccount\"},{\"name\":\"permissions\",\"kind\":\"object\",\"type\":\"PermissionConsumer\",\"relationName\":\"ConsumerAccountToPermissionConsumer\"},{\"name\":\"salesInvoices\",\"kind\":\"object\",\"type\":\"SalesInvoice\",\"relationName\":\"ConsumerAccountToSalesInvoice\"}],\"dbName\":\"consumer_accounts\"},\"BusinessActivity\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"guild_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"guild\",\"kind\":\"object\",\"type\":\"Guild\",\"relationName\":\"BusinessActivityToGuild\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"Consumer\",\"relationName\":\"BusinessActivityToConsumer\"},{\"name\":\"complexes\",\"kind\":\"object\",\"type\":\"Complex\",\"relationName\":\"BusinessActivityToComplex\"},{\"name\":\"permissionBusinesses\",\"kind\":\"object\",\"type\":\"PermissionBusiness\",\"relationName\":\"BusinessActivityToPermissionBusiness\"}],\"dbName\":\"business_activities\"},\"Complex\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"address\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tax_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"business_activity_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"business_activity\",\"kind\":\"object\",\"type\":\"BusinessActivity\",\"relationName\":\"BusinessActivityToComplex\"},{\"name\":\"pos_list\",\"kind\":\"object\",\"type\":\"Pos\",\"relationName\":\"ComplexToPos\"},{\"name\":\"goods\",\"kind\":\"object\",\"type\":\"Good\",\"relationName\":\"ComplexToGood\"},{\"name\":\"good_categories\",\"kind\":\"object\",\"type\":\"GoodCategory\",\"relationName\":\"ComplexToGoodCategory\"},{\"name\":\"permissionComplexes\",\"kind\":\"object\",\"type\":\"PermissionComplex\",\"relationName\":\"ComplexToPermissionComplex\"},{\"name\":\"customerIndividuals\",\"kind\":\"object\",\"type\":\"CustomerIndividual\",\"relationName\":\"ComplexToCustomerIndividual\"},{\"name\":\"customerLegals\",\"kind\":\"object\",\"type\":\"CustomerLegal\",\"relationName\":\"ComplexToCustomerLegal\"}],\"dbName\":\"complexes\"},\"Pos\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"serial\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"model\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"POSStatus\"},{\"name\":\"pos_type\",\"kind\":\"enum\",\"type\":\"POSType\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"complex_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complex\",\"kind\":\"object\",\"type\":\"Complex\",\"relationName\":\"ComplexToPos\"},{\"name\":\"device_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"device\",\"kind\":\"object\",\"type\":\"Device\",\"relationName\":\"DeviceToPos\"},{\"name\":\"provider_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"provider\",\"kind\":\"object\",\"type\":\"Provider\",\"relationName\":\"PosToProvider\"},{\"name\":\"licenses\",\"kind\":\"object\",\"type\":\"License\",\"relationName\":\"LicenseToPos\"},{\"name\":\"permissionPos\",\"kind\":\"object\",\"type\":\"PermissionPos\",\"relationName\":\"PermissionPosToPos\"},{\"name\":\"salesInvoices\",\"kind\":\"object\",\"type\":\"SalesInvoice\",\"relationName\":\"PosToSalesInvoice\"}],\"dbName\":\"poses\"},\"DeviceBrand\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"devices\",\"kind\":\"object\",\"type\":\"Device\",\"relationName\":\"DeviceToDeviceBrand\"}],\"dbName\":\"device_brands\"},\"Device\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"os_version\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"brand_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"brand\",\"kind\":\"object\",\"type\":\"DeviceBrand\",\"relationName\":\"DeviceToDeviceBrand\"},{\"name\":\"poses\",\"kind\":\"object\",\"type\":\"Pos\",\"relationName\":\"DeviceToPos\"}],\"dbName\":\"devices\"},\"License\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"starts_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"expires_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"LicenseStatus\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"pos_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"partner_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"pos\",\"kind\":\"object\",\"type\":\"Pos\",\"relationName\":\"LicenseToPos\"},{\"name\":\"partner\",\"kind\":\"object\",\"type\":\"Partner\",\"relationName\":\"LicenseToPartner\"}],\"dbName\":\"licenses\"},\"Partner\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"code\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"license_quota\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"PartnerStatus\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"licenses\",\"kind\":\"object\",\"type\":\"License\",\"relationName\":\"LicenseToPartner\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"PartnerAccount\",\"relationName\":\"PartnerToPartnerAccount\"}],\"dbName\":\"partners\"},\"PartnerAccount\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"role\",\"kind\":\"enum\",\"type\":\"PartnerRole\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"Partner\",\"relationName\":\"PartnerToPartnerAccount\"},{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"account\",\"kind\":\"object\",\"type\":\"Account\",\"relationName\":\"AccountToPartnerAccount\"}],\"dbName\":\"partner_accounts\"},\"PermissionConsumer\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"account\",\"kind\":\"object\",\"type\":\"ConsumerAccount\",\"relationName\":\"ConsumerAccountToPermissionConsumer\"},{\"name\":\"posPermissions\",\"kind\":\"object\",\"type\":\"PermissionPos\",\"relationName\":\"PermissionConsumerToPermissionPos\"},{\"name\":\"complexPermissions\",\"kind\":\"object\",\"type\":\"PermissionComplex\",\"relationName\":\"PermissionComplexToPermissionConsumer\"},{\"name\":\"businessPermissions\",\"kind\":\"object\",\"type\":\"PermissionBusiness\",\"relationName\":\"PermissionBusinessToPermissionConsumer\"}],\"dbName\":\"permission_consumers\"},\"PermissionPos\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"role\",\"kind\":\"enum\",\"type\":\"POSRole\"},{\"name\":\"pos_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"permission_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"pos\",\"kind\":\"object\",\"type\":\"Pos\",\"relationName\":\"PermissionPosToPos\"},{\"name\":\"permission\",\"kind\":\"object\",\"type\":\"PermissionConsumer\",\"relationName\":\"PermissionConsumerToPermissionPos\"}],\"dbName\":\"permission_poses\"},\"PermissionComplex\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"role\",\"kind\":\"enum\",\"type\":\"ComplexRole\"},{\"name\":\"complex_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"permission_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complex\",\"kind\":\"object\",\"type\":\"Complex\",\"relationName\":\"ComplexToPermissionComplex\"},{\"name\":\"permission\",\"kind\":\"object\",\"type\":\"PermissionConsumer\",\"relationName\":\"PermissionComplexToPermissionConsumer\"}],\"dbName\":\"permission_complexes\"},\"PermissionBusiness\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"role\",\"kind\":\"enum\",\"type\":\"BusinessRole\"},{\"name\":\"business_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"permission_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"business\",\"kind\":\"object\",\"type\":\"BusinessActivity\",\"relationName\":\"BusinessActivityToPermissionBusiness\"},{\"name\":\"permission\",\"kind\":\"object\",\"type\":\"PermissionConsumer\",\"relationName\":\"PermissionBusinessToPermissionConsumer\"}],\"dbName\":\"permission_business_activities\"},\"Provider\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"code\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"PartnerStatus\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"pos_list\",\"kind\":\"object\",\"type\":\"Pos\",\"relationName\":\"PosToProvider\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"ProviderAccount\",\"relationName\":\"ProviderToProviderAccount\"}],\"dbName\":\"providers\"},\"ProviderAccount\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"role\",\"kind\":\"enum\",\"type\":\"ProviderRole\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"Provider\",\"relationName\":\"ProviderToProviderAccount\"},{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"account\",\"kind\":\"object\",\"type\":\"Account\",\"relationName\":\"AccountToProviderAccount\"}],\"dbName\":\"provider_accounts\"},\"TriggerLog\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"message\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":\"trigger_logs\"},\"UserDevices\":{\"fields\":[{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"app_version\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"build_number\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"uuid\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"platform\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"brand\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"model\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"device\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"os_version\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sdk_version\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"release_number\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"browser_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fcm_token\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":\"user_devices\"},\"Customer\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"enum\",\"type\":\"CustomerType\"},{\"name\":\"is_favorite\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"sales_invoices\",\"kind\":\"object\",\"type\":\"SalesInvoice\",\"relationName\":\"CustomerToSalesInvoice\"},{\"name\":\"customer_individuals\",\"kind\":\"object\",\"type\":\"CustomerIndividual\",\"relationName\":\"CustomerToCustomerIndividual\"},{\"name\":\"customer_legals\",\"kind\":\"object\",\"type\":\"CustomerLegal\",\"relationName\":\"CustomerToCustomerLegal\"}],\"dbName\":\"customers\"},\"CustomerIndividual\":{\"fields\":[{\"name\":\"customer_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"first_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"last_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"national_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"postal_code\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"economic_code\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complex_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"customer\",\"kind\":\"object\",\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerIndividual\"},{\"name\":\"complex\",\"kind\":\"object\",\"type\":\"Complex\",\"relationName\":\"ComplexToCustomerIndividual\"}],\"dbName\":\"customer_individuals\"},\"CustomerLegal\":{\"fields\":[{\"name\":\"customer_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"company_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"economic_code\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"registration_number\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"postal_code\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complex_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"customer\",\"kind\":\"object\",\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerLegal\"},{\"name\":\"complex\",\"kind\":\"object\",\"type\":\"Complex\",\"relationName\":\"ComplexToCustomerLegal\"}],\"dbName\":\"customer_legal\"},\"Good\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"is_default_guild_good\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"sku\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"unit_type\",\"kind\":\"enum\",\"type\":\"UnitType\"},{\"name\":\"pricing_model\",\"kind\":\"enum\",\"type\":\"GoodPricingModel\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"local_sku\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"barcode\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"base_sale_price\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"complex_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"category_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"category\",\"kind\":\"object\",\"type\":\"GoodCategory\",\"relationName\":\"GoodToGoodCategory\"},{\"name\":\"complex\",\"kind\":\"object\",\"type\":\"Complex\",\"relationName\":\"ComplexToGood\"},{\"name\":\"sales_invoice_items\",\"kind\":\"object\",\"type\":\"SalesInvoiceItem\",\"relationName\":\"GoodToSalesInvoiceItem\"}],\"dbName\":\"goods\"},\"GoodCategory\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"image_url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complex_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"is_default_guild_good\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"guild_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"goods\",\"kind\":\"object\",\"type\":\"Good\",\"relationName\":\"GoodToGoodCategory\"},{\"name\":\"guild\",\"kind\":\"object\",\"type\":\"Guild\",\"relationName\":\"GoodCategoryToGuild\"},{\"name\":\"complex\",\"kind\":\"object\",\"type\":\"Complex\",\"relationName\":\"ComplexToGoodCategory\"}],\"dbName\":\"good_categories\"},\"Guild\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"code\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"business_activities\",\"kind\":\"object\",\"type\":\"BusinessActivity\",\"relationName\":\"BusinessActivityToGuild\"},{\"name\":\"good_categories\",\"kind\":\"object\",\"type\":\"GoodCategory\",\"relationName\":\"GoodCategoryToGuild\"}],\"dbName\":\"guilds\"},\"SalesInvoice\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"code\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"total_amount\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"notes\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"unknown_customer\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"invoice_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"customer_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"pos_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"customer\",\"kind\":\"object\",\"type\":\"Customer\",\"relationName\":\"CustomerToSalesInvoice\"},{\"name\":\"pos\",\"kind\":\"object\",\"type\":\"Pos\",\"relationName\":\"PosToSalesInvoice\"},{\"name\":\"account\",\"kind\":\"object\",\"type\":\"ConsumerAccount\",\"relationName\":\"ConsumerAccountToSalesInvoice\"},{\"name\":\"items\",\"kind\":\"object\",\"type\":\"SalesInvoiceItem\",\"relationName\":\"SalesInvoiceToSalesInvoiceItem\"},{\"name\":\"payments\",\"kind\":\"object\",\"type\":\"SalesInvoicePayment\",\"relationName\":\"SalesInvoiceToSalesInvoicePayment\"}],\"dbName\":\"sales_invoices\"},\"SalesInvoiceItem\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"quantity\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"unit_type\",\"kind\":\"enum\",\"type\":\"UnitType\"},{\"name\":\"unit_price\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"total_amount\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"discount\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"notes\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"invoice_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"good_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"service_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"payload\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"invoice\",\"kind\":\"object\",\"type\":\"SalesInvoice\",\"relationName\":\"SalesInvoiceToSalesInvoiceItem\"},{\"name\":\"good\",\"kind\":\"object\",\"type\":\"Good\",\"relationName\":\"GoodToSalesInvoiceItem\"},{\"name\":\"service\",\"kind\":\"object\",\"type\":\"Service\",\"relationName\":\"SalesInvoiceItemToService\"}],\"dbName\":\"sales_invoice_items\"},\"SalesInvoicePayment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"invoice_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"amount\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"payment_method\",\"kind\":\"enum\",\"type\":\"PaymentMethodType\"},{\"name\":\"paid_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"invoice\",\"kind\":\"object\",\"type\":\"SalesInvoice\",\"relationName\":\"SalesInvoiceToSalesInvoicePayment\"}],\"dbName\":\"sales_invoice_payments\"},\"Service\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sku\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"local_sku\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"barcode\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"category_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"base_sale_price\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complex_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"category\",\"kind\":\"object\",\"type\":\"ServiceCategory\",\"relationName\":\"ServiceToServiceCategory\"},{\"name\":\"sales_invoice_items\",\"kind\":\"object\",\"type\":\"SalesInvoiceItem\",\"relationName\":\"SalesInvoiceItemToService\"}],\"dbName\":\"services\"},\"ServiceCategory\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"image_url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complex_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"services\",\"kind\":\"object\",\"type\":\"Service\",\"relationName\":\"ServiceToServiceCategory\"}],\"dbName\":\"service_categories\"}},\"enums\":{},\"types\":{}}") +config.runtimeDataModel = JSON.parse("{\"models\":{\"Admin\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mobile_number\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"national_code\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"first_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"last_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"AdminAccount\",\"relationName\":\"AdminToAdminAccount\"}],\"dbName\":\"admins\"},\"AdminAccount\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"Admin\",\"relationName\":\"AdminToAdminAccount\"},{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"account\",\"kind\":\"object\",\"type\":\"Account\",\"relationName\":\"AccountToAdminAccount\"}],\"dbName\":\"admin_accounts\"},\"Account\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"username\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"AccountStatus\"},{\"name\":\"type\",\"kind\":\"enum\",\"type\":\"AccountType\"},{\"name\":\"admin_account\",\"kind\":\"object\",\"type\":\"AdminAccount\",\"relationName\":\"AccountToAdminAccount\"},{\"name\":\"provider_account\",\"kind\":\"object\",\"type\":\"ProviderAccount\",\"relationName\":\"AccountToProviderAccount\"},{\"name\":\"partner_account\",\"kind\":\"object\",\"type\":\"PartnerAccount\",\"relationName\":\"AccountToPartnerAccount\"},{\"name\":\"consumer_account\",\"kind\":\"object\",\"type\":\"ConsumerAccount\",\"relationName\":\"AccountToConsumerAccount\"}],\"dbName\":\"accounts\"},\"Consumer\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mobile_number\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"first_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"last_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"ConsumerStatus\"},{\"name\":\"license_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"license\",\"kind\":\"object\",\"type\":\"License\",\"relationName\":\"ConsumerToLicense\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"ConsumerAccount\",\"relationName\":\"ConsumerToConsumerAccount\"},{\"name\":\"businessActivities\",\"kind\":\"object\",\"type\":\"BusinessActivity\",\"relationName\":\"BusinessActivityToConsumer\"}],\"dbName\":\"consumers\"},\"ConsumerAccount\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"role\",\"kind\":\"enum\",\"type\":\"ConsumerRole\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"Consumer\",\"relationName\":\"ConsumerToConsumerAccount\"},{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"account\",\"kind\":\"object\",\"type\":\"Account\",\"relationName\":\"AccountToConsumerAccount\"},{\"name\":\"permissions\",\"kind\":\"object\",\"type\":\"PermissionConsumer\",\"relationName\":\"ConsumerAccountToPermissionConsumer\"},{\"name\":\"salesInvoices\",\"kind\":\"object\",\"type\":\"SalesInvoice\",\"relationName\":\"ConsumerAccountToSalesInvoice\"}],\"dbName\":\"consumer_accounts\"},\"BusinessActivity\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"guild_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"guild\",\"kind\":\"object\",\"type\":\"Guild\",\"relationName\":\"BusinessActivityToGuild\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"Consumer\",\"relationName\":\"BusinessActivityToConsumer\"},{\"name\":\"complexes\",\"kind\":\"object\",\"type\":\"Complex\",\"relationName\":\"BusinessActivityToComplex\"},{\"name\":\"permissionBusinesses\",\"kind\":\"object\",\"type\":\"PermissionBusiness\",\"relationName\":\"BusinessActivityToPermissionBusiness\"}],\"dbName\":\"business_activities\"},\"Complex\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"address\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tax_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"business_activity_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"business_activity\",\"kind\":\"object\",\"type\":\"BusinessActivity\",\"relationName\":\"BusinessActivityToComplex\"},{\"name\":\"pos_list\",\"kind\":\"object\",\"type\":\"Pos\",\"relationName\":\"ComplexToPos\"},{\"name\":\"goods\",\"kind\":\"object\",\"type\":\"Good\",\"relationName\":\"ComplexToGood\"},{\"name\":\"good_categories\",\"kind\":\"object\",\"type\":\"GoodCategory\",\"relationName\":\"ComplexToGoodCategory\"},{\"name\":\"permissionComplexes\",\"kind\":\"object\",\"type\":\"PermissionComplex\",\"relationName\":\"ComplexToPermissionComplex\"},{\"name\":\"customerIndividuals\",\"kind\":\"object\",\"type\":\"CustomerIndividual\",\"relationName\":\"ComplexToCustomerIndividual\"},{\"name\":\"customerLegals\",\"kind\":\"object\",\"type\":\"CustomerLegal\",\"relationName\":\"ComplexToCustomerLegal\"}],\"dbName\":\"complexes\"},\"Pos\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"serial\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"model\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"POSStatus\"},{\"name\":\"pos_type\",\"kind\":\"enum\",\"type\":\"POSType\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"complex_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complex\",\"kind\":\"object\",\"type\":\"Complex\",\"relationName\":\"ComplexToPos\"},{\"name\":\"device_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"device\",\"kind\":\"object\",\"type\":\"Device\",\"relationName\":\"DeviceToPos\"},{\"name\":\"provider_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"provider\",\"kind\":\"object\",\"type\":\"Provider\",\"relationName\":\"PosToProvider\"},{\"name\":\"permissionPos\",\"kind\":\"object\",\"type\":\"PermissionPos\",\"relationName\":\"PermissionPosToPos\"},{\"name\":\"salesInvoices\",\"kind\":\"object\",\"type\":\"SalesInvoice\",\"relationName\":\"PosToSalesInvoice\"}],\"dbName\":\"poses\"},\"DeviceBrand\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"devices\",\"kind\":\"object\",\"type\":\"Device\",\"relationName\":\"DeviceToDeviceBrand\"}],\"dbName\":\"device_brands\"},\"Device\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"os_version\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"brand_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"brand\",\"kind\":\"object\",\"type\":\"DeviceBrand\",\"relationName\":\"DeviceToDeviceBrand\"},{\"name\":\"poses\",\"kind\":\"object\",\"type\":\"Pos\",\"relationName\":\"DeviceToPos\"}],\"dbName\":\"devices\"},\"License\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"starts_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"expires_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"LicenseStatus\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"partner_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"partner\",\"kind\":\"object\",\"type\":\"Partner\",\"relationName\":\"LicenseToPartner\"},{\"name\":\"consumers\",\"kind\":\"object\",\"type\":\"Consumer\",\"relationName\":\"ConsumerToLicense\"}],\"dbName\":\"licenses\"},\"Partner\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"code\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"license_quota\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"PartnerStatus\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"licenses\",\"kind\":\"object\",\"type\":\"License\",\"relationName\":\"LicenseToPartner\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"PartnerAccount\",\"relationName\":\"PartnerToPartnerAccount\"}],\"dbName\":\"partners\"},\"PartnerAccount\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"role\",\"kind\":\"enum\",\"type\":\"PartnerRole\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"Partner\",\"relationName\":\"PartnerToPartnerAccount\"},{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"account\",\"kind\":\"object\",\"type\":\"Account\",\"relationName\":\"AccountToPartnerAccount\"}],\"dbName\":\"partner_accounts\"},\"PermissionConsumer\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"account\",\"kind\":\"object\",\"type\":\"ConsumerAccount\",\"relationName\":\"ConsumerAccountToPermissionConsumer\"},{\"name\":\"posPermissions\",\"kind\":\"object\",\"type\":\"PermissionPos\",\"relationName\":\"PermissionConsumerToPermissionPos\"},{\"name\":\"complexPermissions\",\"kind\":\"object\",\"type\":\"PermissionComplex\",\"relationName\":\"PermissionComplexToPermissionConsumer\"},{\"name\":\"businessPermissions\",\"kind\":\"object\",\"type\":\"PermissionBusiness\",\"relationName\":\"PermissionBusinessToPermissionConsumer\"}],\"dbName\":\"permission_consumers\"},\"PermissionPos\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"role\",\"kind\":\"enum\",\"type\":\"POSRole\"},{\"name\":\"pos_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"permission_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"pos\",\"kind\":\"object\",\"type\":\"Pos\",\"relationName\":\"PermissionPosToPos\"},{\"name\":\"permission\",\"kind\":\"object\",\"type\":\"PermissionConsumer\",\"relationName\":\"PermissionConsumerToPermissionPos\"}],\"dbName\":\"permission_poses\"},\"PermissionComplex\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"role\",\"kind\":\"enum\",\"type\":\"ComplexRole\"},{\"name\":\"complex_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"permission_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complex\",\"kind\":\"object\",\"type\":\"Complex\",\"relationName\":\"ComplexToPermissionComplex\"},{\"name\":\"permission\",\"kind\":\"object\",\"type\":\"PermissionConsumer\",\"relationName\":\"PermissionComplexToPermissionConsumer\"}],\"dbName\":\"permission_complexes\"},\"PermissionBusiness\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"role\",\"kind\":\"enum\",\"type\":\"BusinessRole\"},{\"name\":\"business_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"permission_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"business\",\"kind\":\"object\",\"type\":\"BusinessActivity\",\"relationName\":\"BusinessActivityToPermissionBusiness\"},{\"name\":\"permission\",\"kind\":\"object\",\"type\":\"PermissionConsumer\",\"relationName\":\"PermissionBusinessToPermissionConsumer\"}],\"dbName\":\"permission_business_activities\"},\"Provider\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"code\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"PartnerStatus\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"pos_list\",\"kind\":\"object\",\"type\":\"Pos\",\"relationName\":\"PosToProvider\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"ProviderAccount\",\"relationName\":\"ProviderToProviderAccount\"}],\"dbName\":\"providers\"},\"ProviderAccount\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"role\",\"kind\":\"enum\",\"type\":\"ProviderRole\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"user_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"Provider\",\"relationName\":\"ProviderToProviderAccount\"},{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"account\",\"kind\":\"object\",\"type\":\"Account\",\"relationName\":\"AccountToProviderAccount\"}],\"dbName\":\"provider_accounts\"},\"TriggerLog\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"message\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":\"trigger_logs\"},\"UserDevices\":{\"fields\":[{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"app_version\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"build_number\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"uuid\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"platform\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"brand\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"model\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"device\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"os_version\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sdk_version\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"release_number\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"browser_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fcm_token\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":\"user_devices\"},\"Customer\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"type\",\"kind\":\"enum\",\"type\":\"CustomerType\"},{\"name\":\"is_favorite\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"sales_invoices\",\"kind\":\"object\",\"type\":\"SalesInvoice\",\"relationName\":\"CustomerToSalesInvoice\"},{\"name\":\"customer_individuals\",\"kind\":\"object\",\"type\":\"CustomerIndividual\",\"relationName\":\"CustomerToCustomerIndividual\"},{\"name\":\"customer_legals\",\"kind\":\"object\",\"type\":\"CustomerLegal\",\"relationName\":\"CustomerToCustomerLegal\"}],\"dbName\":\"customers\"},\"CustomerIndividual\":{\"fields\":[{\"name\":\"customer_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"first_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"last_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"national_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"postal_code\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"economic_code\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complex_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"customer\",\"kind\":\"object\",\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerIndividual\"},{\"name\":\"complex\",\"kind\":\"object\",\"type\":\"Complex\",\"relationName\":\"ComplexToCustomerIndividual\"}],\"dbName\":\"customer_individuals\"},\"CustomerLegal\":{\"fields\":[{\"name\":\"customer_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"company_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"economic_code\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"registration_number\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"postal_code\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complex_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"customer\",\"kind\":\"object\",\"type\":\"Customer\",\"relationName\":\"CustomerToCustomerLegal\"},{\"name\":\"complex\",\"kind\":\"object\",\"type\":\"Complex\",\"relationName\":\"ComplexToCustomerLegal\"}],\"dbName\":\"customer_legal\"},\"Good\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"is_default_guild_good\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"sku\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"unit_type\",\"kind\":\"enum\",\"type\":\"UnitType\"},{\"name\":\"pricing_model\",\"kind\":\"enum\",\"type\":\"GoodPricingModel\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"local_sku\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"barcode\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"base_sale_price\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"complex_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"category_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"category\",\"kind\":\"object\",\"type\":\"GoodCategory\",\"relationName\":\"GoodToGoodCategory\"},{\"name\":\"complex\",\"kind\":\"object\",\"type\":\"Complex\",\"relationName\":\"ComplexToGood\"},{\"name\":\"sales_invoice_items\",\"kind\":\"object\",\"type\":\"SalesInvoiceItem\",\"relationName\":\"GoodToSalesInvoiceItem\"}],\"dbName\":\"goods\"},\"GoodCategory\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"image_url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complex_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"is_default_guild_good\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"guild_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"goods\",\"kind\":\"object\",\"type\":\"Good\",\"relationName\":\"GoodToGoodCategory\"},{\"name\":\"guild\",\"kind\":\"object\",\"type\":\"Guild\",\"relationName\":\"GoodCategoryToGuild\"},{\"name\":\"complex\",\"kind\":\"object\",\"type\":\"Complex\",\"relationName\":\"ComplexToGoodCategory\"}],\"dbName\":\"good_categories\"},\"Guild\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"code\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"business_activities\",\"kind\":\"object\",\"type\":\"BusinessActivity\",\"relationName\":\"BusinessActivityToGuild\"},{\"name\":\"good_categories\",\"kind\":\"object\",\"type\":\"GoodCategory\",\"relationName\":\"GoodCategoryToGuild\"}],\"dbName\":\"guilds\"},\"SalesInvoice\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"code\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"total_amount\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"notes\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"unknown_customer\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"invoice_date\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"customer_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"pos_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"customer\",\"kind\":\"object\",\"type\":\"Customer\",\"relationName\":\"CustomerToSalesInvoice\"},{\"name\":\"pos\",\"kind\":\"object\",\"type\":\"Pos\",\"relationName\":\"PosToSalesInvoice\"},{\"name\":\"account\",\"kind\":\"object\",\"type\":\"ConsumerAccount\",\"relationName\":\"ConsumerAccountToSalesInvoice\"},{\"name\":\"items\",\"kind\":\"object\",\"type\":\"SalesInvoiceItem\",\"relationName\":\"SalesInvoiceToSalesInvoiceItem\"},{\"name\":\"payments\",\"kind\":\"object\",\"type\":\"SalesInvoicePayment\",\"relationName\":\"SalesInvoiceToSalesInvoicePayment\"}],\"dbName\":\"sales_invoices\"},\"SalesInvoiceItem\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"quantity\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"unit_type\",\"kind\":\"enum\",\"type\":\"UnitType\"},{\"name\":\"unit_price\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"total_amount\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"discount\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"notes\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"invoice_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"good_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"service_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"payload\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"invoice\",\"kind\":\"object\",\"type\":\"SalesInvoice\",\"relationName\":\"SalesInvoiceToSalesInvoiceItem\"},{\"name\":\"good\",\"kind\":\"object\",\"type\":\"Good\",\"relationName\":\"GoodToSalesInvoiceItem\"},{\"name\":\"service\",\"kind\":\"object\",\"type\":\"Service\",\"relationName\":\"SalesInvoiceItemToService\"}],\"dbName\":\"sales_invoice_items\"},\"SalesInvoicePayment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"invoice_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"amount\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"payment_method\",\"kind\":\"enum\",\"type\":\"PaymentMethodType\"},{\"name\":\"paid_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"invoice\",\"kind\":\"object\",\"type\":\"SalesInvoice\",\"relationName\":\"SalesInvoiceToSalesInvoicePayment\"}],\"dbName\":\"sales_invoice_payments\"},\"Service\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sku\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"local_sku\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"barcode\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"category_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"base_sale_price\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complex_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"category\",\"kind\":\"object\",\"type\":\"ServiceCategory\",\"relationName\":\"ServiceToServiceCategory\"},{\"name\":\"sales_invoice_items\",\"kind\":\"object\",\"type\":\"SalesInvoiceItem\",\"relationName\":\"SalesInvoiceItemToService\"}],\"dbName\":\"services\"},\"ServiceCategory\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"image_url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complex_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"services\",\"kind\":\"object\",\"type\":\"Service\",\"relationName\":\"ServiceToServiceCategory\"}],\"dbName\":\"service_categories\"}},\"enums\":{},\"types\":{}}") async function decodeBase64AsWasm(wasmBase64: string): Promise { const { Buffer } = await import('node:buffer') diff --git a/src/generated/prisma/internal/prismaNamespace.ts b/src/generated/prisma/internal/prismaNamespace.ts index f2ed12e..c93f105 100644 --- a/src/generated/prisma/internal/prismaNamespace.ts +++ b/src/generated/prisma/internal/prismaNamespace.ts @@ -2627,6 +2627,7 @@ export const ConsumerScalarFieldEnum = { first_name: 'first_name', last_name: 'last_name', status: 'status', + license_id: 'license_id', created_at: 'created_at', updated_at: 'updated_at' } as const @@ -2717,7 +2718,6 @@ export const LicenseScalarFieldEnum = { status: 'status', created_at: 'created_at', updated_at: 'updated_at', - pos_id: 'pos_id', partner_id: 'partner_id' } as const @@ -3063,7 +3063,8 @@ export const ConsumerOrderByRelevanceFieldEnum = { id: 'id', mobile_number: 'mobile_number', first_name: 'first_name', - last_name: 'last_name' + last_name: 'last_name', + license_id: 'license_id' } as const export type ConsumerOrderByRelevanceFieldEnum = (typeof ConsumerOrderByRelevanceFieldEnum)[keyof typeof ConsumerOrderByRelevanceFieldEnum] @@ -3132,7 +3133,6 @@ export type DeviceOrderByRelevanceFieldEnum = (typeof DeviceOrderByRelevanceFiel export const LicenseOrderByRelevanceFieldEnum = { id: 'id', - pos_id: 'pos_id', partner_id: 'partner_id' } as const diff --git a/src/generated/prisma/internal/prismaNamespaceBrowser.ts b/src/generated/prisma/internal/prismaNamespaceBrowser.ts index a1c8c41..57acdd9 100644 --- a/src/generated/prisma/internal/prismaNamespaceBrowser.ts +++ b/src/generated/prisma/internal/prismaNamespaceBrowser.ts @@ -142,6 +142,7 @@ export const ConsumerScalarFieldEnum = { first_name: 'first_name', last_name: 'last_name', status: 'status', + license_id: 'license_id', created_at: 'created_at', updated_at: 'updated_at' } as const @@ -232,7 +233,6 @@ export const LicenseScalarFieldEnum = { status: 'status', created_at: 'created_at', updated_at: 'updated_at', - pos_id: 'pos_id', partner_id: 'partner_id' } as const @@ -578,7 +578,8 @@ export const ConsumerOrderByRelevanceFieldEnum = { id: 'id', mobile_number: 'mobile_number', first_name: 'first_name', - last_name: 'last_name' + last_name: 'last_name', + license_id: 'license_id' } as const export type ConsumerOrderByRelevanceFieldEnum = (typeof ConsumerOrderByRelevanceFieldEnum)[keyof typeof ConsumerOrderByRelevanceFieldEnum] @@ -647,7 +648,6 @@ export type DeviceOrderByRelevanceFieldEnum = (typeof DeviceOrderByRelevanceFiel export const LicenseOrderByRelevanceFieldEnum = { id: 'id', - pos_id: 'pos_id', partner_id: 'partner_id' } as const diff --git a/src/generated/prisma/models/Account.ts b/src/generated/prisma/models/Account.ts index 767f988..77facb4 100644 --- a/src/generated/prisma/models/Account.ts +++ b/src/generated/prisma/models/Account.ts @@ -204,17 +204,17 @@ export type AccountOrderByWithRelationInput = { export type AccountWhereUniqueInput = Prisma.AtLeast<{ id?: string username?: string - password?: string AND?: Prisma.AccountWhereInput | Prisma.AccountWhereInput[] OR?: Prisma.AccountWhereInput[] NOT?: Prisma.AccountWhereInput | Prisma.AccountWhereInput[] + password?: Prisma.StringFilter<"Account"> | string status?: Prisma.EnumAccountStatusFilter<"Account"> | $Enums.AccountStatus type?: Prisma.EnumAccountTypeFilter<"Account"> | $Enums.AccountType admin_account?: Prisma.XOR | null provider_account?: Prisma.XOR | null partner_account?: Prisma.XOR | null consumer_account?: Prisma.XOR | null -}, "id" | "username" | "password"> +}, "id" | "username"> export type AccountOrderByWithAggregationInput = { id?: Prisma.SortOrder diff --git a/src/generated/prisma/models/Consumer.ts b/src/generated/prisma/models/Consumer.ts index ab6d434..c9ec692 100644 --- a/src/generated/prisma/models/Consumer.ts +++ b/src/generated/prisma/models/Consumer.ts @@ -30,6 +30,7 @@ export type ConsumerMinAggregateOutputType = { first_name: string | null last_name: string | null status: $Enums.ConsumerStatus | null + license_id: string | null created_at: Date | null updated_at: Date | null } @@ -40,6 +41,7 @@ export type ConsumerMaxAggregateOutputType = { first_name: string | null last_name: string | null status: $Enums.ConsumerStatus | null + license_id: string | null created_at: Date | null updated_at: Date | null } @@ -50,6 +52,7 @@ export type ConsumerCountAggregateOutputType = { first_name: number last_name: number status: number + license_id: number created_at: number updated_at: number _all: number @@ -62,6 +65,7 @@ export type ConsumerMinAggregateInputType = { first_name?: true last_name?: true status?: true + license_id?: true created_at?: true updated_at?: true } @@ -72,6 +76,7 @@ export type ConsumerMaxAggregateInputType = { first_name?: true last_name?: true status?: true + license_id?: true created_at?: true updated_at?: true } @@ -82,6 +87,7 @@ export type ConsumerCountAggregateInputType = { first_name?: true last_name?: true status?: true + license_id?: true created_at?: true updated_at?: true _all?: true @@ -165,6 +171,7 @@ export type ConsumerGroupByOutputType = { first_name: string last_name: string status: $Enums.ConsumerStatus + license_id: string | null created_at: Date updated_at: Date _count: ConsumerCountAggregateOutputType | null @@ -196,8 +203,10 @@ export type ConsumerWhereInput = { first_name?: Prisma.StringFilter<"Consumer"> | string last_name?: Prisma.StringFilter<"Consumer"> | string status?: Prisma.EnumConsumerStatusFilter<"Consumer"> | $Enums.ConsumerStatus + license_id?: Prisma.StringNullableFilter<"Consumer"> | string | null created_at?: Prisma.DateTimeFilter<"Consumer"> | Date | string updated_at?: Prisma.DateTimeFilter<"Consumer"> | Date | string + license?: Prisma.XOR | null accounts?: Prisma.ConsumerAccountListRelationFilter businessActivities?: Prisma.BusinessActivityListRelationFilter } @@ -208,8 +217,10 @@ export type ConsumerOrderByWithRelationInput = { first_name?: Prisma.SortOrder last_name?: Prisma.SortOrder status?: Prisma.SortOrder + license_id?: Prisma.SortOrderInput | Prisma.SortOrder created_at?: Prisma.SortOrder updated_at?: Prisma.SortOrder + license?: Prisma.LicenseOrderByWithRelationInput accounts?: Prisma.ConsumerAccountOrderByRelationAggregateInput businessActivities?: Prisma.BusinessActivityOrderByRelationAggregateInput _relevance?: Prisma.ConsumerOrderByRelevanceInput @@ -224,8 +235,10 @@ export type ConsumerWhereUniqueInput = Prisma.AtLeast<{ first_name?: Prisma.StringFilter<"Consumer"> | string last_name?: Prisma.StringFilter<"Consumer"> | string status?: Prisma.EnumConsumerStatusFilter<"Consumer"> | $Enums.ConsumerStatus + license_id?: Prisma.StringNullableFilter<"Consumer"> | string | null created_at?: Prisma.DateTimeFilter<"Consumer"> | Date | string updated_at?: Prisma.DateTimeFilter<"Consumer"> | Date | string + license?: Prisma.XOR | null accounts?: Prisma.ConsumerAccountListRelationFilter businessActivities?: Prisma.BusinessActivityListRelationFilter }, "id" | "mobile_number"> @@ -236,6 +249,7 @@ export type ConsumerOrderByWithAggregationInput = { first_name?: Prisma.SortOrder last_name?: Prisma.SortOrder status?: Prisma.SortOrder + license_id?: Prisma.SortOrderInput | Prisma.SortOrder created_at?: Prisma.SortOrder updated_at?: Prisma.SortOrder _count?: Prisma.ConsumerCountOrderByAggregateInput @@ -252,6 +266,7 @@ export type ConsumerScalarWhereWithAggregatesInput = { first_name?: Prisma.StringWithAggregatesFilter<"Consumer"> | string last_name?: Prisma.StringWithAggregatesFilter<"Consumer"> | string status?: Prisma.EnumConsumerStatusWithAggregatesFilter<"Consumer"> | $Enums.ConsumerStatus + license_id?: Prisma.StringNullableWithAggregatesFilter<"Consumer"> | string | null created_at?: Prisma.DateTimeWithAggregatesFilter<"Consumer"> | Date | string updated_at?: Prisma.DateTimeWithAggregatesFilter<"Consumer"> | Date | string } @@ -264,6 +279,7 @@ export type ConsumerCreateInput = { status?: $Enums.ConsumerStatus created_at?: Date | string updated_at?: Date | string + license?: Prisma.LicenseCreateNestedOneWithoutConsumersInput accounts?: Prisma.ConsumerAccountCreateNestedManyWithoutUserInput businessActivities?: Prisma.BusinessActivityCreateNestedManyWithoutUserInput } @@ -274,6 +290,7 @@ export type ConsumerUncheckedCreateInput = { first_name: string last_name: string status?: $Enums.ConsumerStatus + license_id?: string | null created_at?: Date | string updated_at?: Date | string accounts?: Prisma.ConsumerAccountUncheckedCreateNestedManyWithoutUserInput @@ -288,6 +305,7 @@ export type ConsumerUpdateInput = { status?: Prisma.EnumConsumerStatusFieldUpdateOperationsInput | $Enums.ConsumerStatus created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updated_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + license?: Prisma.LicenseUpdateOneWithoutConsumersNestedInput accounts?: Prisma.ConsumerAccountUpdateManyWithoutUserNestedInput businessActivities?: Prisma.BusinessActivityUpdateManyWithoutUserNestedInput } @@ -298,6 +316,7 @@ export type ConsumerUncheckedUpdateInput = { first_name?: Prisma.StringFieldUpdateOperationsInput | string last_name?: Prisma.StringFieldUpdateOperationsInput | string status?: Prisma.EnumConsumerStatusFieldUpdateOperationsInput | $Enums.ConsumerStatus + license_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updated_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string accounts?: Prisma.ConsumerAccountUncheckedUpdateManyWithoutUserNestedInput @@ -310,6 +329,7 @@ export type ConsumerCreateManyInput = { first_name: string last_name: string status?: $Enums.ConsumerStatus + license_id?: string | null created_at?: Date | string updated_at?: Date | string } @@ -330,6 +350,7 @@ export type ConsumerUncheckedUpdateManyInput = { first_name?: Prisma.StringFieldUpdateOperationsInput | string last_name?: Prisma.StringFieldUpdateOperationsInput | string status?: Prisma.EnumConsumerStatusFieldUpdateOperationsInput | $Enums.ConsumerStatus + license_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updated_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string } @@ -346,6 +367,7 @@ export type ConsumerCountOrderByAggregateInput = { first_name?: Prisma.SortOrder last_name?: Prisma.SortOrder status?: Prisma.SortOrder + license_id?: Prisma.SortOrder created_at?: Prisma.SortOrder updated_at?: Prisma.SortOrder } @@ -356,6 +378,7 @@ export type ConsumerMaxOrderByAggregateInput = { first_name?: Prisma.SortOrder last_name?: Prisma.SortOrder status?: Prisma.SortOrder + license_id?: Prisma.SortOrder created_at?: Prisma.SortOrder updated_at?: Prisma.SortOrder } @@ -366,6 +389,7 @@ export type ConsumerMinOrderByAggregateInput = { first_name?: Prisma.SortOrder last_name?: Prisma.SortOrder status?: Prisma.SortOrder + license_id?: Prisma.SortOrder created_at?: Prisma.SortOrder updated_at?: Prisma.SortOrder } @@ -375,6 +399,16 @@ export type ConsumerScalarRelationFilter = { isNot?: Prisma.ConsumerWhereInput } +export type ConsumerListRelationFilter = { + every?: Prisma.ConsumerWhereInput + some?: Prisma.ConsumerWhereInput + none?: Prisma.ConsumerWhereInput +} + +export type ConsumerOrderByRelationAggregateInput = { + _count?: Prisma.SortOrder +} + export type EnumConsumerStatusFieldUpdateOperationsInput = { set?: $Enums.ConsumerStatus } @@ -407,6 +441,48 @@ export type ConsumerUpdateOneRequiredWithoutBusinessActivitiesNestedInput = { update?: Prisma.XOR, Prisma.ConsumerUncheckedUpdateWithoutBusinessActivitiesInput> } +export type ConsumerCreateNestedManyWithoutLicenseInput = { + create?: Prisma.XOR | Prisma.ConsumerCreateWithoutLicenseInput[] | Prisma.ConsumerUncheckedCreateWithoutLicenseInput[] + connectOrCreate?: Prisma.ConsumerCreateOrConnectWithoutLicenseInput | Prisma.ConsumerCreateOrConnectWithoutLicenseInput[] + createMany?: Prisma.ConsumerCreateManyLicenseInputEnvelope + connect?: Prisma.ConsumerWhereUniqueInput | Prisma.ConsumerWhereUniqueInput[] +} + +export type ConsumerUncheckedCreateNestedManyWithoutLicenseInput = { + create?: Prisma.XOR | Prisma.ConsumerCreateWithoutLicenseInput[] | Prisma.ConsumerUncheckedCreateWithoutLicenseInput[] + connectOrCreate?: Prisma.ConsumerCreateOrConnectWithoutLicenseInput | Prisma.ConsumerCreateOrConnectWithoutLicenseInput[] + createMany?: Prisma.ConsumerCreateManyLicenseInputEnvelope + connect?: Prisma.ConsumerWhereUniqueInput | Prisma.ConsumerWhereUniqueInput[] +} + +export type ConsumerUpdateManyWithoutLicenseNestedInput = { + create?: Prisma.XOR | Prisma.ConsumerCreateWithoutLicenseInput[] | Prisma.ConsumerUncheckedCreateWithoutLicenseInput[] + connectOrCreate?: Prisma.ConsumerCreateOrConnectWithoutLicenseInput | Prisma.ConsumerCreateOrConnectWithoutLicenseInput[] + upsert?: Prisma.ConsumerUpsertWithWhereUniqueWithoutLicenseInput | Prisma.ConsumerUpsertWithWhereUniqueWithoutLicenseInput[] + createMany?: Prisma.ConsumerCreateManyLicenseInputEnvelope + set?: Prisma.ConsumerWhereUniqueInput | Prisma.ConsumerWhereUniqueInput[] + disconnect?: Prisma.ConsumerWhereUniqueInput | Prisma.ConsumerWhereUniqueInput[] + delete?: Prisma.ConsumerWhereUniqueInput | Prisma.ConsumerWhereUniqueInput[] + connect?: Prisma.ConsumerWhereUniqueInput | Prisma.ConsumerWhereUniqueInput[] + update?: Prisma.ConsumerUpdateWithWhereUniqueWithoutLicenseInput | Prisma.ConsumerUpdateWithWhereUniqueWithoutLicenseInput[] + updateMany?: Prisma.ConsumerUpdateManyWithWhereWithoutLicenseInput | Prisma.ConsumerUpdateManyWithWhereWithoutLicenseInput[] + deleteMany?: Prisma.ConsumerScalarWhereInput | Prisma.ConsumerScalarWhereInput[] +} + +export type ConsumerUncheckedUpdateManyWithoutLicenseNestedInput = { + create?: Prisma.XOR | Prisma.ConsumerCreateWithoutLicenseInput[] | Prisma.ConsumerUncheckedCreateWithoutLicenseInput[] + connectOrCreate?: Prisma.ConsumerCreateOrConnectWithoutLicenseInput | Prisma.ConsumerCreateOrConnectWithoutLicenseInput[] + upsert?: Prisma.ConsumerUpsertWithWhereUniqueWithoutLicenseInput | Prisma.ConsumerUpsertWithWhereUniqueWithoutLicenseInput[] + createMany?: Prisma.ConsumerCreateManyLicenseInputEnvelope + set?: Prisma.ConsumerWhereUniqueInput | Prisma.ConsumerWhereUniqueInput[] + disconnect?: Prisma.ConsumerWhereUniqueInput | Prisma.ConsumerWhereUniqueInput[] + delete?: Prisma.ConsumerWhereUniqueInput | Prisma.ConsumerWhereUniqueInput[] + connect?: Prisma.ConsumerWhereUniqueInput | Prisma.ConsumerWhereUniqueInput[] + update?: Prisma.ConsumerUpdateWithWhereUniqueWithoutLicenseInput | Prisma.ConsumerUpdateWithWhereUniqueWithoutLicenseInput[] + updateMany?: Prisma.ConsumerUpdateManyWithWhereWithoutLicenseInput | Prisma.ConsumerUpdateManyWithWhereWithoutLicenseInput[] + deleteMany?: Prisma.ConsumerScalarWhereInput | Prisma.ConsumerScalarWhereInput[] +} + export type ConsumerCreateWithoutAccountsInput = { id?: string mobile_number: string @@ -415,6 +491,7 @@ export type ConsumerCreateWithoutAccountsInput = { status?: $Enums.ConsumerStatus created_at?: Date | string updated_at?: Date | string + license?: Prisma.LicenseCreateNestedOneWithoutConsumersInput businessActivities?: Prisma.BusinessActivityCreateNestedManyWithoutUserInput } @@ -424,6 +501,7 @@ export type ConsumerUncheckedCreateWithoutAccountsInput = { first_name: string last_name: string status?: $Enums.ConsumerStatus + license_id?: string | null created_at?: Date | string updated_at?: Date | string businessActivities?: Prisma.BusinessActivityUncheckedCreateNestedManyWithoutUserInput @@ -453,6 +531,7 @@ export type ConsumerUpdateWithoutAccountsInput = { status?: Prisma.EnumConsumerStatusFieldUpdateOperationsInput | $Enums.ConsumerStatus created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updated_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + license?: Prisma.LicenseUpdateOneWithoutConsumersNestedInput businessActivities?: Prisma.BusinessActivityUpdateManyWithoutUserNestedInput } @@ -462,6 +541,7 @@ export type ConsumerUncheckedUpdateWithoutAccountsInput = { first_name?: Prisma.StringFieldUpdateOperationsInput | string last_name?: Prisma.StringFieldUpdateOperationsInput | string status?: Prisma.EnumConsumerStatusFieldUpdateOperationsInput | $Enums.ConsumerStatus + license_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updated_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string businessActivities?: Prisma.BusinessActivityUncheckedUpdateManyWithoutUserNestedInput @@ -475,6 +555,7 @@ export type ConsumerCreateWithoutBusinessActivitiesInput = { status?: $Enums.ConsumerStatus created_at?: Date | string updated_at?: Date | string + license?: Prisma.LicenseCreateNestedOneWithoutConsumersInput accounts?: Prisma.ConsumerAccountCreateNestedManyWithoutUserInput } @@ -484,6 +565,7 @@ export type ConsumerUncheckedCreateWithoutBusinessActivitiesInput = { first_name: string last_name: string status?: $Enums.ConsumerStatus + license_id?: string | null created_at?: Date | string updated_at?: Date | string accounts?: Prisma.ConsumerAccountUncheckedCreateNestedManyWithoutUserInput @@ -513,6 +595,7 @@ export type ConsumerUpdateWithoutBusinessActivitiesInput = { status?: Prisma.EnumConsumerStatusFieldUpdateOperationsInput | $Enums.ConsumerStatus created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updated_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + license?: Prisma.LicenseUpdateOneWithoutConsumersNestedInput accounts?: Prisma.ConsumerAccountUpdateManyWithoutUserNestedInput } @@ -522,11 +605,120 @@ export type ConsumerUncheckedUpdateWithoutBusinessActivitiesInput = { first_name?: Prisma.StringFieldUpdateOperationsInput | string last_name?: Prisma.StringFieldUpdateOperationsInput | string status?: Prisma.EnumConsumerStatusFieldUpdateOperationsInput | $Enums.ConsumerStatus + license_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updated_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string accounts?: Prisma.ConsumerAccountUncheckedUpdateManyWithoutUserNestedInput } +export type ConsumerCreateWithoutLicenseInput = { + id?: string + mobile_number: string + first_name: string + last_name: string + status?: $Enums.ConsumerStatus + created_at?: Date | string + updated_at?: Date | string + accounts?: Prisma.ConsumerAccountCreateNestedManyWithoutUserInput + businessActivities?: Prisma.BusinessActivityCreateNestedManyWithoutUserInput +} + +export type ConsumerUncheckedCreateWithoutLicenseInput = { + id?: string + mobile_number: string + first_name: string + last_name: string + status?: $Enums.ConsumerStatus + created_at?: Date | string + updated_at?: Date | string + accounts?: Prisma.ConsumerAccountUncheckedCreateNestedManyWithoutUserInput + businessActivities?: Prisma.BusinessActivityUncheckedCreateNestedManyWithoutUserInput +} + +export type ConsumerCreateOrConnectWithoutLicenseInput = { + where: Prisma.ConsumerWhereUniqueInput + create: Prisma.XOR +} + +export type ConsumerCreateManyLicenseInputEnvelope = { + data: Prisma.ConsumerCreateManyLicenseInput | Prisma.ConsumerCreateManyLicenseInput[] + skipDuplicates?: boolean +} + +export type ConsumerUpsertWithWhereUniqueWithoutLicenseInput = { + where: Prisma.ConsumerWhereUniqueInput + update: Prisma.XOR + create: Prisma.XOR +} + +export type ConsumerUpdateWithWhereUniqueWithoutLicenseInput = { + where: Prisma.ConsumerWhereUniqueInput + data: Prisma.XOR +} + +export type ConsumerUpdateManyWithWhereWithoutLicenseInput = { + where: Prisma.ConsumerScalarWhereInput + data: Prisma.XOR +} + +export type ConsumerScalarWhereInput = { + AND?: Prisma.ConsumerScalarWhereInput | Prisma.ConsumerScalarWhereInput[] + OR?: Prisma.ConsumerScalarWhereInput[] + NOT?: Prisma.ConsumerScalarWhereInput | Prisma.ConsumerScalarWhereInput[] + id?: Prisma.StringFilter<"Consumer"> | string + mobile_number?: Prisma.StringFilter<"Consumer"> | string + first_name?: Prisma.StringFilter<"Consumer"> | string + last_name?: Prisma.StringFilter<"Consumer"> | string + status?: Prisma.EnumConsumerStatusFilter<"Consumer"> | $Enums.ConsumerStatus + license_id?: Prisma.StringNullableFilter<"Consumer"> | string | null + created_at?: Prisma.DateTimeFilter<"Consumer"> | Date | string + updated_at?: Prisma.DateTimeFilter<"Consumer"> | Date | string +} + +export type ConsumerCreateManyLicenseInput = { + id?: string + mobile_number: string + first_name: string + last_name: string + status?: $Enums.ConsumerStatus + created_at?: Date | string + updated_at?: Date | string +} + +export type ConsumerUpdateWithoutLicenseInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + mobile_number?: Prisma.StringFieldUpdateOperationsInput | string + first_name?: Prisma.StringFieldUpdateOperationsInput | string + last_name?: Prisma.StringFieldUpdateOperationsInput | string + status?: Prisma.EnumConsumerStatusFieldUpdateOperationsInput | $Enums.ConsumerStatus + created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updated_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + accounts?: Prisma.ConsumerAccountUpdateManyWithoutUserNestedInput + businessActivities?: Prisma.BusinessActivityUpdateManyWithoutUserNestedInput +} + +export type ConsumerUncheckedUpdateWithoutLicenseInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + mobile_number?: Prisma.StringFieldUpdateOperationsInput | string + first_name?: Prisma.StringFieldUpdateOperationsInput | string + last_name?: Prisma.StringFieldUpdateOperationsInput | string + status?: Prisma.EnumConsumerStatusFieldUpdateOperationsInput | $Enums.ConsumerStatus + created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updated_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + accounts?: Prisma.ConsumerAccountUncheckedUpdateManyWithoutUserNestedInput + businessActivities?: Prisma.BusinessActivityUncheckedUpdateManyWithoutUserNestedInput +} + +export type ConsumerUncheckedUpdateManyWithoutLicenseInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + mobile_number?: Prisma.StringFieldUpdateOperationsInput | string + first_name?: Prisma.StringFieldUpdateOperationsInput | string + last_name?: Prisma.StringFieldUpdateOperationsInput | string + status?: Prisma.EnumConsumerStatusFieldUpdateOperationsInput | $Enums.ConsumerStatus + created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updated_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string +} + /** * Count Type ConsumerCountOutputType @@ -573,8 +765,10 @@ export type ConsumerSelect accounts?: boolean | Prisma.Consumer$accountsArgs businessActivities?: boolean | Prisma.Consumer$businessActivitiesArgs _count?: boolean | Prisma.ConsumerCountOutputTypeDefaultArgs @@ -588,12 +782,14 @@ export type ConsumerSelectScalar = { first_name?: boolean last_name?: boolean status?: boolean + license_id?: boolean created_at?: boolean updated_at?: boolean } -export type ConsumerOmit = runtime.Types.Extensions.GetOmit<"id" | "mobile_number" | "first_name" | "last_name" | "status" | "created_at" | "updated_at", ExtArgs["result"]["consumer"]> +export type ConsumerOmit = runtime.Types.Extensions.GetOmit<"id" | "mobile_number" | "first_name" | "last_name" | "status" | "license_id" | "created_at" | "updated_at", ExtArgs["result"]["consumer"]> export type ConsumerInclude = { + license?: boolean | Prisma.Consumer$licenseArgs accounts?: boolean | Prisma.Consumer$accountsArgs businessActivities?: boolean | Prisma.Consumer$businessActivitiesArgs _count?: boolean | Prisma.ConsumerCountOutputTypeDefaultArgs @@ -602,6 +798,7 @@ export type ConsumerInclude = { name: "Consumer" objects: { + license: Prisma.$LicensePayload | null accounts: Prisma.$ConsumerAccountPayload[] businessActivities: Prisma.$BusinessActivityPayload[] } @@ -611,6 +808,7 @@ export type $ConsumerPayload @@ -953,6 +1151,7 @@ readonly fields: ConsumerFieldRefs; */ export interface Prisma__ConsumerClient extends Prisma.PrismaPromise { readonly [Symbol.toStringTag]: "PrismaPromise" + license = {}>(args?: Prisma.Subset>): Prisma.Prisma__LicenseClient, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> accounts = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> businessActivities = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> /** @@ -989,6 +1188,7 @@ export interface ConsumerFieldRefs { readonly first_name: Prisma.FieldRef<"Consumer", 'String'> readonly last_name: Prisma.FieldRef<"Consumer", 'String'> readonly status: Prisma.FieldRef<"Consumer", 'ConsumerStatus'> + readonly license_id: Prisma.FieldRef<"Consumer", 'String'> readonly created_at: Prisma.FieldRef<"Consumer", 'DateTime'> readonly updated_at: Prisma.FieldRef<"Consumer", 'DateTime'> } @@ -1333,6 +1533,25 @@ export type ConsumerDeleteManyArgs = { + /** + * Select specific fields to fetch from the License + */ + select?: Prisma.LicenseSelect | null + /** + * Omit specific fields from the License + */ + omit?: Prisma.LicenseOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.LicenseInclude | null + where?: Prisma.LicenseWhereInput +} + /** * Consumer.accounts */ diff --git a/src/generated/prisma/models/License.ts b/src/generated/prisma/models/License.ts index 646510a..343b070 100644 --- a/src/generated/prisma/models/License.ts +++ b/src/generated/prisma/models/License.ts @@ -31,7 +31,6 @@ export type LicenseMinAggregateOutputType = { status: $Enums.LicenseStatus | null created_at: Date | null updated_at: Date | null - pos_id: string | null partner_id: string | null } @@ -42,7 +41,6 @@ export type LicenseMaxAggregateOutputType = { status: $Enums.LicenseStatus | null created_at: Date | null updated_at: Date | null - pos_id: string | null partner_id: string | null } @@ -53,7 +51,6 @@ export type LicenseCountAggregateOutputType = { status: number created_at: number updated_at: number - pos_id: number partner_id: number _all: number } @@ -66,7 +63,6 @@ export type LicenseMinAggregateInputType = { status?: true created_at?: true updated_at?: true - pos_id?: true partner_id?: true } @@ -77,7 +73,6 @@ export type LicenseMaxAggregateInputType = { status?: true created_at?: true updated_at?: true - pos_id?: true partner_id?: true } @@ -88,7 +83,6 @@ export type LicenseCountAggregateInputType = { status?: true created_at?: true updated_at?: true - pos_id?: true partner_id?: true _all?: true } @@ -172,8 +166,7 @@ export type LicenseGroupByOutputType = { status: $Enums.LicenseStatus created_at: Date updated_at: Date - pos_id: string - partner_id: string + partner_id: string | null _count: LicenseCountAggregateOutputType | null _min: LicenseMinAggregateOutputType | null _max: LicenseMaxAggregateOutputType | null @@ -204,10 +197,9 @@ export type LicenseWhereInput = { status?: Prisma.EnumLicenseStatusFilter<"License"> | $Enums.LicenseStatus created_at?: Prisma.DateTimeFilter<"License"> | Date | string updated_at?: Prisma.DateTimeFilter<"License"> | Date | string - pos_id?: Prisma.StringFilter<"License"> | string - partner_id?: Prisma.StringFilter<"License"> | string - pos?: Prisma.XOR - partner?: Prisma.XOR + partner_id?: Prisma.StringNullableFilter<"License"> | string | null + partner?: Prisma.XOR | null + consumers?: Prisma.ConsumerListRelationFilter } export type LicenseOrderByWithRelationInput = { @@ -217,10 +209,9 @@ export type LicenseOrderByWithRelationInput = { status?: Prisma.SortOrder created_at?: Prisma.SortOrder updated_at?: Prisma.SortOrder - pos_id?: Prisma.SortOrder - partner_id?: Prisma.SortOrder - pos?: Prisma.PosOrderByWithRelationInput + partner_id?: Prisma.SortOrderInput | Prisma.SortOrder partner?: Prisma.PartnerOrderByWithRelationInput + consumers?: Prisma.ConsumerOrderByRelationAggregateInput _relevance?: Prisma.LicenseOrderByRelevanceInput } @@ -234,10 +225,9 @@ export type LicenseWhereUniqueInput = Prisma.AtLeast<{ status?: Prisma.EnumLicenseStatusFilter<"License"> | $Enums.LicenseStatus created_at?: Prisma.DateTimeFilter<"License"> | Date | string updated_at?: Prisma.DateTimeFilter<"License"> | Date | string - pos_id?: Prisma.StringFilter<"License"> | string - partner_id?: Prisma.StringFilter<"License"> | string - pos?: Prisma.XOR - partner?: Prisma.XOR + partner_id?: Prisma.StringNullableFilter<"License"> | string | null + partner?: Prisma.XOR | null + consumers?: Prisma.ConsumerListRelationFilter }, "id"> export type LicenseOrderByWithAggregationInput = { @@ -247,8 +237,7 @@ export type LicenseOrderByWithAggregationInput = { status?: Prisma.SortOrder created_at?: Prisma.SortOrder updated_at?: Prisma.SortOrder - pos_id?: Prisma.SortOrder - partner_id?: Prisma.SortOrder + partner_id?: Prisma.SortOrderInput | Prisma.SortOrder _count?: Prisma.LicenseCountOrderByAggregateInput _max?: Prisma.LicenseMaxOrderByAggregateInput _min?: Prisma.LicenseMinOrderByAggregateInput @@ -264,8 +253,7 @@ export type LicenseScalarWhereWithAggregatesInput = { status?: Prisma.EnumLicenseStatusWithAggregatesFilter<"License"> | $Enums.LicenseStatus created_at?: Prisma.DateTimeWithAggregatesFilter<"License"> | Date | string updated_at?: Prisma.DateTimeWithAggregatesFilter<"License"> | Date | string - pos_id?: Prisma.StringWithAggregatesFilter<"License"> | string - partner_id?: Prisma.StringWithAggregatesFilter<"License"> | string + partner_id?: Prisma.StringNullableWithAggregatesFilter<"License"> | string | null } export type LicenseCreateInput = { @@ -275,8 +263,8 @@ export type LicenseCreateInput = { status: $Enums.LicenseStatus created_at?: Date | string updated_at?: Date | string - pos: Prisma.PosCreateNestedOneWithoutLicensesInput - partner: Prisma.PartnerCreateNestedOneWithoutLicensesInput + partner?: Prisma.PartnerCreateNestedOneWithoutLicensesInput + consumers?: Prisma.ConsumerCreateNestedManyWithoutLicenseInput } export type LicenseUncheckedCreateInput = { @@ -286,8 +274,8 @@ export type LicenseUncheckedCreateInput = { status: $Enums.LicenseStatus created_at?: Date | string updated_at?: Date | string - pos_id: string - partner_id: string + partner_id?: string | null + consumers?: Prisma.ConsumerUncheckedCreateNestedManyWithoutLicenseInput } export type LicenseUpdateInput = { @@ -297,8 +285,8 @@ export type LicenseUpdateInput = { status?: Prisma.EnumLicenseStatusFieldUpdateOperationsInput | $Enums.LicenseStatus created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updated_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - pos?: Prisma.PosUpdateOneRequiredWithoutLicensesNestedInput - partner?: Prisma.PartnerUpdateOneRequiredWithoutLicensesNestedInput + partner?: Prisma.PartnerUpdateOneWithoutLicensesNestedInput + consumers?: Prisma.ConsumerUpdateManyWithoutLicenseNestedInput } export type LicenseUncheckedUpdateInput = { @@ -308,8 +296,8 @@ export type LicenseUncheckedUpdateInput = { status?: Prisma.EnumLicenseStatusFieldUpdateOperationsInput | $Enums.LicenseStatus created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updated_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - pos_id?: Prisma.StringFieldUpdateOperationsInput | string - partner_id?: Prisma.StringFieldUpdateOperationsInput | string + partner_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + consumers?: Prisma.ConsumerUncheckedUpdateManyWithoutLicenseNestedInput } export type LicenseCreateManyInput = { @@ -319,8 +307,7 @@ export type LicenseCreateManyInput = { status: $Enums.LicenseStatus created_at?: Date | string updated_at?: Date | string - pos_id: string - partner_id: string + partner_id?: string | null } export type LicenseUpdateManyMutationInput = { @@ -339,18 +326,12 @@ export type LicenseUncheckedUpdateManyInput = { status?: Prisma.EnumLicenseStatusFieldUpdateOperationsInput | $Enums.LicenseStatus created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updated_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - pos_id?: Prisma.StringFieldUpdateOperationsInput | string - partner_id?: Prisma.StringFieldUpdateOperationsInput | string + partner_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null } -export type LicenseListRelationFilter = { - every?: Prisma.LicenseWhereInput - some?: Prisma.LicenseWhereInput - none?: Prisma.LicenseWhereInput -} - -export type LicenseOrderByRelationAggregateInput = { - _count?: Prisma.SortOrder +export type LicenseNullableScalarRelationFilter = { + is?: Prisma.LicenseWhereInput | null + isNot?: Prisma.LicenseWhereInput | null } export type LicenseOrderByRelevanceInput = { @@ -366,7 +347,6 @@ export type LicenseCountOrderByAggregateInput = { status?: Prisma.SortOrder created_at?: Prisma.SortOrder updated_at?: Prisma.SortOrder - pos_id?: Prisma.SortOrder partner_id?: Prisma.SortOrder } @@ -377,7 +357,6 @@ export type LicenseMaxOrderByAggregateInput = { status?: Prisma.SortOrder created_at?: Prisma.SortOrder updated_at?: Prisma.SortOrder - pos_id?: Prisma.SortOrder partner_id?: Prisma.SortOrder } @@ -388,50 +367,33 @@ export type LicenseMinOrderByAggregateInput = { status?: Prisma.SortOrder created_at?: Prisma.SortOrder updated_at?: Prisma.SortOrder - pos_id?: Prisma.SortOrder partner_id?: Prisma.SortOrder } -export type LicenseCreateNestedManyWithoutPosInput = { - create?: Prisma.XOR | Prisma.LicenseCreateWithoutPosInput[] | Prisma.LicenseUncheckedCreateWithoutPosInput[] - connectOrCreate?: Prisma.LicenseCreateOrConnectWithoutPosInput | Prisma.LicenseCreateOrConnectWithoutPosInput[] - createMany?: Prisma.LicenseCreateManyPosInputEnvelope - connect?: Prisma.LicenseWhereUniqueInput | Prisma.LicenseWhereUniqueInput[] +export type LicenseListRelationFilter = { + every?: Prisma.LicenseWhereInput + some?: Prisma.LicenseWhereInput + none?: Prisma.LicenseWhereInput } -export type LicenseUncheckedCreateNestedManyWithoutPosInput = { - create?: Prisma.XOR | Prisma.LicenseCreateWithoutPosInput[] | Prisma.LicenseUncheckedCreateWithoutPosInput[] - connectOrCreate?: Prisma.LicenseCreateOrConnectWithoutPosInput | Prisma.LicenseCreateOrConnectWithoutPosInput[] - createMany?: Prisma.LicenseCreateManyPosInputEnvelope - connect?: Prisma.LicenseWhereUniqueInput | Prisma.LicenseWhereUniqueInput[] +export type LicenseOrderByRelationAggregateInput = { + _count?: Prisma.SortOrder } -export type LicenseUpdateManyWithoutPosNestedInput = { - create?: Prisma.XOR | Prisma.LicenseCreateWithoutPosInput[] | Prisma.LicenseUncheckedCreateWithoutPosInput[] - connectOrCreate?: Prisma.LicenseCreateOrConnectWithoutPosInput | Prisma.LicenseCreateOrConnectWithoutPosInput[] - upsert?: Prisma.LicenseUpsertWithWhereUniqueWithoutPosInput | Prisma.LicenseUpsertWithWhereUniqueWithoutPosInput[] - createMany?: Prisma.LicenseCreateManyPosInputEnvelope - set?: Prisma.LicenseWhereUniqueInput | Prisma.LicenseWhereUniqueInput[] - disconnect?: Prisma.LicenseWhereUniqueInput | Prisma.LicenseWhereUniqueInput[] - delete?: Prisma.LicenseWhereUniqueInput | Prisma.LicenseWhereUniqueInput[] - connect?: Prisma.LicenseWhereUniqueInput | Prisma.LicenseWhereUniqueInput[] - update?: Prisma.LicenseUpdateWithWhereUniqueWithoutPosInput | Prisma.LicenseUpdateWithWhereUniqueWithoutPosInput[] - updateMany?: Prisma.LicenseUpdateManyWithWhereWithoutPosInput | Prisma.LicenseUpdateManyWithWhereWithoutPosInput[] - deleteMany?: Prisma.LicenseScalarWhereInput | Prisma.LicenseScalarWhereInput[] +export type LicenseCreateNestedOneWithoutConsumersInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.LicenseCreateOrConnectWithoutConsumersInput + connect?: Prisma.LicenseWhereUniqueInput } -export type LicenseUncheckedUpdateManyWithoutPosNestedInput = { - create?: Prisma.XOR | Prisma.LicenseCreateWithoutPosInput[] | Prisma.LicenseUncheckedCreateWithoutPosInput[] - connectOrCreate?: Prisma.LicenseCreateOrConnectWithoutPosInput | Prisma.LicenseCreateOrConnectWithoutPosInput[] - upsert?: Prisma.LicenseUpsertWithWhereUniqueWithoutPosInput | Prisma.LicenseUpsertWithWhereUniqueWithoutPosInput[] - createMany?: Prisma.LicenseCreateManyPosInputEnvelope - set?: Prisma.LicenseWhereUniqueInput | Prisma.LicenseWhereUniqueInput[] - disconnect?: Prisma.LicenseWhereUniqueInput | Prisma.LicenseWhereUniqueInput[] - delete?: Prisma.LicenseWhereUniqueInput | Prisma.LicenseWhereUniqueInput[] - connect?: Prisma.LicenseWhereUniqueInput | Prisma.LicenseWhereUniqueInput[] - update?: Prisma.LicenseUpdateWithWhereUniqueWithoutPosInput | Prisma.LicenseUpdateWithWhereUniqueWithoutPosInput[] - updateMany?: Prisma.LicenseUpdateManyWithWhereWithoutPosInput | Prisma.LicenseUpdateManyWithWhereWithoutPosInput[] - deleteMany?: Prisma.LicenseScalarWhereInput | Prisma.LicenseScalarWhereInput[] +export type LicenseUpdateOneWithoutConsumersNestedInput = { + create?: Prisma.XOR + connectOrCreate?: Prisma.LicenseCreateOrConnectWithoutConsumersInput + upsert?: Prisma.LicenseUpsertWithoutConsumersInput + disconnect?: Prisma.LicenseWhereInput | boolean + delete?: Prisma.LicenseWhereInput | boolean + connect?: Prisma.LicenseWhereUniqueInput + update?: Prisma.XOR, Prisma.LicenseUncheckedUpdateWithoutConsumersInput> } export type EnumLicenseStatusFieldUpdateOperationsInput = { @@ -480,64 +442,60 @@ export type LicenseUncheckedUpdateManyWithoutPartnerNestedInput = { deleteMany?: Prisma.LicenseScalarWhereInput | Prisma.LicenseScalarWhereInput[] } -export type LicenseCreateWithoutPosInput = { +export type LicenseCreateWithoutConsumersInput = { id?: string starts_at: Date | string expires_at: Date | string status: $Enums.LicenseStatus created_at?: Date | string updated_at?: Date | string - partner: Prisma.PartnerCreateNestedOneWithoutLicensesInput + partner?: Prisma.PartnerCreateNestedOneWithoutLicensesInput } -export type LicenseUncheckedCreateWithoutPosInput = { +export type LicenseUncheckedCreateWithoutConsumersInput = { id?: string starts_at: Date | string expires_at: Date | string status: $Enums.LicenseStatus created_at?: Date | string updated_at?: Date | string - partner_id: string + partner_id?: string | null } -export type LicenseCreateOrConnectWithoutPosInput = { +export type LicenseCreateOrConnectWithoutConsumersInput = { where: Prisma.LicenseWhereUniqueInput - create: Prisma.XOR + create: Prisma.XOR } -export type LicenseCreateManyPosInputEnvelope = { - data: Prisma.LicenseCreateManyPosInput | Prisma.LicenseCreateManyPosInput[] - skipDuplicates?: boolean +export type LicenseUpsertWithoutConsumersInput = { + update: Prisma.XOR + create: Prisma.XOR + where?: Prisma.LicenseWhereInput } -export type LicenseUpsertWithWhereUniqueWithoutPosInput = { - where: Prisma.LicenseWhereUniqueInput - update: Prisma.XOR - create: Prisma.XOR +export type LicenseUpdateToOneWithWhereWithoutConsumersInput = { + where?: Prisma.LicenseWhereInput + data: Prisma.XOR } -export type LicenseUpdateWithWhereUniqueWithoutPosInput = { - where: Prisma.LicenseWhereUniqueInput - data: Prisma.XOR +export type LicenseUpdateWithoutConsumersInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + starts_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + expires_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + status?: Prisma.EnumLicenseStatusFieldUpdateOperationsInput | $Enums.LicenseStatus + created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updated_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + partner?: Prisma.PartnerUpdateOneWithoutLicensesNestedInput } -export type LicenseUpdateManyWithWhereWithoutPosInput = { - where: Prisma.LicenseScalarWhereInput - data: Prisma.XOR -} - -export type LicenseScalarWhereInput = { - AND?: Prisma.LicenseScalarWhereInput | Prisma.LicenseScalarWhereInput[] - OR?: Prisma.LicenseScalarWhereInput[] - NOT?: Prisma.LicenseScalarWhereInput | Prisma.LicenseScalarWhereInput[] - id?: Prisma.StringFilter<"License"> | string - starts_at?: Prisma.DateTimeFilter<"License"> | Date | string - expires_at?: Prisma.DateTimeFilter<"License"> | Date | string - status?: Prisma.EnumLicenseStatusFilter<"License"> | $Enums.LicenseStatus - created_at?: Prisma.DateTimeFilter<"License"> | Date | string - updated_at?: Prisma.DateTimeFilter<"License"> | Date | string - pos_id?: Prisma.StringFilter<"License"> | string - partner_id?: Prisma.StringFilter<"License"> | string +export type LicenseUncheckedUpdateWithoutConsumersInput = { + id?: Prisma.StringFieldUpdateOperationsInput | string + starts_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + expires_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + status?: Prisma.EnumLicenseStatusFieldUpdateOperationsInput | $Enums.LicenseStatus + created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + updated_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + partner_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null } export type LicenseCreateWithoutPartnerInput = { @@ -547,7 +505,7 @@ export type LicenseCreateWithoutPartnerInput = { status: $Enums.LicenseStatus created_at?: Date | string updated_at?: Date | string - pos: Prisma.PosCreateNestedOneWithoutLicensesInput + consumers?: Prisma.ConsumerCreateNestedManyWithoutLicenseInput } export type LicenseUncheckedCreateWithoutPartnerInput = { @@ -557,7 +515,7 @@ export type LicenseUncheckedCreateWithoutPartnerInput = { status: $Enums.LicenseStatus created_at?: Date | string updated_at?: Date | string - pos_id: string + consumers?: Prisma.ConsumerUncheckedCreateNestedManyWithoutLicenseInput } export type LicenseCreateOrConnectWithoutPartnerInput = { @@ -586,44 +544,17 @@ export type LicenseUpdateManyWithWhereWithoutPartnerInput = { data: Prisma.XOR } -export type LicenseCreateManyPosInput = { - id?: string - starts_at: Date | string - expires_at: Date | string - status: $Enums.LicenseStatus - created_at?: Date | string - updated_at?: Date | string - partner_id: string -} - -export type LicenseUpdateWithoutPosInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - starts_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - expires_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - status?: Prisma.EnumLicenseStatusFieldUpdateOperationsInput | $Enums.LicenseStatus - created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updated_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - partner?: Prisma.PartnerUpdateOneRequiredWithoutLicensesNestedInput -} - -export type LicenseUncheckedUpdateWithoutPosInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - starts_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - expires_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - status?: Prisma.EnumLicenseStatusFieldUpdateOperationsInput | $Enums.LicenseStatus - created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updated_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - partner_id?: Prisma.StringFieldUpdateOperationsInput | string -} - -export type LicenseUncheckedUpdateManyWithoutPosInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - starts_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - expires_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - status?: Prisma.EnumLicenseStatusFieldUpdateOperationsInput | $Enums.LicenseStatus - created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updated_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - partner_id?: Prisma.StringFieldUpdateOperationsInput | string +export type LicenseScalarWhereInput = { + AND?: Prisma.LicenseScalarWhereInput | Prisma.LicenseScalarWhereInput[] + OR?: Prisma.LicenseScalarWhereInput[] + NOT?: Prisma.LicenseScalarWhereInput | Prisma.LicenseScalarWhereInput[] + id?: Prisma.StringFilter<"License"> | string + starts_at?: Prisma.DateTimeFilter<"License"> | Date | string + expires_at?: Prisma.DateTimeFilter<"License"> | Date | string + status?: Prisma.EnumLicenseStatusFilter<"License"> | $Enums.LicenseStatus + created_at?: Prisma.DateTimeFilter<"License"> | Date | string + updated_at?: Prisma.DateTimeFilter<"License"> | Date | string + partner_id?: Prisma.StringNullableFilter<"License"> | string | null } export type LicenseCreateManyPartnerInput = { @@ -633,7 +564,6 @@ export type LicenseCreateManyPartnerInput = { status: $Enums.LicenseStatus created_at?: Date | string updated_at?: Date | string - pos_id: string } export type LicenseUpdateWithoutPartnerInput = { @@ -643,7 +573,7 @@ export type LicenseUpdateWithoutPartnerInput = { status?: Prisma.EnumLicenseStatusFieldUpdateOperationsInput | $Enums.LicenseStatus created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updated_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - pos?: Prisma.PosUpdateOneRequiredWithoutLicensesNestedInput + consumers?: Prisma.ConsumerUpdateManyWithoutLicenseNestedInput } export type LicenseUncheckedUpdateWithoutPartnerInput = { @@ -653,7 +583,7 @@ export type LicenseUncheckedUpdateWithoutPartnerInput = { status?: Prisma.EnumLicenseStatusFieldUpdateOperationsInput | $Enums.LicenseStatus created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updated_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - pos_id?: Prisma.StringFieldUpdateOperationsInput | string + consumers?: Prisma.ConsumerUncheckedUpdateManyWithoutLicenseNestedInput } export type LicenseUncheckedUpdateManyWithoutPartnerInput = { @@ -663,10 +593,38 @@ export type LicenseUncheckedUpdateManyWithoutPartnerInput = { status?: Prisma.EnumLicenseStatusFieldUpdateOperationsInput | $Enums.LicenseStatus created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string updated_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - pos_id?: Prisma.StringFieldUpdateOperationsInput | string } +/** + * Count Type LicenseCountOutputType + */ + +export type LicenseCountOutputType = { + consumers: number +} + +export type LicenseCountOutputTypeSelect = { + consumers?: boolean | LicenseCountOutputTypeCountConsumersArgs +} + +/** + * LicenseCountOutputType without action + */ +export type LicenseCountOutputTypeDefaultArgs = { + /** + * Select specific fields to fetch from the LicenseCountOutputType + */ + select?: Prisma.LicenseCountOutputTypeSelect | null +} + +/** + * LicenseCountOutputType without action + */ +export type LicenseCountOutputTypeCountConsumersArgs = { + where?: Prisma.ConsumerWhereInput +} + export type LicenseSelect = runtime.Types.Extensions.GetSelect<{ id?: boolean @@ -675,10 +633,10 @@ export type LicenseSelect - partner?: boolean | Prisma.PartnerDefaultArgs + partner?: boolean | Prisma.License$partnerArgs + consumers?: boolean | Prisma.License$consumersArgs + _count?: boolean | Prisma.LicenseCountOutputTypeDefaultArgs }, ExtArgs["result"]["license"]> @@ -690,21 +648,21 @@ export type LicenseSelectScalar = { status?: boolean created_at?: boolean updated_at?: boolean - pos_id?: boolean partner_id?: boolean } -export type LicenseOmit = runtime.Types.Extensions.GetOmit<"id" | "starts_at" | "expires_at" | "status" | "created_at" | "updated_at" | "pos_id" | "partner_id", ExtArgs["result"]["license"]> +export type LicenseOmit = runtime.Types.Extensions.GetOmit<"id" | "starts_at" | "expires_at" | "status" | "created_at" | "updated_at" | "partner_id", ExtArgs["result"]["license"]> export type LicenseInclude = { - pos?: boolean | Prisma.PosDefaultArgs - partner?: boolean | Prisma.PartnerDefaultArgs + partner?: boolean | Prisma.License$partnerArgs + consumers?: boolean | Prisma.License$consumersArgs + _count?: boolean | Prisma.LicenseCountOutputTypeDefaultArgs } export type $LicensePayload = { name: "License" objects: { - pos: Prisma.$PosPayload - partner: Prisma.$PartnerPayload + partner: Prisma.$PartnerPayload | null + consumers: Prisma.$ConsumerPayload[] } scalars: runtime.Types.Extensions.GetPayloadResult<{ id: string @@ -713,8 +671,7 @@ export type $LicensePayload composites: {} } @@ -1055,8 +1012,8 @@ readonly fields: LicenseFieldRefs; */ export interface Prisma__LicenseClient extends Prisma.PrismaPromise { readonly [Symbol.toStringTag]: "PrismaPromise" - pos = {}>(args?: Prisma.Subset>): Prisma.Prisma__PosClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> - partner = {}>(args?: Prisma.Subset>): Prisma.Prisma__PartnerClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> + partner = {}>(args?: Prisma.Subset>): Prisma.Prisma__PartnerClient, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> + consumers = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> /** * Attaches callbacks for the resolution and/or rejection of the Promise. * @param onfulfilled The callback to execute when the Promise is resolved. @@ -1092,7 +1049,6 @@ export interface LicenseFieldRefs { readonly status: Prisma.FieldRef<"License", 'LicenseStatus'> readonly created_at: Prisma.FieldRef<"License", 'DateTime'> readonly updated_at: Prisma.FieldRef<"License", 'DateTime'> - readonly pos_id: Prisma.FieldRef<"License", 'String'> readonly partner_id: Prisma.FieldRef<"License", 'String'> } @@ -1436,6 +1392,49 @@ export type LicenseDeleteManyArgs = { + /** + * Select specific fields to fetch from the Partner + */ + select?: Prisma.PartnerSelect | null + /** + * Omit specific fields from the Partner + */ + omit?: Prisma.PartnerOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.PartnerInclude | null + where?: Prisma.PartnerWhereInput +} + +/** + * License.consumers + */ +export type License$consumersArgs = { + /** + * Select specific fields to fetch from the Consumer + */ + select?: Prisma.ConsumerSelect | null + /** + * Omit specific fields from the Consumer + */ + omit?: Prisma.ConsumerOmit | null + /** + * Choose, which related nodes to fetch as well + */ + include?: Prisma.ConsumerInclude | null + where?: Prisma.ConsumerWhereInput + orderBy?: Prisma.ConsumerOrderByWithRelationInput | Prisma.ConsumerOrderByWithRelationInput[] + cursor?: Prisma.ConsumerWhereUniqueInput + take?: number + skip?: number + distinct?: Prisma.ConsumerScalarFieldEnum | Prisma.ConsumerScalarFieldEnum[] +} + /** * License without action */ diff --git a/src/generated/prisma/models/Partner.ts b/src/generated/prisma/models/Partner.ts index 71cd34b..e75e0b2 100644 --- a/src/generated/prisma/models/Partner.ts +++ b/src/generated/prisma/models/Partner.ts @@ -370,9 +370,9 @@ export type PartnerUncheckedUpdateManyInput = { updated_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string } -export type PartnerScalarRelationFilter = { - is?: Prisma.PartnerWhereInput - isNot?: Prisma.PartnerWhereInput +export type PartnerNullableScalarRelationFilter = { + is?: Prisma.PartnerWhereInput | null + isNot?: Prisma.PartnerWhereInput | null } export type PartnerOrderByRelevanceInput = { @@ -419,16 +419,23 @@ export type PartnerSumOrderByAggregateInput = { license_quota?: Prisma.SortOrder } +export type PartnerScalarRelationFilter = { + is?: Prisma.PartnerWhereInput + isNot?: Prisma.PartnerWhereInput +} + export type PartnerCreateNestedOneWithoutLicensesInput = { create?: Prisma.XOR connectOrCreate?: Prisma.PartnerCreateOrConnectWithoutLicensesInput connect?: Prisma.PartnerWhereUniqueInput } -export type PartnerUpdateOneRequiredWithoutLicensesNestedInput = { +export type PartnerUpdateOneWithoutLicensesNestedInput = { create?: Prisma.XOR connectOrCreate?: Prisma.PartnerCreateOrConnectWithoutLicensesInput upsert?: Prisma.PartnerUpsertWithoutLicensesInput + disconnect?: Prisma.PartnerWhereInput | boolean + delete?: Prisma.PartnerWhereInput | boolean connect?: Prisma.PartnerWhereUniqueInput update?: Prisma.XOR, Prisma.PartnerUncheckedUpdateWithoutLicensesInput> } diff --git a/src/generated/prisma/models/Pos.ts b/src/generated/prisma/models/Pos.ts index 5711d01..51b41e4 100644 --- a/src/generated/prisma/models/Pos.ts +++ b/src/generated/prisma/models/Pos.ts @@ -233,7 +233,6 @@ export type PosWhereInput = { complex?: Prisma.XOR device?: Prisma.XOR | null provider?: Prisma.XOR | null - licenses?: Prisma.LicenseListRelationFilter permissionPos?: Prisma.PermissionPosListRelationFilter salesInvoices?: Prisma.SalesInvoiceListRelationFilter } @@ -253,7 +252,6 @@ export type PosOrderByWithRelationInput = { complex?: Prisma.ComplexOrderByWithRelationInput device?: Prisma.DeviceOrderByWithRelationInput provider?: Prisma.ProviderOrderByWithRelationInput - licenses?: Prisma.LicenseOrderByRelationAggregateInput permissionPos?: Prisma.PermissionPosOrderByRelationAggregateInput salesInvoices?: Prisma.SalesInvoiceOrderByRelationAggregateInput _relevance?: Prisma.PosOrderByRelevanceInput @@ -277,7 +275,6 @@ export type PosWhereUniqueInput = Prisma.AtLeast<{ complex?: Prisma.XOR device?: Prisma.XOR | null provider?: Prisma.XOR | null - licenses?: Prisma.LicenseListRelationFilter permissionPos?: Prisma.PermissionPosListRelationFilter salesInvoices?: Prisma.SalesInvoiceListRelationFilter }, "id" | "serial"> @@ -328,7 +325,6 @@ export type PosCreateInput = { complex: Prisma.ComplexCreateNestedOneWithoutPos_listInput device?: Prisma.DeviceCreateNestedOneWithoutPosesInput provider?: Prisma.ProviderCreateNestedOneWithoutPos_listInput - licenses?: Prisma.LicenseCreateNestedManyWithoutPosInput permissionPos?: Prisma.PermissionPosCreateNestedManyWithoutPosInput salesInvoices?: Prisma.SalesInvoiceCreateNestedManyWithoutPosInput } @@ -345,7 +341,6 @@ export type PosUncheckedCreateInput = { complex_id: string device_id?: string | null provider_id?: string | null - licenses?: Prisma.LicenseUncheckedCreateNestedManyWithoutPosInput permissionPos?: Prisma.PermissionPosUncheckedCreateNestedManyWithoutPosInput salesInvoices?: Prisma.SalesInvoiceUncheckedCreateNestedManyWithoutPosInput } @@ -362,7 +357,6 @@ export type PosUpdateInput = { complex?: Prisma.ComplexUpdateOneRequiredWithoutPos_listNestedInput device?: Prisma.DeviceUpdateOneWithoutPosesNestedInput provider?: Prisma.ProviderUpdateOneWithoutPos_listNestedInput - licenses?: Prisma.LicenseUpdateManyWithoutPosNestedInput permissionPos?: Prisma.PermissionPosUpdateManyWithoutPosNestedInput salesInvoices?: Prisma.SalesInvoiceUpdateManyWithoutPosNestedInput } @@ -379,7 +373,6 @@ export type PosUncheckedUpdateInput = { complex_id?: Prisma.StringFieldUpdateOperationsInput | string device_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null provider_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - licenses?: Prisma.LicenseUncheckedUpdateManyWithoutPosNestedInput permissionPos?: Prisma.PermissionPosUncheckedUpdateManyWithoutPosNestedInput salesInvoices?: Prisma.SalesInvoiceUncheckedUpdateManyWithoutPosNestedInput } @@ -578,20 +571,6 @@ export type PosUncheckedUpdateManyWithoutDeviceNestedInput = { deleteMany?: Prisma.PosScalarWhereInput | Prisma.PosScalarWhereInput[] } -export type PosCreateNestedOneWithoutLicensesInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.PosCreateOrConnectWithoutLicensesInput - connect?: Prisma.PosWhereUniqueInput -} - -export type PosUpdateOneRequiredWithoutLicensesNestedInput = { - create?: Prisma.XOR - connectOrCreate?: Prisma.PosCreateOrConnectWithoutLicensesInput - upsert?: Prisma.PosUpsertWithoutLicensesInput - connect?: Prisma.PosWhereUniqueInput - update?: Prisma.XOR, Prisma.PosUncheckedUpdateWithoutLicensesInput> -} - export type PosCreateNestedOneWithoutPermissionPosInput = { create?: Prisma.XOR connectOrCreate?: Prisma.PosCreateOrConnectWithoutPermissionPosInput @@ -673,7 +652,6 @@ export type PosCreateWithoutComplexInput = { updated_at?: Date | string device?: Prisma.DeviceCreateNestedOneWithoutPosesInput provider?: Prisma.ProviderCreateNestedOneWithoutPos_listInput - licenses?: Prisma.LicenseCreateNestedManyWithoutPosInput permissionPos?: Prisma.PermissionPosCreateNestedManyWithoutPosInput salesInvoices?: Prisma.SalesInvoiceCreateNestedManyWithoutPosInput } @@ -689,7 +667,6 @@ export type PosUncheckedCreateWithoutComplexInput = { updated_at?: Date | string device_id?: string | null provider_id?: string | null - licenses?: Prisma.LicenseUncheckedCreateNestedManyWithoutPosInput permissionPos?: Prisma.PermissionPosUncheckedCreateNestedManyWithoutPosInput salesInvoices?: Prisma.SalesInvoiceUncheckedCreateNestedManyWithoutPosInput } @@ -748,7 +725,6 @@ export type PosCreateWithoutDeviceInput = { updated_at?: Date | string complex: Prisma.ComplexCreateNestedOneWithoutPos_listInput provider?: Prisma.ProviderCreateNestedOneWithoutPos_listInput - licenses?: Prisma.LicenseCreateNestedManyWithoutPosInput permissionPos?: Prisma.PermissionPosCreateNestedManyWithoutPosInput salesInvoices?: Prisma.SalesInvoiceCreateNestedManyWithoutPosInput } @@ -764,7 +740,6 @@ export type PosUncheckedCreateWithoutDeviceInput = { updated_at?: Date | string complex_id: string provider_id?: string | null - licenses?: Prisma.LicenseUncheckedCreateNestedManyWithoutPosInput permissionPos?: Prisma.PermissionPosUncheckedCreateNestedManyWithoutPosInput salesInvoices?: Prisma.SalesInvoiceUncheckedCreateNestedManyWithoutPosInput } @@ -795,86 +770,6 @@ export type PosUpdateManyWithWhereWithoutDeviceInput = { data: Prisma.XOR } -export type PosCreateWithoutLicensesInput = { - id?: string - name: string - serial: string - model?: string | null - status?: $Enums.POSStatus - pos_type: $Enums.POSType - created_at?: Date | string - updated_at?: Date | string - complex: Prisma.ComplexCreateNestedOneWithoutPos_listInput - device?: Prisma.DeviceCreateNestedOneWithoutPosesInput - provider?: Prisma.ProviderCreateNestedOneWithoutPos_listInput - permissionPos?: Prisma.PermissionPosCreateNestedManyWithoutPosInput - salesInvoices?: Prisma.SalesInvoiceCreateNestedManyWithoutPosInput -} - -export type PosUncheckedCreateWithoutLicensesInput = { - id?: string - name: string - serial: string - model?: string | null - status?: $Enums.POSStatus - pos_type: $Enums.POSType - created_at?: Date | string - updated_at?: Date | string - complex_id: string - device_id?: string | null - provider_id?: string | null - permissionPos?: Prisma.PermissionPosUncheckedCreateNestedManyWithoutPosInput - salesInvoices?: Prisma.SalesInvoiceUncheckedCreateNestedManyWithoutPosInput -} - -export type PosCreateOrConnectWithoutLicensesInput = { - where: Prisma.PosWhereUniqueInput - create: Prisma.XOR -} - -export type PosUpsertWithoutLicensesInput = { - update: Prisma.XOR - create: Prisma.XOR - where?: Prisma.PosWhereInput -} - -export type PosUpdateToOneWithWhereWithoutLicensesInput = { - where?: Prisma.PosWhereInput - data: Prisma.XOR -} - -export type PosUpdateWithoutLicensesInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - serial?: Prisma.StringFieldUpdateOperationsInput | string - model?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.EnumPOSStatusFieldUpdateOperationsInput | $Enums.POSStatus - pos_type?: Prisma.EnumPOSTypeFieldUpdateOperationsInput | $Enums.POSType - created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updated_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - complex?: Prisma.ComplexUpdateOneRequiredWithoutPos_listNestedInput - device?: Prisma.DeviceUpdateOneWithoutPosesNestedInput - provider?: Prisma.ProviderUpdateOneWithoutPos_listNestedInput - permissionPos?: Prisma.PermissionPosUpdateManyWithoutPosNestedInput - salesInvoices?: Prisma.SalesInvoiceUpdateManyWithoutPosNestedInput -} - -export type PosUncheckedUpdateWithoutLicensesInput = { - id?: Prisma.StringFieldUpdateOperationsInput | string - name?: Prisma.StringFieldUpdateOperationsInput | string - serial?: Prisma.StringFieldUpdateOperationsInput | string - model?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - status?: Prisma.EnumPOSStatusFieldUpdateOperationsInput | $Enums.POSStatus - pos_type?: Prisma.EnumPOSTypeFieldUpdateOperationsInput | $Enums.POSType - created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - updated_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - complex_id?: Prisma.StringFieldUpdateOperationsInput | string - device_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - provider_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - permissionPos?: Prisma.PermissionPosUncheckedUpdateManyWithoutPosNestedInput - salesInvoices?: Prisma.SalesInvoiceUncheckedUpdateManyWithoutPosNestedInput -} - export type PosCreateWithoutPermissionPosInput = { id?: string name: string @@ -887,7 +782,6 @@ export type PosCreateWithoutPermissionPosInput = { complex: Prisma.ComplexCreateNestedOneWithoutPos_listInput device?: Prisma.DeviceCreateNestedOneWithoutPosesInput provider?: Prisma.ProviderCreateNestedOneWithoutPos_listInput - licenses?: Prisma.LicenseCreateNestedManyWithoutPosInput salesInvoices?: Prisma.SalesInvoiceCreateNestedManyWithoutPosInput } @@ -903,7 +797,6 @@ export type PosUncheckedCreateWithoutPermissionPosInput = { complex_id: string device_id?: string | null provider_id?: string | null - licenses?: Prisma.LicenseUncheckedCreateNestedManyWithoutPosInput salesInvoices?: Prisma.SalesInvoiceUncheckedCreateNestedManyWithoutPosInput } @@ -935,7 +828,6 @@ export type PosUpdateWithoutPermissionPosInput = { complex?: Prisma.ComplexUpdateOneRequiredWithoutPos_listNestedInput device?: Prisma.DeviceUpdateOneWithoutPosesNestedInput provider?: Prisma.ProviderUpdateOneWithoutPos_listNestedInput - licenses?: Prisma.LicenseUpdateManyWithoutPosNestedInput salesInvoices?: Prisma.SalesInvoiceUpdateManyWithoutPosNestedInput } @@ -951,7 +843,6 @@ export type PosUncheckedUpdateWithoutPermissionPosInput = { complex_id?: Prisma.StringFieldUpdateOperationsInput | string device_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null provider_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - licenses?: Prisma.LicenseUncheckedUpdateManyWithoutPosNestedInput salesInvoices?: Prisma.SalesInvoiceUncheckedUpdateManyWithoutPosNestedInput } @@ -966,7 +857,6 @@ export type PosCreateWithoutProviderInput = { updated_at?: Date | string complex: Prisma.ComplexCreateNestedOneWithoutPos_listInput device?: Prisma.DeviceCreateNestedOneWithoutPosesInput - licenses?: Prisma.LicenseCreateNestedManyWithoutPosInput permissionPos?: Prisma.PermissionPosCreateNestedManyWithoutPosInput salesInvoices?: Prisma.SalesInvoiceCreateNestedManyWithoutPosInput } @@ -982,7 +872,6 @@ export type PosUncheckedCreateWithoutProviderInput = { updated_at?: Date | string complex_id: string device_id?: string | null - licenses?: Prisma.LicenseUncheckedCreateNestedManyWithoutPosInput permissionPos?: Prisma.PermissionPosUncheckedCreateNestedManyWithoutPosInput salesInvoices?: Prisma.SalesInvoiceUncheckedCreateNestedManyWithoutPosInput } @@ -1025,7 +914,6 @@ export type PosCreateWithoutSalesInvoicesInput = { complex: Prisma.ComplexCreateNestedOneWithoutPos_listInput device?: Prisma.DeviceCreateNestedOneWithoutPosesInput provider?: Prisma.ProviderCreateNestedOneWithoutPos_listInput - licenses?: Prisma.LicenseCreateNestedManyWithoutPosInput permissionPos?: Prisma.PermissionPosCreateNestedManyWithoutPosInput } @@ -1041,7 +929,6 @@ export type PosUncheckedCreateWithoutSalesInvoicesInput = { complex_id: string device_id?: string | null provider_id?: string | null - licenses?: Prisma.LicenseUncheckedCreateNestedManyWithoutPosInput permissionPos?: Prisma.PermissionPosUncheckedCreateNestedManyWithoutPosInput } @@ -1073,7 +960,6 @@ export type PosUpdateWithoutSalesInvoicesInput = { complex?: Prisma.ComplexUpdateOneRequiredWithoutPos_listNestedInput device?: Prisma.DeviceUpdateOneWithoutPosesNestedInput provider?: Prisma.ProviderUpdateOneWithoutPos_listNestedInput - licenses?: Prisma.LicenseUpdateManyWithoutPosNestedInput permissionPos?: Prisma.PermissionPosUpdateManyWithoutPosNestedInput } @@ -1089,7 +975,6 @@ export type PosUncheckedUpdateWithoutSalesInvoicesInput = { complex_id?: Prisma.StringFieldUpdateOperationsInput | string device_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null provider_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - licenses?: Prisma.LicenseUncheckedUpdateManyWithoutPosNestedInput permissionPos?: Prisma.PermissionPosUncheckedUpdateManyWithoutPosNestedInput } @@ -1117,7 +1002,6 @@ export type PosUpdateWithoutComplexInput = { updated_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string device?: Prisma.DeviceUpdateOneWithoutPosesNestedInput provider?: Prisma.ProviderUpdateOneWithoutPos_listNestedInput - licenses?: Prisma.LicenseUpdateManyWithoutPosNestedInput permissionPos?: Prisma.PermissionPosUpdateManyWithoutPosNestedInput salesInvoices?: Prisma.SalesInvoiceUpdateManyWithoutPosNestedInput } @@ -1133,7 +1017,6 @@ export type PosUncheckedUpdateWithoutComplexInput = { updated_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string device_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null provider_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - licenses?: Prisma.LicenseUncheckedUpdateManyWithoutPosNestedInput permissionPos?: Prisma.PermissionPosUncheckedUpdateManyWithoutPosNestedInput salesInvoices?: Prisma.SalesInvoiceUncheckedUpdateManyWithoutPosNestedInput } @@ -1175,7 +1058,6 @@ export type PosUpdateWithoutDeviceInput = { updated_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string complex?: Prisma.ComplexUpdateOneRequiredWithoutPos_listNestedInput provider?: Prisma.ProviderUpdateOneWithoutPos_listNestedInput - licenses?: Prisma.LicenseUpdateManyWithoutPosNestedInput permissionPos?: Prisma.PermissionPosUpdateManyWithoutPosNestedInput salesInvoices?: Prisma.SalesInvoiceUpdateManyWithoutPosNestedInput } @@ -1191,7 +1073,6 @@ export type PosUncheckedUpdateWithoutDeviceInput = { updated_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string complex_id?: Prisma.StringFieldUpdateOperationsInput | string provider_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - licenses?: Prisma.LicenseUncheckedUpdateManyWithoutPosNestedInput permissionPos?: Prisma.PermissionPosUncheckedUpdateManyWithoutPosNestedInput salesInvoices?: Prisma.SalesInvoiceUncheckedUpdateManyWithoutPosNestedInput } @@ -1233,7 +1114,6 @@ export type PosUpdateWithoutProviderInput = { updated_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string complex?: Prisma.ComplexUpdateOneRequiredWithoutPos_listNestedInput device?: Prisma.DeviceUpdateOneWithoutPosesNestedInput - licenses?: Prisma.LicenseUpdateManyWithoutPosNestedInput permissionPos?: Prisma.PermissionPosUpdateManyWithoutPosNestedInput salesInvoices?: Prisma.SalesInvoiceUpdateManyWithoutPosNestedInput } @@ -1249,7 +1129,6 @@ export type PosUncheckedUpdateWithoutProviderInput = { updated_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string complex_id?: Prisma.StringFieldUpdateOperationsInput | string device_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null - licenses?: Prisma.LicenseUncheckedUpdateManyWithoutPosNestedInput permissionPos?: Prisma.PermissionPosUncheckedUpdateManyWithoutPosNestedInput salesInvoices?: Prisma.SalesInvoiceUncheckedUpdateManyWithoutPosNestedInput } @@ -1273,13 +1152,11 @@ export type PosUncheckedUpdateManyWithoutProviderInput = { */ export type PosCountOutputType = { - licenses: number permissionPos: number salesInvoices: number } export type PosCountOutputTypeSelect = { - licenses?: boolean | PosCountOutputTypeCountLicensesArgs permissionPos?: boolean | PosCountOutputTypeCountPermissionPosArgs salesInvoices?: boolean | PosCountOutputTypeCountSalesInvoicesArgs } @@ -1294,13 +1171,6 @@ export type PosCountOutputTypeDefaultArgs | null } -/** - * PosCountOutputType without action - */ -export type PosCountOutputTypeCountLicensesArgs = { - where?: Prisma.LicenseWhereInput -} - /** * PosCountOutputType without action */ @@ -1331,7 +1201,6 @@ export type PosSelect device?: boolean | Prisma.Pos$deviceArgs provider?: boolean | Prisma.Pos$providerArgs - licenses?: boolean | Prisma.Pos$licensesArgs permissionPos?: boolean | Prisma.Pos$permissionPosArgs salesInvoices?: boolean | Prisma.Pos$salesInvoicesArgs _count?: boolean | Prisma.PosCountOutputTypeDefaultArgs @@ -1358,7 +1227,6 @@ export type PosInclude device?: boolean | Prisma.Pos$deviceArgs provider?: boolean | Prisma.Pos$providerArgs - licenses?: boolean | Prisma.Pos$licensesArgs permissionPos?: boolean | Prisma.Pos$permissionPosArgs salesInvoices?: boolean | Prisma.Pos$salesInvoicesArgs _count?: boolean | Prisma.PosCountOutputTypeDefaultArgs @@ -1370,7 +1238,6 @@ export type $PosPayload device: Prisma.$DevicePayload | null provider: Prisma.$ProviderPayload | null - licenses: Prisma.$LicensePayload[] permissionPos: Prisma.$PermissionPosPayload[] salesInvoices: Prisma.$SalesInvoicePayload[] } @@ -1729,7 +1596,6 @@ export interface Prisma__PosClient = {}>(args?: Prisma.Subset>): Prisma.Prisma__ComplexClient, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions> device = {}>(args?: Prisma.Subset>): Prisma.Prisma__DeviceClient, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> provider = {}>(args?: Prisma.Subset>): Prisma.Prisma__ProviderClient, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions> - licenses = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> permissionPos = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> salesInvoices = {}>(args?: Prisma.Subset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions> | Null> /** @@ -2152,30 +2018,6 @@ export type Pos$providerArgs = { - /** - * Select specific fields to fetch from the License - */ - select?: Prisma.LicenseSelect | null - /** - * Omit specific fields from the License - */ - omit?: Prisma.LicenseOmit | null - /** - * Choose, which related nodes to fetch as well - */ - include?: Prisma.LicenseInclude | null - where?: Prisma.LicenseWhereInput - orderBy?: Prisma.LicenseOrderByWithRelationInput | Prisma.LicenseOrderByWithRelationInput[] - cursor?: Prisma.LicenseWhereUniqueInput - take?: number - skip?: number - distinct?: Prisma.LicenseScalarFieldEnum | Prisma.LicenseScalarFieldEnum[] -} - /** * Pos.permissionPos */ diff --git a/src/main.ts b/src/main.ts index 38177c2..5a05895 100644 --- a/src/main.ts +++ b/src/main.ts @@ -5,8 +5,9 @@ import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger' import { AppModule } from './app.module' import { PrismaExceptionFilter } from './common/filters/prisma-exception.filter' import { ValidationExceptionFilter } from './common/filters/validation-exception.filter' +import { ConsumerGuard } from './common/guards/auth-consumer.guard' +import { PosGuard } from './common/guards/auth-pos.guard' import { JwtAuthGuard } from './common/guards/jwt-auth.guard' -import { PosGuard } from './common/guards/pos.gaurd' import { LoggingInterceptor } from './common/interceptors/logging.interceptor' import { ResponseMappingInterceptor } from './common/interceptors/response-mapping.interceptor' import { PrismaService } from './prisma/prisma.service' @@ -81,9 +82,13 @@ async function bootstrap() { // Register global exception filters: validation errors and Prisma errors app.useGlobalFilters(new ValidationExceptionFilter(), new PrismaExceptionFilter()) - app.useGlobalGuards(new JwtAuthGuard(app.get(JwtService), app.get(Reflector))) app.useGlobalGuards( - new PosGuard(app.get(JwtService), app.get(Reflector), app.get(PrismaService)), + new JwtAuthGuard( + app.get(JwtService), + app.get(Reflector), + new ConsumerGuard(new PrismaService()), + new PosGuard(new PrismaService()), + ), ) await app.listen(process.env.PORT ?? 5002) diff --git a/src/modules/admin/consumers/consumers.controller.ts b/src/modules/admin/consumers/consumers.controller.ts index 815ac4c..8fad7b3 100644 --- a/src/modules/admin/consumers/consumers.controller.ts +++ b/src/modules/admin/consumers/consumers.controller.ts @@ -1,4 +1,4 @@ -import { Body, Controller, Delete, Get, Param, Patch, Post } from '@nestjs/common' +import { Body, Controller, Get, Param, Patch, Post } from '@nestjs/common' import { AdminUsersService } from './consumers.service' import { CreateConsumerDto, UpdateConsumerDto } from './dto/consumer.dto' @@ -25,9 +25,4 @@ export class AdminUsersController { async update(@Param('id') id: string, @Body() data: UpdateConsumerDto) { return this.usersService.update(id, data) } - - @Delete(':id') - async delete(@Param('id') id: string) { - return this.usersService.delete(id) - } } diff --git a/src/modules/admin/consumers/consumers.module.ts b/src/modules/admin/consumers/consumers.module.ts index 73e3b21..cf39774 100644 --- a/src/modules/admin/consumers/consumers.module.ts +++ b/src/modules/admin/consumers/consumers.module.ts @@ -4,9 +4,15 @@ import { AdminUserAccountsModule } from './accounts/accounts.module' import { AdminConsumerBusinessActivitiesModule } from './business-activities/business-activities.module' import { AdminUsersController } from './consumers.controller' import { AdminUsersService } from './consumers.service' +import { AdminConsumerLicensesModule } from './licenses/licenses.module' @Module({ - imports: [PrismaModule, AdminUserAccountsModule, AdminConsumerBusinessActivitiesModule], + imports: [ + PrismaModule, + AdminUserAccountsModule, + AdminConsumerBusinessActivitiesModule, + AdminConsumerLicensesModule, + ], controllers: [AdminUsersController], providers: [AdminUsersService], exports: [AdminUserAccountsModule], diff --git a/src/modules/admin/consumers/consumers.service.ts b/src/modules/admin/consumers/consumers.service.ts index f1f600a..da0a79d 100644 --- a/src/modules/admin/consumers/consumers.service.ts +++ b/src/modules/admin/consumers/consumers.service.ts @@ -1,7 +1,14 @@ import { PasswordUtil } from '@/common/utils/password.util' -import { AccountStatus, AccountType, ConsumerRole } from '@/generated/prisma/enums' +import { + AccountStatus, + AccountType, + ConsumerRole, + LicenseStatus, + PartnerStatus, +} from '@/generated/prisma/enums' +import { ConsumerCreateInput, ConsumerSelect } from '@/generated/prisma/models' import { PrismaService } from '@/prisma/prisma.service' -import { Injectable } from '@nestjs/common' +import { BadRequestException, Injectable } from '@nestjs/common' import { ResponseMapper } from 'common/response/response-mapper' import { CreateConsumerDto, UpdateConsumerDto } from './dto/consumer.dto' @@ -9,17 +16,33 @@ import { CreateConsumerDto, UpdateConsumerDto } from './dto/consumer.dto' export class AdminUsersService { constructor(private readonly prisma: PrismaService) {} + private readonly defaultSelect: ConsumerSelect = { + id: true, + first_name: true, + last_name: true, + mobile_number: true, + status: true, + created_at: true, + license: { + select: { + id: true, + starts_at: true, + expires_at: true, + status: true, + partner: { + select: { + id: true, + name: true, + }, + }, + }, + }, + } + async findAll() { const [consumers, count] = await this.prisma.$transaction([ this.prisma.consumer.findMany({ - select: { - id: true, - first_name: true, - last_name: true, - mobile_number: true, - status: true, - created_at: true, - }, + select: this.defaultSelect, }), this.prisma.consumer.count(), ]) @@ -33,16 +56,12 @@ export class AdminUsersService { } async findOne(id: string) { + this.prisma.license.findFirst({ + where: {}, + }) const consumer = await this.prisma.consumer.findUniqueOrThrow({ where: { id }, - select: { - id: true, - first_name: true, - last_name: true, - mobile_number: true, - status: true, - created_at: true, - }, + select: this.defaultSelect, }) return ResponseMapper.single({ @@ -52,32 +71,79 @@ export class AdminUsersService { } async create(data: CreateConsumerDto) { - const { username, password, ...rest } = data - return this.prisma.consumer.create({ - data: { - ...rest, - accounts: { - create: { - role: ConsumerRole.OWNER, - account: { - create: { - username, - password: await PasswordUtil.hash(password), - type: AccountType.CONSUMER, - status: AccountStatus.ACTIVE, - }, + const { username, password, license, ...rest } = data + const dataToCreate: ConsumerCreateInput = { + ...rest, + accounts: { + create: { + role: ConsumerRole.OWNER, + account: { + create: { + username, + password: await PasswordUtil.hash(password), + type: AccountType.CONSUMER, + status: AccountStatus.ACTIVE, }, }, }, }, + } + if (license) { + if (license.partner_id) { + const partner = await this.prisma.partner.findUnique({ + where: { + id: license.partner_id, + status: PartnerStatus.ACTIVE, + }, + select: { + name: true, + license_quota: true, + _count: { + select: { + licenses: true, + }, + }, + }, + }) + + if (!partner) { + throw new BadRequestException('متاسفانه شریک تجاری مورد نظر شما یافت نشد') + } + const partnerLicensesRemainsQuota = + partner.license_quota || 0 - partner._count.licenses + + if (!partnerLicensesRemainsQuota) { + throw new BadRequestException( + `تعداد لایسنس‌های فعلی شریک تجاری ${partner.name} به پایان رسیده است`, + ) + } + } + + dataToCreate.license = { + create: { + starts_at: license.starts_at, + expires_at: new Date( + new Date(license.starts_at).getFullYear() + 1, + ).toISOString(), + status: LicenseStatus.ACTIVE, + partner: { + connect: { + id: license.partner_id, + }, + }, + }, + } + } + return this.prisma.consumer.create({ + data: dataToCreate, + select: this.defaultSelect, }) } async update(id: string, data: UpdateConsumerDto) { - return this.prisma.admin.update({ where: { id }, data }) - } - - async delete(id: string) { - return this.prisma.admin.delete({ where: { id } }) + return this.prisma.consumer.update({ + where: { id }, + data, + }) } } diff --git a/src/modules/admin/consumers/dto/consumer.dto.ts b/src/modules/admin/consumers/dto/consumer.dto.ts index 7ec5d47..85375a8 100644 --- a/src/modules/admin/consumers/dto/consumer.dto.ts +++ b/src/modules/admin/consumers/dto/consumer.dto.ts @@ -1,6 +1,7 @@ import { ConsumerStatus } from '@/generated/prisma/enums' -import { ApiProperty, PartialType } from '@nestjs/swagger' -import { IsEnum, IsString } from 'class-validator' +import { ApiProperty, OmitType, PartialType } from '@nestjs/swagger' +import { IsEnum, IsObject, IsString } from 'class-validator' +import { CreateLicenseDto } from '../licenses/dto/license.dto' export class CreateConsumerDto { @IsString() @@ -22,8 +23,16 @@ export class CreateConsumerDto { @IsString() @ApiProperty({ required: true }) password: string + + @IsObject() + @ApiProperty() + license: CreateLicenseDto } -export class UpdateConsumerDto extends PartialType(CreateConsumerDto) { +export class UpdateConsumerDto extends OmitType(PartialType(CreateConsumerDto), [ + 'password', + 'username', + 'license', +]) { @IsEnum(ConsumerStatus) @ApiProperty({ enum: ConsumerStatus }) status: ConsumerStatus diff --git a/src/modules/admin/consumers/licenses/dto/license.dto.ts b/src/modules/admin/consumers/licenses/dto/license.dto.ts new file mode 100644 index 0000000..511edf9 --- /dev/null +++ b/src/modules/admin/consumers/licenses/dto/license.dto.ts @@ -0,0 +1,37 @@ +import { LicenseStatus } from '@/generated/prisma/enums' +import { ApiProperty, OmitType, PartialType } from '@nestjs/swagger' +import { IsDateString, IsEnum } from 'class-validator' + +export class CreateLicenseDto { + @ApiProperty({ required: true, default: new Date().toISOString() }) + @IsDateString( + { strict: true }, + { message: 'invoice_date must be a valid ISO-8601 string' }, + ) + starts_at: Date + + @ApiProperty() + @IsDateString( + { strict: true }, + { message: 'invoice_date must be a valid ISO-8601 string' }, + ) + expires_at?: Date + + @ApiProperty() + partner_id: string +} + +export class UpdateLicenseDto extends OmitType(PartialType(CreateLicenseDto), [ + 'starts_at', +]) { + @ApiProperty({ required: true, default: new Date().toISOString() }) + @IsDateString( + { strict: true }, + { message: 'invoice_date must be a valid ISO-8601 string' }, + ) + starts_at: Date + + @ApiProperty({ enum: LicenseStatus }) + @IsEnum(LicenseStatus) + status?: LicenseStatus +} diff --git a/src/modules/admin/consumers/licenses/licenses.controller.ts b/src/modules/admin/consumers/licenses/licenses.controller.ts new file mode 100644 index 0000000..cff8d9d --- /dev/null +++ b/src/modules/admin/consumers/licenses/licenses.controller.ts @@ -0,0 +1,25 @@ +import { Body, Controller, Param, Patch, Post } from '@nestjs/common' +import { ApiTags } from '@nestjs/swagger' +import { CreateLicenseDto, UpdateLicenseDto } from './dto/license.dto' +import { LicensesService } from './licenses.service' + +@ApiTags('AdminConsumerAccounts') +@Controller('admin/consumers/:consumerId/licenses') +export class LicensesController { + constructor(private readonly service: LicensesService) {} + + @Post() + async create(@Param('consumerId') consumerId: string, @Body() data: CreateLicenseDto) { + return this.service.create(consumerId, data) + } + + @Patch(':id') + async update(@Param('id') id: string, @Body() data: UpdateLicenseDto) { + return this.service.update(id, data) + } + + // @Delete(':id') + // async delete(@Param('id') id: string) { + // return this.service.delete(id) + // } +} diff --git a/src/modules/admin/consumers/licenses/licenses.module.ts b/src/modules/admin/consumers/licenses/licenses.module.ts new file mode 100644 index 0000000..9d5bb10 --- /dev/null +++ b/src/modules/admin/consumers/licenses/licenses.module.ts @@ -0,0 +1,12 @@ +import { PrismaModule } from '@/prisma/prisma.module' +import { Module } from '@nestjs/common' +import { LicensesController } from './licenses.controller' +import { LicensesService } from './licenses.service' + +@Module({ + imports: [PrismaModule], + controllers: [LicensesController], + providers: [LicensesService], + exports: [LicensesService], +}) +export class AdminConsumerLicensesModule {} diff --git a/src/modules/admin/consumers/licenses/licenses.service.ts b/src/modules/admin/consumers/licenses/licenses.service.ts new file mode 100644 index 0000000..c8303bb --- /dev/null +++ b/src/modules/admin/consumers/licenses/licenses.service.ts @@ -0,0 +1,51 @@ +import { LicenseStatus } from '@/generated/prisma/enums' +import { PrismaService } from '@/prisma/prisma.service' +import { Injectable } from '@nestjs/common' +import { ResponseMapper } from 'common/response/response-mapper' +import { CreateLicenseDto, UpdateLicenseDto } from './dto/license.dto' + +@Injectable() +export class LicensesService { + constructor(private readonly prisma: PrismaService) {} + + private readonly setExpireDate = (starts_at: Date) => { + return new Date( + new Date(starts_at).setFullYear(new Date(starts_at).getFullYear() + 1), + ).toISOString() + } + + async create(consumerId: string, data: CreateLicenseDto) { + const { starts_at, expires_at } = data + const license = await this.prisma.license.create({ + data: { + starts_at, + expires_at: expires_at ?? this.setExpireDate(starts_at), + partner: { + connect: { + id: data.partner_id, + }, + }, + consumers: { + connect: { + id: consumerId, + }, + }, + status: LicenseStatus.ACTIVE, + }, + }) + return ResponseMapper.create(license) + } + + async update(id: string, data: UpdateLicenseDto) { + const { starts_at, expires_at } = data + const license = await this.prisma.license.update({ + where: { id }, + data: { + ...data, + starts_at, + expires_at: expires_at ?? this.setExpireDate(starts_at), + }, + }) + return ResponseMapper.update(license) + } +} diff --git a/src/modules/admin/guilds/goods/goods.controller.ts b/src/modules/admin/guilds/goods/goods.controller.ts index b0ed31e..1a40e73 100644 --- a/src/modules/admin/guilds/goods/goods.controller.ts +++ b/src/modules/admin/guilds/goods/goods.controller.ts @@ -17,7 +17,7 @@ export class GoodsController { } @Post() - create(@Param('guildId') guildId: string, @Body() data: CreateGuildGoodDto) { - return this.goodsService.create(guildId, data) + create(@Body() data: CreateGuildGoodDto) { + return this.goodsService.create(data) } } diff --git a/src/modules/admin/guilds/goods/goods.service.ts b/src/modules/admin/guilds/goods/goods.service.ts index a294dde..fc1285a 100644 --- a/src/modules/admin/guilds/goods/goods.service.ts +++ b/src/modules/admin/guilds/goods/goods.service.ts @@ -67,7 +67,7 @@ export class GoodsService { return ResponseMapper.single(good) } - async create(guild_id: string, data: CreateGuildGoodDto) { + async create(data: CreateGuildGoodDto) { const { category_id, ...rest } = data const good = await this.prisma.good.create({ diff --git a/src/modules/admin/licenses/licenses.controller.ts b/src/modules/admin/licenses/licenses.controller.ts index 5965b4d..7f4b162 100644 --- a/src/modules/admin/licenses/licenses.controller.ts +++ b/src/modules/admin/licenses/licenses.controller.ts @@ -1,5 +1,5 @@ -import { Body, Controller, Get, Param, Patch, Post } from '@nestjs/common' -import { CreateLicenseDto, UpdateLicenseDto } from './dto/license.dto' +import { Body, Controller, Get, Param, Patch } from '@nestjs/common' +import { UpdateLicenseDto } from './dto/license.dto' import { PartnerLicensesService } from './licenses.service' @Controller('admin/licenses') @@ -16,11 +16,6 @@ export class LicensesController { return this.licensesService.findOne(id) } - @Post() - async create(@Body() data: CreateLicenseDto) { - return this.licensesService.create(data) - } - @Patch(':id') async update(@Param('id') id: string, @Body() data: UpdateLicenseDto) { return this.licensesService.update(id, data) diff --git a/src/modules/admin/licenses/licenses.service.ts b/src/modules/admin/licenses/licenses.service.ts index fb0c848..e2998af 100644 --- a/src/modules/admin/licenses/licenses.service.ts +++ b/src/modules/admin/licenses/licenses.service.ts @@ -2,8 +2,7 @@ import { LicenseInclude } from '@/generated/prisma/models' import { PrismaService } from '@/prisma/prisma.service' import { Injectable } from '@nestjs/common' import { ResponseMapper } from 'common/response/response-mapper' -import { LicenseStatus } from 'generated/prisma/enums' -import { CreateLicenseDto, UpdateLicenseDto } from './dto/license.dto' +import { UpdateLicenseDto } from './dto/license.dto' @Injectable() export class PartnerLicensesService { @@ -43,7 +42,6 @@ export class PartnerLicensesService { this.prisma.license.findMany({ include: this.licenseInclude, omit: { - pos_id: true, partner_id: true, }, }), @@ -51,7 +49,7 @@ export class PartnerLicensesService { ]) return ResponseMapper.paginate( licenses.map(license => { - const { pos, ...rest } = license + const { ...rest } = license // @ts-ignore const { accounts, ...posRest } = pos return { @@ -71,12 +69,11 @@ export class PartnerLicensesService { where: { id }, include: this.licenseInclude, omit: { - pos_id: true, partner_id: true, }, }) if (license) { - const { pos, ...rest } = license + const { ...rest } = license // @ts-ignore const { accounts, ...posRest } = pos return ResponseMapper.single({ @@ -89,24 +86,6 @@ export class PartnerLicensesService { return ResponseMapper.single(license) } - async create(data: CreateLicenseDto) { - const date = new Date(data.starts_at || '') - const expiresAt = - data.expires_at || new Date(date.setFullYear(date.getFullYear() + 1)) - - const license = await this.prisma.license.create({ - data: { - partner_id: data.partner_id, - pos_id: data.pos_id, - starts_at: date, - expires_at: expiresAt, - status: LicenseStatus.ACTIVE, - }, - }) - - return ResponseMapper.create(license) - } - async update(id: string, data: UpdateLicenseDto) { const license = await this.prisma.license.update({ where: { id }, diff --git a/src/modules/consumer/consumer.controller.ts b/src/modules/consumer/consumer.controller.ts index 85e951d..7110f90 100644 --- a/src/modules/consumer/consumer.controller.ts +++ b/src/modules/consumer/consumer.controller.ts @@ -1,6 +1,15 @@ -import { Controller } from '@nestjs/common' +import { ConsumerInfoInfo } from '@/common/decorators/consumerInfo.decorator' +import { Controller, Get } from '@nestjs/common' import { ApiTags } from '@nestjs/swagger' +import { ConsumerService } from './consumer.service' @ApiTags('Consumer') @Controller('consumer') -export class ConsumerController {} +export class ConsumerController { + constructor(private service: ConsumerService) {} + + @Get('') + async findOne(@ConsumerInfoInfo('user_id') userId: string) { + return this.service.getInfo(userId) + } +} diff --git a/src/modules/consumer/consumer.guard.ts b/src/modules/consumer/consumer.guard.ts deleted file mode 100644 index 3f395f0..0000000 --- a/src/modules/consumer/consumer.guard.ts +++ /dev/null @@ -1,14 +0,0 @@ -// import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common' -// import { Observable } from 'rxjs' - -// @Injectable() -// export class AdminGuard implements CanActivate { -// canActivate( -// _context: ExecutionContext, -// ): boolean | Promise | Observable { -// // Replace with real auth/permission checks (e.g., check JWT claims) -// const request = _context.switchToHttp().getRequest() -// const isAdminHeader = request.headers['x-admin'] -// return isAdminHeader === 'true' || request.isAdminRequest === true -// } -// } diff --git a/src/modules/consumer/consumer.middleware.ts b/src/modules/consumer/consumer.middleware.ts index ce736db..18a3c0e 100644 --- a/src/modules/consumer/consumer.middleware.ts +++ b/src/modules/consumer/consumer.middleware.ts @@ -1,20 +1,50 @@ import { checkAndDecodeJwtToken } from '@/common/utils/jwt-user.util' -import { AccountType } from '@/generated/prisma/enums' -import { Injectable, NestMiddleware, UnauthorizedException } from '@nestjs/common' +import { PrismaService } from '@/prisma/prisma.service' +import { ForbiddenException, Injectable, NestMiddleware } from '@nestjs/common' import { JwtService } from '@nestjs/jwt' import { NextFunction, Request, Response } from 'express' @Injectable() export class ConsumerMiddleware implements NestMiddleware { - constructor(private jwtService: JwtService) {} - use(req: Request, _res: Response, next: NextFunction) { - const decodedToken = checkAndDecodeJwtToken(req, this.jwtService) - if (decodedToken?.type === AccountType.CONSUMER) { - req.decodedToken = decodedToken + constructor( + private prisma: PrismaService, + private jwtService: JwtService, + ) {} + + async use(req: Request, _res: Response, next: NextFunction) { + const doForbidden = () => { + throw new ForbiddenException('شما دسترسی لازم را ندارید') + } + try { + const tokenAccount = checkAndDecodeJwtToken(req, this.jwtService) + + if (tokenAccount?.type !== 'CONSUMER') { + return doForbidden() + } + + const consumerAccount = await this.prisma.consumerAccount.findUnique({ + where: { + id: tokenAccount.account_id, + }, + select: { + user_id: true, + account_id: true, + }, + }) + + if (!consumerAccount) { + return doForbidden() + } + + req.consumerData = { + account_id: consumerAccount.account_id, + user_id: consumerAccount.user_id, + } + req.decodedToken = tokenAccount return next() + } catch (error) { + return doForbidden() } - - throw new UnauthorizedException('شما دسترسی لازم را ندارید.') } } diff --git a/src/modules/consumer/consumer.module.ts b/src/modules/consumer/consumer.module.ts index f7efe8c..14e4f8d 100644 --- a/src/modules/consumer/consumer.module.ts +++ b/src/modules/consumer/consumer.module.ts @@ -4,11 +4,12 @@ import { ConsumerAccountsModule } from './accounts/accounts.module' import { ConsumerBusinessActivitiesModule } from './business-activities/business-activities.module' import { ConsumerController } from './consumer.controller' import { ConsumerMiddleware } from './consumer.middleware' +import { ConsumerService } from './consumer.service' @Module({ controllers: [ConsumerController], imports: [ConsumerAccountsModule, ConsumerBusinessActivitiesModule], - providers: [JwtService], + providers: [JwtService, ConsumerService], }) export class ConsumerModule implements NestModule { configure(consumer: MiddlewareConsumer) { @@ -17,5 +18,10 @@ export class ConsumerModule implements NestModule { method: RequestMethod.ALL, version: '1', }) + consumer.apply(ConsumerMiddleware).forRoutes({ + path: '/consumer', + method: RequestMethod.ALL, + version: '1', + }) } } diff --git a/src/modules/consumer/consumer.service.ts b/src/modules/consumer/consumer.service.ts new file mode 100644 index 0000000..e943c72 --- /dev/null +++ b/src/modules/consumer/consumer.service.ts @@ -0,0 +1,40 @@ +import { ResponseMapper } from '@/common/response/response-mapper' +import { PrismaService } from '@/prisma/prisma.service' +import { Injectable } from '@nestjs/common' + +@Injectable() +export class ConsumerService { + constructor(private readonly prisma: PrismaService) {} + + async getInfo(consumer_id: string) { + const consumer = await this.prisma.consumer.findUnique({ + where: { + id: consumer_id, + }, + select: { + id: true, + first_name: true, + last_name: true, + mobile_number: true, + status: true, + license: { + select: { + starts_at: true, + expires_at: true, + status: true, + partner: { + select: { + name: true, + }, + }, + }, + }, + }, + }) + + return ResponseMapper.single({ + ...consumer, + full_name: `${consumer?.first_name} ${consumer?.last_name}`, + }) + } +}