This commit is contained in:
w35l3y 2025-06-03 17:01:43 +00:00
parent 460c893c3a
commit e6a393870f
2 changed files with 8 additions and 10 deletions

View File

@ -1,7 +1,8 @@
import { CacheEngine } from '@cache/cacheengine'; import { CacheEngine } from '@cache/cacheengine';
import { Chatwoot, configService, ProviderSession, Database } from '@config/env.config'; import { Chatwoot, configService, Database, ProviderSession } from '@config/env.config';
import { eventEmitter } from '@config/event.config'; import { eventEmitter } from '@config/event.config';
import { Logger } from '@config/logger.config'; import { Logger } from '@config/logger.config';
import { extendsWithProxy } from '@utils/extendsWithProxy';
import { CallController } from './controllers/call.controller'; import { CallController } from './controllers/call.controller';
import { ChatController } from './controllers/chat.controller'; import { ChatController } from './controllers/chat.controller';
@ -12,6 +13,7 @@ import { ProxyController } from './controllers/proxy.controller';
import { SendMessageController } from './controllers/sendMessage.controller'; import { SendMessageController } from './controllers/sendMessage.controller';
import { SettingsController } from './controllers/settings.controller'; import { SettingsController } from './controllers/settings.controller';
import { TemplateController } from './controllers/template.controller'; import { TemplateController } from './controllers/template.controller';
import pgPathToMysql from './extensions/prismaExtensionPgpathToMysql';
import { ChannelController } from './integrations/channel/channel.controller'; import { ChannelController } from './integrations/channel/channel.controller';
import { EvolutionController } from './integrations/channel/evolution/evolution.controller'; import { EvolutionController } from './integrations/channel/evolution/evolution.controller';
import { MetaController } from './integrations/channel/meta/meta.controller'; import { MetaController } from './integrations/channel/meta/meta.controller';
@ -40,9 +42,6 @@ import { ProxyService } from './services/proxy.service';
import { SettingsService } from './services/settings.service'; import { SettingsService } from './services/settings.service';
import { TemplateService } from './services/template.service'; import { TemplateService } from './services/template.service';
import pgPathToMysql from './extensions/prismaExtensionPgpathToMysql';
import { extendsWithProxy } from '@utils/extendsWithProxy';
const logger = new Logger('WA MODULE'); const logger = new Logger('WA MODULE');
let chatwootCache: CacheService = null; let chatwootCache: CacheService = null;
@ -59,7 +58,7 @@ if (configService.get<ProviderSession>('PROVIDER').ENABLED) {
} }
const provider = configService.get<Database>('DATABASE').PROVIDER; const provider = configService.get<Database>('DATABASE').PROVIDER;
let extendablePrismaRepository: PrismaRepository = new PrismaRepository(configService) let extendablePrismaRepository: PrismaRepository = new PrismaRepository(configService);
if (typeof provider === 'string' && provider?.toLowerCase() === 'mysql') { if (typeof provider === 'string' && provider?.toLowerCase() === 'mysql') {
extendablePrismaRepository = extendsWithProxy(extendablePrismaRepository, pgPathToMysql); extendablePrismaRepository = extendsWithProxy(extendablePrismaRepository, pgPathToMysql);
} }

View File

@ -2,10 +2,7 @@ import { PrismaClient } from '@prisma/client';
type ExtensionArgs = Parameters<PrismaClient['$extends']>[0]; type ExtensionArgs = Parameters<PrismaClient['$extends']>[0];
export function extendsWithProxy<T extends PrismaClient>( export function extendsWithProxy<T extends PrismaClient>(instanciaBase: T, extensao: ExtensionArgs): T {
instanciaBase: T,
extensao: ExtensionArgs
): T {
const instanciaEstendida = instanciaBase.$extends(extensao); const instanciaEstendida = instanciaBase.$extends(extensao);
const proxy = new Proxy(instanciaBase as unknown as object, { const proxy = new Proxy(instanciaBase as unknown as object, {
@ -16,7 +13,9 @@ export function extendsWithProxy<T extends PrismaClient>(
if (prop === Symbol.toStringTag) { if (prop === Symbol.toStringTag) {
return undefined; return undefined;
} }
return prop in instanciaEstendida ? Reflect.get(instanciaEstendida as any, prop, receiver) : Reflect.get(target, prop, receiver); return prop in instanciaEstendida
? Reflect.get(instanciaEstendida as any, prop, receiver)
: Reflect.get(target, prop, receiver);
}, },
has(target, prop) { has(target, prop) {
return prop in target || prop in (instanciaEstendida as any); return prop in target || prop in (instanciaEstendida as any);