@solidstarters/solid-core 1.2.135 → 1.2.136
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/controllers/ai-interaction.controller.d.ts +2 -1
- package/dist/controllers/ai-interaction.controller.d.ts.map +1 -1
- package/dist/controllers/ai-interaction.controller.js +15 -3
- package/dist/controllers/ai-interaction.controller.js.map +1 -1
- package/dist/controllers/dashboard-question-sql-dataset-config.controller.d.ts +43 -0
- package/dist/controllers/dashboard-question-sql-dataset-config.controller.d.ts.map +1 -0
- package/dist/controllers/{question-sql-dataset-config.controller.js → dashboard-question-sql-dataset-config.controller.js} +30 -30
- package/dist/controllers/dashboard-question-sql-dataset-config.controller.js.map +1 -0
- package/dist/controllers/dashboard-question.controller.d.ts +45 -0
- package/dist/controllers/dashboard-question.controller.d.ts.map +1 -0
- package/dist/controllers/{question.controller.js → dashboard-question.controller.js} +31 -31
- package/dist/controllers/dashboard-question.controller.js.map +1 -0
- package/dist/dtos/{create-question-sql-dataset-config.dto.d.ts → create-dashboard-question-sql-dataset-config.dto.d.ts} +2 -2
- package/dist/dtos/create-dashboard-question-sql-dataset-config.dto.d.ts.map +1 -0
- package/dist/dtos/{create-question-sql-dataset-config.dto.js → create-dashboard-question-sql-dataset-config.dto.js} +13 -13
- package/dist/dtos/create-dashboard-question-sql-dataset-config.dto.js.map +1 -0
- package/dist/dtos/create-dashboard-question.dto.d.ts +17 -0
- package/dist/dtos/create-dashboard-question.dto.d.ts.map +1 -0
- package/dist/dtos/{create-question.dto.js → create-dashboard-question.dto.js} +25 -19
- package/dist/dtos/create-dashboard-question.dto.js.map +1 -0
- package/dist/dtos/create-dashboard.dto.d.ts +2 -2
- package/dist/dtos/create-dashboard.dto.d.ts.map +1 -1
- package/dist/dtos/create-dashboard.dto.js +3 -3
- package/dist/dtos/create-dashboard.dto.js.map +1 -1
- package/dist/dtos/{update-question-sql-dataset-config.dto.d.ts → update-dashboard-question-sql-dataset-config.dto.d.ts} +2 -2
- package/dist/dtos/update-dashboard-question-sql-dataset-config.dto.d.ts.map +1 -0
- package/dist/dtos/{update-question-sql-dataset-config.dto.js → update-dashboard-question-sql-dataset-config.dto.js} +14 -14
- package/dist/dtos/update-dashboard-question-sql-dataset-config.dto.js.map +1 -0
- package/dist/dtos/update-dashboard-question.dto.d.ts +18 -0
- package/dist/dtos/update-dashboard-question.dto.d.ts.map +1 -0
- package/dist/dtos/{update-question.dto.js → update-dashboard-question.dto.js} +26 -20
- package/dist/dtos/update-dashboard-question.dto.js.map +1 -0
- package/dist/dtos/update-dashboard.dto.d.ts +2 -2
- package/dist/dtos/update-dashboard.dto.d.ts.map +1 -1
- package/dist/dtos/update-dashboard.dto.js +3 -3
- package/dist/dtos/update-dashboard.dto.js.map +1 -1
- package/dist/entities/dashboard-question-sql-dataset-config.entity.d.ts +13 -0
- package/dist/entities/dashboard-question-sql-dataset-config.entity.d.ts.map +1 -0
- package/dist/entities/{question-sql-dataset-config.entity.js → dashboard-question-sql-dataset-config.entity.js} +19 -19
- package/dist/entities/dashboard-question-sql-dataset-config.entity.js.map +1 -0
- package/dist/entities/dashboard-question.entity.d.ts +16 -0
- package/dist/entities/dashboard-question.entity.d.ts.map +1 -0
- package/dist/entities/{question.entity.js → dashboard-question.entity.js} +23 -19
- package/dist/entities/dashboard-question.entity.js.map +1 -0
- package/dist/entities/dashboard.entity.d.ts +2 -2
- package/dist/entities/dashboard.entity.d.ts.map +1 -1
- package/dist/entities/dashboard.entity.js +3 -3
- package/dist/entities/dashboard.entity.js.map +1 -1
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -2
- package/dist/index.js.map +1 -1
- package/dist/interfaces.d.ts +16 -2
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js.map +1 -1
- package/dist/jobs/database/trigger-mcp-client-publisher-database.service.d.ts +11 -0
- package/dist/jobs/database/trigger-mcp-client-publisher-database.service.d.ts.map +1 -0
- package/dist/jobs/database/trigger-mcp-client-publisher-database.service.js +39 -0
- package/dist/jobs/database/trigger-mcp-client-publisher-database.service.js.map +1 -0
- package/dist/jobs/database/trigger-mcp-client-queue-options.d.ts +8 -0
- package/dist/jobs/database/trigger-mcp-client-queue-options.d.ts.map +1 -0
- package/dist/jobs/database/trigger-mcp-client-queue-options.js +10 -0
- package/dist/jobs/database/trigger-mcp-client-queue-options.js.map +1 -0
- package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts +16 -0
- package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.d.ts.map +1 -0
- package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js +71 -0
- package/dist/jobs/database/trigger-mcp-client-subscriber-database.service.js.map +1 -0
- package/dist/repository/dashboard.repository.d.ts +1 -3
- package/dist/repository/dashboard.repository.d.ts.map +1 -1
- package/dist/repository/dashboard.repository.js +42 -37
- package/dist/repository/dashboard.repository.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +88 -131
- package/dist/services/ai-interaction.service.d.ts +10 -2
- package/dist/services/ai-interaction.service.d.ts.map +1 -1
- package/dist/services/ai-interaction.service.js +53 -18
- package/dist/services/ai-interaction.service.js.map +1 -1
- package/dist/services/chatter-message.service.d.ts.map +1 -1
- package/dist/services/chatter-message.service.js +8 -6
- package/dist/services/chatter-message.service.js.map +1 -1
- package/dist/services/{question-sql-dataset-config.service.d.ts → dashboard-question-sql-dataset-config.service.d.ts} +5 -5
- package/dist/services/dashboard-question-sql-dataset-config.service.d.ts.map +1 -0
- package/dist/services/{question-sql-dataset-config.service.js → dashboard-question-sql-dataset-config.service.js} +9 -9
- package/dist/services/dashboard-question-sql-dataset-config.service.js.map +1 -0
- package/dist/services/{question.service.d.ts → dashboard-question.service.d.ts} +5 -5
- package/dist/services/dashboard-question.service.d.ts.map +1 -0
- package/dist/services/{question.service.js → dashboard-question.service.js} +10 -10
- package/dist/services/dashboard-question.service.js.map +1 -0
- package/dist/services/field-metadata.service.d.ts.map +1 -1
- package/dist/services/field-metadata.service.js +1 -0
- package/dist/services/field-metadata.service.js.map +1 -1
- package/dist/services/import-transaction.service.d.ts +3 -1
- package/dist/services/import-transaction.service.d.ts.map +1 -1
- package/dist/services/import-transaction.service.js +22 -0
- package/dist/services/import-transaction.service.js.map +1 -1
- package/dist/services/list-of-values.service.d.ts +1 -0
- package/dist/services/list-of-values.service.d.ts.map +1 -1
- package/dist/services/list-of-values.service.js +3 -0
- package/dist/services/list-of-values.service.js.map +1 -1
- package/dist/services/question-data-providers/chartjs-sql-data-provider.service.d.ts +2 -2
- package/dist/services/question-data-providers/chartjs-sql-data-provider.service.d.ts.map +1 -1
- package/dist/services/question-data-providers/chartjs-sql-data-provider.service.js +11 -7
- package/dist/services/question-data-providers/chartjs-sql-data-provider.service.js.map +1 -1
- package/dist/services/question-data-providers/helpers.d.ts +5 -2
- package/dist/services/question-data-providers/helpers.d.ts.map +1 -1
- package/dist/services/question-data-providers/helpers.js +18 -3
- package/dist/services/question-data-providers/helpers.js.map +1 -1
- package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.d.ts +2 -2
- package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.d.ts.map +1 -1
- package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.js +10 -4
- package/dist/services/question-data-providers/prime-react-datatable-sql-data-provider.service.js.map +1 -1
- package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.d.ts +2 -2
- package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.d.ts.map +1 -1
- package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.js +11 -3
- package/dist/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.js.map +1 -1
- package/dist/services/queues/publisher-factory.service.js +1 -1
- package/dist/services/queues/publisher-factory.service.js.map +1 -1
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +52 -39
- package/dist/solid-core.module.js.map +1 -1
- package/dist/subscribers/{question-sql-dataset-config.subscriber.d.ts → dashboard-question-sql-dataset-config.subscriber.d.ts} +6 -6
- package/dist/subscribers/dashboard-question-sql-dataset-config.subscriber.d.ts.map +1 -0
- package/dist/subscribers/{question-sql-dataset-config.subscriber.js → dashboard-question-sql-dataset-config.subscriber.js} +10 -10
- package/dist/subscribers/dashboard-question-sql-dataset-config.subscriber.js.map +1 -0
- package/dist/subscribers/{question.subscriber.d.ts → dashboard-question.subscriber.d.ts} +7 -7
- package/dist/subscribers/dashboard-question.subscriber.d.ts.map +1 -0
- package/dist/subscribers/{question.subscriber.js → dashboard-question.subscriber.js} +8 -8
- package/dist/subscribers/dashboard-question.subscriber.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/controllers/ai-interaction.controller.ts +8 -2
- package/src/controllers/{question-sql-dataset-config.controller.ts → dashboard-question-sql-dataset-config.controller.ts} +10 -10
- package/src/controllers/{question.controller.ts → dashboard-question.controller.ts} +10 -10
- package/src/dtos/{create-question-sql-dataset-config.dto.ts → create-dashboard-question-sql-dataset-config.dto.ts} +1 -1
- package/src/dtos/{create-question.dto.ts → create-dashboard-question.dto.ts} +9 -4
- package/src/dtos/create-dashboard.dto.ts +3 -3
- package/src/dtos/{update-question-sql-dataset-config.dto.ts → update-dashboard-question-sql-dataset-config.dto.ts} +1 -1
- package/src/dtos/{update-question.dto.ts → update-dashboard-question.dto.ts} +9 -4
- package/src/dtos/update-dashboard.dto.ts +3 -3
- package/src/entities/{question-sql-dataset-config.entity.ts → dashboard-question-sql-dataset-config.entity.ts} +5 -5
- package/src/entities/{question.entity.ts → dashboard-question.entity.ts} +8 -5
- package/src/entities/dashboard.entity.ts +3 -3
- package/src/index.ts +7 -4
- package/src/interfaces.ts +18 -2
- package/src/jobs/database/trigger-mcp-client-publisher-database.service.ts +22 -0
- package/src/jobs/database/trigger-mcp-client-queue-options.ts +9 -0
- package/src/jobs/database/trigger-mcp-client-subscriber-database.service.ts +71 -0
- package/src/repository/dashboard.repository.ts +54 -53
- package/src/seeders/seed-data/solid-core-metadata.json +88 -131
- package/src/services/ai-interaction.service.ts +68 -32
- package/src/services/chatter-message.service.ts +12 -6
- package/src/services/{question-sql-dataset-config.service.ts → dashboard-question-sql-dataset-config.service.ts} +5 -5
- package/src/services/{question.service.ts → dashboard-question.service.ts} +6 -6
- package/src/services/field-metadata.service.ts +1 -0
- package/src/services/import-transaction.service.ts +29 -1
- package/src/services/list-of-values.service.ts +5 -0
- package/src/services/question-data-providers/chartjs-sql-data-provider.service.ts +14 -10
- package/src/services/question-data-providers/helpers.ts +23 -4
- package/src/services/question-data-providers/prime-react-datatable-sql-data-provider.service.ts +12 -6
- package/src/services/question-data-providers/prime-react-meter-group-sql-data-provider.service.ts +14 -5
- package/src/services/question-data-providers/test.sql +1 -0
- package/src/services/queues/publisher-factory.service.ts +1 -1
- package/src/solid-core.module.ts +54 -39
- package/src/subscribers/{question-sql-dataset-config.subscriber.ts → dashboard-question-sql-dataset-config.subscriber.ts} +8 -10
- package/src/subscribers/{question.subscriber.ts → dashboard-question.subscriber.ts} +7 -10
- package/dist/controllers/question-sql-dataset-config.controller.d.ts +0 -43
- package/dist/controllers/question-sql-dataset-config.controller.d.ts.map +0 -1
- package/dist/controllers/question-sql-dataset-config.controller.js.map +0 -1
- package/dist/controllers/question.controller.d.ts +0 -45
- package/dist/controllers/question.controller.d.ts.map +0 -1
- package/dist/controllers/question.controller.js.map +0 -1
- package/dist/dtos/create-question-sql-dataset-config.dto.d.ts.map +0 -1
- package/dist/dtos/create-question-sql-dataset-config.dto.js.map +0 -1
- package/dist/dtos/create-question.dto.d.ts +0 -16
- package/dist/dtos/create-question.dto.d.ts.map +0 -1
- package/dist/dtos/create-question.dto.js.map +0 -1
- package/dist/dtos/update-question-sql-dataset-config.dto.d.ts.map +0 -1
- package/dist/dtos/update-question-sql-dataset-config.dto.js.map +0 -1
- package/dist/dtos/update-question.dto.d.ts +0 -17
- package/dist/dtos/update-question.dto.d.ts.map +0 -1
- package/dist/dtos/update-question.dto.js.map +0 -1
- package/dist/entities/question-sql-dataset-config.entity.d.ts +0 -13
- package/dist/entities/question-sql-dataset-config.entity.d.ts.map +0 -1
- package/dist/entities/question-sql-dataset-config.entity.js.map +0 -1
- package/dist/entities/question.entity.d.ts +0 -15
- package/dist/entities/question.entity.d.ts.map +0 -1
- package/dist/entities/question.entity.js.map +0 -1
- package/dist/services/question-sql-dataset-config.service.d.ts.map +0 -1
- package/dist/services/question-sql-dataset-config.service.js.map +0 -1
- package/dist/services/question.service.d.ts.map +0 -1
- package/dist/services/question.service.js.map +0 -1
- package/dist/subscribers/question-sql-dataset-config.subscriber.d.ts.map +0 -1
- package/dist/subscribers/question-sql-dataset-config.subscriber.js.map +0 -1
- package/dist/subscribers/question.subscriber.d.ts.map +0 -1
- package/dist/subscribers/question.subscriber.js.map +0 -1
- package/src/services/1. Create a context menu option i.py +0 -12
package/dist/interfaces.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":";;;AAgJA,IAAY,SAEX;AAFD,WAAY,SAAS;IACnB,gDAAmC,CAAA;AACrC,CAAC,EAFW,SAAS,yBAAT,SAAS,QAEpB;AAED,MAAa,YAAY;IACvB,YACS,IAAS,EACT,OAAU;QADV,SAAI,GAAJ,IAAI,CAAK;QACT,YAAO,GAAP,OAAO,CAAG;IACf,CAAC;CACN;AALD,oCAKC;AAmDD,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,mCAAqB,CAAA;IACrB,mCAAqB,CAAA;AACvB,CAAC,EAHW,UAAU,0BAAV,UAAU,QAGrB","sourcesContent":["import { CreateEmailTemplateDto } from 'src/dtos/create-email-template.dto';\nimport { CreateSmsTemplateDto } from 'src/dtos/create-sms-template.dto';\nimport { SignUpDto } from 'src/dtos/sign-up.dto';\nimport { Readable } from 'stream';\nimport { CreateMediaStorageProviderMetadataDto } from './dtos/create-media-storage-provider-metadata.dto';\nimport { DatasourceType } from './dtos/create-model-metadata.dto';\nimport { CreateModuleMetadataDto } from './dtos/create-module-metadata.dto';\nimport { CreateRoleMetadataDto } from './dtos/create-role-metadata.dto';\nimport { CreateSecurityRuleDto } from './dtos/create-security-rule.dto';\nimport { FieldMetadata } from './entities/field-metadata.entity';\nimport { Media } from './entities/media.entity';\nimport { DashboardQuestion } from './entities/dashboard-question.entity';\nimport { ComputedFieldMetadata } from './helpers/solid-registry';\nimport { SqlExpression } from './services/question-data-providers/chartjs-sql-data-provider.service';\nimport { CreateDashboardDto } from './dtos/create-dashboard.dto';\n\nexport interface FieldCrudManager {\n // fieldMetadata: FieldMetadata;\n // entityManager?: EntityManager;\n // createDto: any;\n // files : Array<Express.Multer.File>;\n validate(\n dto: any,\n files: Array<Express.Multer.File>,\n ): ValidationError[] | Promise<ValidationError[]>;\n transformForCreate(dto: any, ctxt?: any): any | Promise<any>;\n}\n\nexport interface ValidationError {\n field: string;\n error: string;\n}\n\n// export interface MediaStorage\nexport interface MediaStorageProvider<T> {\n store(files: Express.Multer.File[], entity: T, mediaFieldMetadata: FieldMetadata): Promise<Media[]>;\n delete(entity: T, mediaFieldMetadata: FieldMetadata): Promise<void>;\n retrieve(entity: T, mediaFieldMetadata: FieldMetadata): Promise<Media[]>;\n storeStreams(streamPairs: [Readable, string][], entity: T, mediaFieldMetadata: FieldMetadata): Promise<Media[]>;\n // delete(file: string): Promise<void>;\n}\n\nexport interface ModuleMetadataConfiguration {\n moduleMetadata?: CreateModuleMetadataDto,\n roles?: CreateRoleMetadataDto[],\n users?: SignUpDto[],\n actions?: any[],\n menus?: any[],\n views?: any[],\n emailTemplates?: CreateEmailTemplateDto[],\n smsTemplates?: CreateSmsTemplateDto[],\n mediaStorageProviders?: CreateMediaStorageProviderMetadataDto[]\n securityRules?: CreateSecurityRuleDto[],\n dashboards?: CreateDashboardDto[],\n}\n\nexport interface CodeGenerationOptions {\n moduleId?: number;\n moduleUserKey?: string;\n modelId?: number;\n modelUserKey?: string;\n fieldIdsForRemoval?: number[];\n dryRun?: boolean;\n}\n\nexport interface TriggerMcpClientOptions {\n aiInteractionId: number;\n}\n\nexport interface McpResponse {\n success: boolean;\n request: string;\n response: string;\n model?: string;\n tools_invoked?: string[];\n tool_calls?: any[];\n duration_ms?: number;\n errors?: string[];\n trace?: string[];\n}\n\nexport interface ISelectionProviderContext {\n // query: string;\n}\n\nexport interface ISelectionProviderValues {\n label: string;\n value: string;\n}\n\nexport interface ISelectionProvider<T extends ISelectionProviderContext> {\n help(): string;\n\n name(): string;\n\n value(optionValue: string, ctxt: T): Promise<ISelectionProviderValues | any>;\n\n values(query: any, ctxt: T): Promise<readonly ISelectionProviderValues[]>;\n}\n\nexport interface IDashboardVariableSelectionProvider<T extends ISelectionProviderContext> extends ISelectionProvider<T> {\n}\n\nexport interface IDashboardQuestionDataProvider<TContext, TData> {\n help(): string;\n\n name(): string;\n\n getData(question: DashboardQuestion, expressions?: SqlExpression[], ctxt?: TContext): Promise<TData[] | TData>;\n}\n\n/**\n * @deprecated Use `IEntityComputedFieldProvider` instead.\n */\nexport interface IComputedFieldProvider<T> {\n help(): string;\n\n name(): string;\n\n valueType(): string;\n\n computeValue(dto: any, ctxt: T): Promise<string | number>; // FIXME : Improve the types to make it more specific using generics\n}\n\nexport interface IEntityComputedFieldProvider {\n help(): string;\n\n name(): string;\n}\n\nexport interface IEntityPreComputeFieldProvider<TTriggerEntity, TContext, TValue> extends IEntityComputedFieldProvider {\n preComputeValue(entity: TTriggerEntity, computedFieldMetadata: ComputedFieldMetadata<TContext>): Promise<TValue>;\n}\n\nexport interface IEntityPostComputeFieldProvider<TTriggerEntity, TContext> extends IEntityComputedFieldProvider {\n postComputeAndSaveValue(triggerEntity: TTriggerEntity, computedFieldMetadata: ComputedFieldMetadata<TContext>): Promise<void>;\n}\n\nexport interface ISolidDatabaseModule {\n name(): string;\n\n type(): DatasourceType;\n}\n\nexport enum EventType {\n USER_REGISTERED = 'user.registered',\n}\n\nexport class EventDetails<T> {\n constructor(\n public type: any,\n public payload: T,\n ) { }\n}\n\nexport interface IMail {\n sendEmail(\n to: string,\n subject: string,\n body: string,\n shouldQueueEmails: boolean,\n wrapperAttachments?: MailAttachmentWrapper[],\n attachments?: MailAttachment[],\n parentEntity?: any,\n parentEntityId?: any,\n ): Promise<void>;\n\n sendEmailUsingTemplate(\n to: string,\n templateName: string,\n templateParams: any,\n shouldQueueEmails: boolean,\n wrapperAttachments?: MailAttachmentWrapper[],\n attachments?: MailAttachment[],\n parentEntity?: any,\n parentEntityId?: any,\n ): Promise<void>;\n}\n\nexport interface ISMS {\n sendSMS(to: string, body: string, shouldQueueSms: boolean): Promise<void>;\n\n sendSMSUsingTemplate(\n to: string,\n templateName: string,\n templateParams: any,\n shouldQueueSms: boolean,\n ): Promise<void>;\n}\n\nexport interface MailAttachmentWrapper {\n relativePath?: string;\n attachment?: MailAttachment;\n}\n\nexport interface MailAttachment {\n filename: string;\n templatePath?: string;\n templateParams?: any;\n content?: string | Buffer;\n contentType?: string;\n path?: string;\n}\n\nexport enum BrokerType {\n RabbitMQ = 'rabbitmq',\n Database = 'database'\n}\n\nexport interface QueuesModuleOptions {\n name: string;\n type: BrokerType;\n queueName: string;\n}\n\nexport type MediaWithFullUrl = Media & {\n _full_url: string;\n};\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { QueuesModuleOptions, TriggerMcpClientOptions } from "src/interfaces";
|
|
2
|
+
import { MqMessageQueueService } from "src/services/mq-message-queue.service";
|
|
3
|
+
import { MqMessageService } from "src/services/mq-message.service";
|
|
4
|
+
import { DatabasePublisher } from "src/services/queues/database-publisher.service";
|
|
5
|
+
export declare class TriggerMcpClientPublisherDatabase extends DatabasePublisher<TriggerMcpClientOptions> {
|
|
6
|
+
protected readonly mqMessageService: MqMessageService;
|
|
7
|
+
protected readonly mqMessageQueueService: MqMessageQueueService;
|
|
8
|
+
constructor(mqMessageService: MqMessageService, mqMessageQueueService: MqMessageQueueService);
|
|
9
|
+
options(): QueuesModuleOptions;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=trigger-mcp-client-publisher-database.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trigger-mcp-client-publisher-database.service.d.ts","sourceRoot":"","sources":["../../../src/jobs/database/trigger-mcp-client-publisher-database.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AAGnF,qBACa,iCAAkC,SAAQ,iBAAiB,CAAC,uBAAuB,CAAC;IAEzF,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;IACrD,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;gBAD5C,gBAAgB,EAAE,gBAAgB,EAClC,qBAAqB,EAAE,qBAAqB;IAKnE,OAAO,IAAI,mBAAmB;CAKjC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.TriggerMcpClientPublisherDatabase = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const mq_message_queue_service_1 = require("../../services/mq-message-queue.service");
|
|
18
|
+
const mq_message_service_1 = require("../../services/mq-message.service");
|
|
19
|
+
const database_publisher_service_1 = require("../../services/queues/database-publisher.service");
|
|
20
|
+
const trigger_mcp_client_queue_options_1 = __importDefault(require("./trigger-mcp-client-queue-options"));
|
|
21
|
+
let TriggerMcpClientPublisherDatabase = class TriggerMcpClientPublisherDatabase extends database_publisher_service_1.DatabasePublisher {
|
|
22
|
+
constructor(mqMessageService, mqMessageQueueService) {
|
|
23
|
+
super(mqMessageService, mqMessageQueueService);
|
|
24
|
+
this.mqMessageService = mqMessageService;
|
|
25
|
+
this.mqMessageQueueService = mqMessageQueueService;
|
|
26
|
+
}
|
|
27
|
+
options() {
|
|
28
|
+
return {
|
|
29
|
+
...trigger_mcp_client_queue_options_1.default
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
exports.TriggerMcpClientPublisherDatabase = TriggerMcpClientPublisherDatabase;
|
|
34
|
+
exports.TriggerMcpClientPublisherDatabase = TriggerMcpClientPublisherDatabase = __decorate([
|
|
35
|
+
(0, common_1.Injectable)(),
|
|
36
|
+
__metadata("design:paramtypes", [mq_message_service_1.MqMessageService,
|
|
37
|
+
mq_message_queue_service_1.MqMessageQueueService])
|
|
38
|
+
], TriggerMcpClientPublisherDatabase);
|
|
39
|
+
//# sourceMappingURL=trigger-mcp-client-publisher-database.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trigger-mcp-client-publisher-database.service.js","sourceRoot":"","sources":["../../../src/jobs/database/trigger-mcp-client-publisher-database.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4C;AAE5C,sFAA8E;AAC9E,0EAAmE;AACnE,iGAAmF;AACnF,0GAA8E;AAGvE,IAAM,iCAAiC,GAAvC,MAAM,iCAAkC,SAAQ,8CAA0C;IAC7F,YACuB,gBAAkC,EAClC,qBAA4C;QAE/D,KAAK,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;QAH5B,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,0BAAqB,GAArB,qBAAqB,CAAuB;IAGnE,CAAC;IAED,OAAO;QACH,OAAO;YACH,GAAG,0CAA4B;SAClC,CAAC;IACN,CAAC;CACJ,CAAA;AAbY,8EAAiC;4CAAjC,iCAAiC;IAD7C,IAAA,mBAAU,GAAE;qCAGgC,qCAAgB;QACX,gDAAqB;GAH1D,iCAAiC,CAa7C","sourcesContent":["import { Injectable } from \"@nestjs/common\";\nimport { QueuesModuleOptions, TriggerMcpClientOptions } from \"src/interfaces\";\nimport { MqMessageQueueService } from \"src/services/mq-message-queue.service\";\nimport { MqMessageService } from \"src/services/mq-message.service\";\nimport { DatabasePublisher } from \"src/services/queues/database-publisher.service\";\nimport triggerMcpClientQueueOptions from \"./trigger-mcp-client-queue-options\";\n\n@Injectable()\nexport class TriggerMcpClientPublisherDatabase extends DatabasePublisher<TriggerMcpClientOptions> {\n constructor(\n protected readonly mqMessageService: MqMessageService,\n protected readonly mqMessageQueueService: MqMessageQueueService,\n ) {\n super(mqMessageService, mqMessageQueueService);\n }\n\n options(): QueuesModuleOptions {\n return {\n ...triggerMcpClientQueueOptions\n };\n }\n}"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trigger-mcp-client-queue-options.d.ts","sourceRoot":"","sources":["../../../src/jobs/database/trigger-mcp-client-queue-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;;;;;;AAI5C,wBAIE"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const interfaces_1 = require("../../interfaces");
|
|
4
|
+
const TRIGGER_MCP_CLIENT_QUEUE_NAME = 'trigger_mcp_client_queue';
|
|
5
|
+
exports.default = {
|
|
6
|
+
name: 'triggerMcpClientQueue',
|
|
7
|
+
type: interfaces_1.BrokerType.Database,
|
|
8
|
+
queueName: TRIGGER_MCP_CLIENT_QUEUE_NAME,
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=trigger-mcp-client-queue-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trigger-mcp-client-queue-options.js","sourceRoot":"","sources":["../../../src/jobs/database/trigger-mcp-client-queue-options.ts"],"names":[],"mappings":";;AAAA,iDAA4C;AAE5C,MAAM,6BAA6B,GAAG,0BAA0B,CAAC;AAEjE,kBAAe;IACX,IAAI,EAAE,uBAAuB;IAC7B,IAAI,EAAE,uBAAU,CAAC,QAAQ;IACzB,SAAS,EAAE,6BAA6B;CAC3C,CAAC","sourcesContent":["import { BrokerType } from \"src/interfaces\";\n\nconst TRIGGER_MCP_CLIENT_QUEUE_NAME = 'trigger_mcp_client_queue';\n\nexport default {\n name: 'triggerMcpClientQueue',\n type: BrokerType.Database,\n queueName: TRIGGER_MCP_CLIENT_QUEUE_NAME,\n};\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { QueueMessage } from 'src/interfaces/mq';
|
|
2
|
+
import { MqMessageService } from '../../services/mq-message.service';
|
|
3
|
+
import { MqMessageQueueService } from '../../services/mq-message-queue.service';
|
|
4
|
+
import { QueuesModuleOptions, TriggerMcpClientOptions } from "../../interfaces";
|
|
5
|
+
import { DatabaseSubscriber } from 'src/services/queues/database-subscriber.service';
|
|
6
|
+
import { AiInteractionService } from 'src/services/ai-interaction.service';
|
|
7
|
+
export declare class TriggerMcpClientSubscriberDatabase extends DatabaseSubscriber<TriggerMcpClientOptions> {
|
|
8
|
+
readonly mqMessageService: MqMessageService;
|
|
9
|
+
readonly mqMessageQueueService: MqMessageQueueService;
|
|
10
|
+
readonly aiInteractionService: AiInteractionService;
|
|
11
|
+
private readonly triggerMcpClientSubscriberLogger;
|
|
12
|
+
constructor(mqMessageService: MqMessageService, mqMessageQueueService: MqMessageQueueService, aiInteractionService: AiInteractionService);
|
|
13
|
+
options(): QueuesModuleOptions;
|
|
14
|
+
subscribe(message: QueueMessage<TriggerMcpClientOptions>): Promise<import("../../interfaces").McpResponse>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=trigger-mcp-client-subscriber-database.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trigger-mcp-client-subscriber-database.service.d.ts","sourceRoot":"","sources":["../../../src/jobs/database/trigger-mcp-client-subscriber-database.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yCAAyC,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AAErF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E,qBACa,kCAAmC,SAAQ,kBAAkB,CAAC,uBAAuB,CAAC;IAI3F,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;IAC3C,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB;IACrD,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB;IALvD,OAAO,CAAC,QAAQ,CAAC,gCAAgC,CAAuD;gBAG3F,gBAAgB,EAAE,gBAAgB,EAClC,qBAAqB,EAAE,qBAAqB,EAC5C,oBAAoB,EAAE,oBAAoB;IAKvD,OAAO,IAAI,mBAAmB;IAMxB,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,uBAAuB,CAAC;CA0CjE"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
var TriggerMcpClientSubscriberDatabase_1;
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.TriggerMcpClientSubscriberDatabase = void 0;
|
|
17
|
+
const common_1 = require("@nestjs/common");
|
|
18
|
+
const mq_message_service_1 = require("../../services/mq-message.service");
|
|
19
|
+
const mq_message_queue_service_1 = require("../../services/mq-message-queue.service");
|
|
20
|
+
const database_subscriber_service_1 = require("../../services/queues/database-subscriber.service");
|
|
21
|
+
const trigger_mcp_client_queue_options_1 = __importDefault(require("./trigger-mcp-client-queue-options"));
|
|
22
|
+
const ai_interaction_service_1 = require("../../services/ai-interaction.service");
|
|
23
|
+
let TriggerMcpClientSubscriberDatabase = TriggerMcpClientSubscriberDatabase_1 = class TriggerMcpClientSubscriberDatabase extends database_subscriber_service_1.DatabaseSubscriber {
|
|
24
|
+
constructor(mqMessageService, mqMessageQueueService, aiInteractionService) {
|
|
25
|
+
super(mqMessageService, mqMessageQueueService);
|
|
26
|
+
this.mqMessageService = mqMessageService;
|
|
27
|
+
this.mqMessageQueueService = mqMessageQueueService;
|
|
28
|
+
this.aiInteractionService = aiInteractionService;
|
|
29
|
+
this.triggerMcpClientSubscriberLogger = new common_1.Logger(TriggerMcpClientSubscriberDatabase_1.name);
|
|
30
|
+
}
|
|
31
|
+
options() {
|
|
32
|
+
return {
|
|
33
|
+
...trigger_mcp_client_queue_options_1.default
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
async subscribe(message) {
|
|
37
|
+
this.triggerMcpClientSubscriberLogger.debug(`Received message: ${JSON.stringify(message)}`);
|
|
38
|
+
const codeGnerationOptions = message.payload;
|
|
39
|
+
const aiInteraction = await this.aiInteractionService.findOne(codeGnerationOptions.aiInteractionId, {
|
|
40
|
+
populate: ['user']
|
|
41
|
+
});
|
|
42
|
+
const prompt = aiInteraction.message;
|
|
43
|
+
const aiResponse = await this.aiInteractionService.runMcpPrompt(prompt);
|
|
44
|
+
let nestedResponse = aiResponse.response.trim();
|
|
45
|
+
if (!aiResponse.success) {
|
|
46
|
+
throw new Error(aiResponse.errors.join(','));
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
await this.aiInteractionService.create({
|
|
50
|
+
userId: aiInteraction.user.id,
|
|
51
|
+
threadId: aiInteraction.threadId,
|
|
52
|
+
role: 'gen-ai',
|
|
53
|
+
message: nestedResponse,
|
|
54
|
+
contentType: '',
|
|
55
|
+
errorMessage: '',
|
|
56
|
+
modelUsed: aiResponse.model,
|
|
57
|
+
responseTimeMs: aiResponse.duration_ms,
|
|
58
|
+
metadata: JSON.stringify(aiResponse)
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
return aiResponse;
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
exports.TriggerMcpClientSubscriberDatabase = TriggerMcpClientSubscriberDatabase;
|
|
65
|
+
exports.TriggerMcpClientSubscriberDatabase = TriggerMcpClientSubscriberDatabase = TriggerMcpClientSubscriberDatabase_1 = __decorate([
|
|
66
|
+
(0, common_1.Injectable)(),
|
|
67
|
+
__metadata("design:paramtypes", [mq_message_service_1.MqMessageService,
|
|
68
|
+
mq_message_queue_service_1.MqMessageQueueService,
|
|
69
|
+
ai_interaction_service_1.AiInteractionService])
|
|
70
|
+
], TriggerMcpClientSubscriberDatabase);
|
|
71
|
+
//# sourceMappingURL=trigger-mcp-client-subscriber-database.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trigger-mcp-client-subscriber-database.service.js","sourceRoot":"","sources":["../../../src/jobs/database/trigger-mcp-client-subscriber-database.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAoD;AAGpD,0EAAqE;AACrE,sFAAgF;AAEhF,mGAAqF;AACrF,0GAA8E;AAC9E,kFAA2E;AAGpE,IAAM,kCAAkC,0CAAxC,MAAM,kCAAmC,SAAQ,gDAA2C;IAG/F,YACa,gBAAkC,EAClC,qBAA4C,EAC5C,oBAA0C;QAEnD,KAAK,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;QAJtC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,0BAAqB,GAArB,qBAAqB,CAAuB;QAC5C,yBAAoB,GAApB,oBAAoB,CAAsB;QALtC,qCAAgC,GAAG,IAAI,eAAM,CAAC,oCAAkC,CAAC,IAAI,CAAC,CAAC;IAQxG,CAAC;IAED,OAAO;QACH,OAAO;YACH,GAAG,0CAA4B;SAClC,CAAA;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,OAA8C;QAC1D,IAAI,CAAC,gCAAgC,CAAC,KAAK,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAE5F,MAAM,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;QAE7C,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,oBAAoB,CAAC,eAAe,EAAE;YAChG,QAAQ,EAAE,CAAC,MAAM,CAAC;SACrB,CAAC,CAAC;QAGH,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC;QAGrC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACxE,IAAI,cAAc,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChD,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAEtB,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACjD,CAAC;aACI,CAAC;YAQF,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;gBACnC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC,EAAE;gBAC7B,QAAQ,EAAE,aAAa,CAAC,QAAQ;gBAChC,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,cAAc;gBACvB,WAAW,EAAE,EAAE;gBACf,YAAY,EAAE,EAAE;gBAChB,SAAS,EAAE,UAAU,CAAC,KAAK;gBAC3B,cAAc,EAAE,UAAU,CAAC,WAAW;gBACtC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;aACvC,CAAC,CAAA;QACN,CAAC;QAED,OAAO,UAAU,CAAC;IACtB,CAAC;CACJ,CAAA;AA3DY,gFAAkC;6CAAlC,kCAAkC;IAD9C,IAAA,mBAAU,GAAE;qCAKsB,qCAAgB;QACX,gDAAqB;QACtB,6CAAoB;GAN9C,kCAAkC,CA2D9C","sourcesContent":["import { Injectable, Logger } from '@nestjs/common';\n\nimport { QueueMessage } from 'src/interfaces/mq';\nimport { MqMessageService } from '../../services/mq-message.service';\nimport { MqMessageQueueService } from '../../services/mq-message-queue.service';\nimport { QueuesModuleOptions, TriggerMcpClientOptions } from \"../../interfaces\";\nimport { DatabaseSubscriber } from 'src/services/queues/database-subscriber.service';\nimport triggerMcpClientQueueOptions from \"./trigger-mcp-client-queue-options\";\nimport { AiInteractionService } from 'src/services/ai-interaction.service';\n\n@Injectable()\nexport class TriggerMcpClientSubscriberDatabase extends DatabaseSubscriber<TriggerMcpClientOptions> {\n private readonly triggerMcpClientSubscriberLogger = new Logger(TriggerMcpClientSubscriberDatabase.name);\n\n constructor(\n readonly mqMessageService: MqMessageService,\n readonly mqMessageQueueService: MqMessageQueueService,\n readonly aiInteractionService: AiInteractionService,\n ) {\n super(mqMessageService, mqMessageQueueService);\n }\n\n options(): QueuesModuleOptions {\n return {\n ...triggerMcpClientQueueOptions\n }\n }\n\n async subscribe(message: QueueMessage<TriggerMcpClientOptions>) {\n this.triggerMcpClientSubscriberLogger.debug(`Received message: ${JSON.stringify(message)}`);\n\n const codeGnerationOptions = message.payload;\n\n const aiInteraction = await this.aiInteractionService.findOne(codeGnerationOptions.aiInteractionId, {\n populate: ['user']\n });\n\n // The message contains the users prompt.\n const prompt = aiInteraction.message;\n\n // Use this to invoke our mcp client\n const aiResponse = await this.aiInteractionService.runMcpPrompt(prompt);\n let nestedResponse = aiResponse.response.trim();\n if (!aiResponse.success) {\n // update the job entry with success... raising an error will lead the job to be marked as failed...\n throw new Error(aiResponse.errors.join(','));\n }\n else {\n // TODO: create a new entry not update...\n // const updatedDto = {\n // ...aiInteraction,\n // message: nestedResponse,\n // }\n // await this.aiInteractionService.update(codeGnerationOptions.aiInteractionId, updatedDto);\n\n await this.aiInteractionService.create({\n userId: aiInteraction.user.id,\n threadId: aiInteraction.threadId,\n role: 'gen-ai',\n message: nestedResponse,\n contentType: '',\n errorMessage: '',\n modelUsed: aiResponse.model,\n responseTimeMs: aiResponse.duration_ms,\n metadata: JSON.stringify(aiResponse)\n })\n }\n\n return aiResponse;\n }\n}\n"]}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { CreateDashboardDto } from "src/dtos/create-dashboard.dto";
|
|
2
1
|
import { Dashboard } from "src/entities/dashboard.entity";
|
|
3
2
|
import { DataSource, Repository } from "typeorm";
|
|
4
3
|
export declare class DashboardRepository extends Repository<Dashboard> {
|
|
5
4
|
private dataSource;
|
|
6
5
|
private readonly logger;
|
|
7
6
|
constructor(dataSource: DataSource);
|
|
8
|
-
upsertWithDto(createDto:
|
|
9
|
-
private cleanupRemovedRelations;
|
|
7
|
+
upsertWithDto(createDto: any): Promise<Dashboard | Dashboard[]>;
|
|
10
8
|
}
|
|
11
9
|
//# sourceMappingURL=dashboard.repository.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.repository.d.ts","sourceRoot":"","sources":["../../src/repository/dashboard.repository.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dashboard.repository.d.ts","sourceRoot":"","sources":["../../src/repository/dashboard.repository.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAI1D,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEjD,qBACa,mBAAoB,SAAQ,UAAU,CAAC,SAAS,CAAC;IAGtD,OAAO,CAAC,UAAU;IAFtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;gBAEhD,UAAU,EAAE,UAAU;IAM5B,aAAa,CAAC,SAAS,EAAE,GAAG;CAiFrC"}
|
|
@@ -11,11 +11,8 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.DashboardRepository = void 0;
|
|
13
13
|
const common_1 = require("@nestjs/common");
|
|
14
|
-
const dashboard_variable_entity_1 = require("../entities/dashboard-variable.entity");
|
|
15
14
|
const dashboard_entity_1 = require("../entities/dashboard.entity");
|
|
16
15
|
const module_metadata_entity_1 = require("../entities/module-metadata.entity");
|
|
17
|
-
const question_sql_dataset_config_entity_1 = require("../entities/question-sql-dataset-config.entity");
|
|
18
|
-
const question_entity_1 = require("../entities/question.entity");
|
|
19
16
|
const typeorm_1 = require("typeorm");
|
|
20
17
|
let DashboardRepository = class DashboardRepository extends typeorm_1.Repository {
|
|
21
18
|
constructor(dataSource) {
|
|
@@ -32,6 +29,46 @@ let DashboardRepository = class DashboardRepository extends typeorm_1.Repository
|
|
|
32
29
|
where: { name: createDto.name },
|
|
33
30
|
relations: ['dashboardVariables', 'questions', 'questions.questionSqlDatasetConfigs'],
|
|
34
31
|
});
|
|
32
|
+
if (existingDashboard) {
|
|
33
|
+
existingDashboard.layoutJson = JSON.stringify(createDto.layoutJson ?? {});
|
|
34
|
+
existingDashboard.module = module;
|
|
35
|
+
existingDashboard.dashboardVariables = createDto.dashboardVariables?.map(variable => {
|
|
36
|
+
const existingVar = existingDashboard.dashboardVariables.find(v => v.variableName === variable.variableName);
|
|
37
|
+
if (existingVar) {
|
|
38
|
+
return Object.assign(existingVar, {
|
|
39
|
+
...variable,
|
|
40
|
+
selectionStaticValues: JSON.stringify(variable.selectionStaticValues ?? []),
|
|
41
|
+
defaultValue: JSON.stringify(variable.defaultValue ?? []),
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
return {
|
|
45
|
+
...variable,
|
|
46
|
+
selectionStaticValues: JSON.stringify(variable.selectionStaticValues ?? []),
|
|
47
|
+
defaultValue: JSON.stringify(variable.defaultValue ?? []),
|
|
48
|
+
};
|
|
49
|
+
}) ?? [];
|
|
50
|
+
existingDashboard.questions = createDto.questions?.map(question => {
|
|
51
|
+
const existingQuestion = existingDashboard.questions.find(q => q.name === question.name);
|
|
52
|
+
const questionData = {
|
|
53
|
+
...question,
|
|
54
|
+
questionSqlDatasetConfigs: question.questionSqlDatasetConfigs?.map(cfg => {
|
|
55
|
+
const existingCfg = existingQuestion?.questionSqlDatasetConfigs.find(c => c.datasetName === cfg.datasetName);
|
|
56
|
+
if (existingCfg) {
|
|
57
|
+
return Object.assign(existingCfg, {
|
|
58
|
+
...cfg,
|
|
59
|
+
options: JSON.stringify(cfg.options ?? {}),
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
...cfg,
|
|
64
|
+
options: JSON.stringify(cfg.options ?? {}),
|
|
65
|
+
};
|
|
66
|
+
}) ?? [],
|
|
67
|
+
};
|
|
68
|
+
return existingQuestion ? Object.assign(existingQuestion, questionData) : questionData;
|
|
69
|
+
}) ?? [];
|
|
70
|
+
return this.save(existingDashboard);
|
|
71
|
+
}
|
|
35
72
|
const dashboardData = {
|
|
36
73
|
...createDto,
|
|
37
74
|
module,
|
|
@@ -49,40 +86,8 @@ let DashboardRepository = class DashboardRepository extends typeorm_1.Repository
|
|
|
49
86
|
})),
|
|
50
87
|
})),
|
|
51
88
|
};
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
this.merge(existingDashboard, dashboardData);
|
|
55
|
-
return this.save(existingDashboard);
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
const newDashboard = this.create(dashboardData);
|
|
59
|
-
return this.save(newDashboard);
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
async cleanupRemovedRelations(existing, dto) {
|
|
63
|
-
const dashboardVariableRepo = this.dataSource.getRepository(dashboard_variable_entity_1.DashboardVariable);
|
|
64
|
-
const questionRepo = this.dataSource.getRepository(question_entity_1.Question);
|
|
65
|
-
const datasetConfigRepo = this.dataSource.getRepository(question_sql_dataset_config_entity_1.QuestionSqlDatasetConfig);
|
|
66
|
-
const dtoVariableNames = new Set(dto.dashboardVariables.map(v => v.variableName));
|
|
67
|
-
const variablesToRemove = existing.dashboardVariables.filter(v => !dtoVariableNames.has(v.variableName));
|
|
68
|
-
if (variablesToRemove.length > 0) {
|
|
69
|
-
await dashboardVariableRepo.remove(variablesToRemove);
|
|
70
|
-
}
|
|
71
|
-
const dtoQuestionNames = new Set(dto.questions.map(q => q.name));
|
|
72
|
-
const questionsToRemove = existing.questions.filter(q => !dtoQuestionNames.has(q.name));
|
|
73
|
-
if (questionsToRemove.length > 0) {
|
|
74
|
-
await questionRepo.remove(questionsToRemove);
|
|
75
|
-
}
|
|
76
|
-
for (const existingQuestion of existing.questions) {
|
|
77
|
-
const dtoQuestion = dto.questions.find(q => q.name === existingQuestion.name);
|
|
78
|
-
if (!dtoQuestion)
|
|
79
|
-
continue;
|
|
80
|
-
const dtoDatasetNames = new Set(dtoQuestion.questionSqlDatasetConfigs?.map(cfg => cfg.datasetName));
|
|
81
|
-
const configsToRemove = existingQuestion.questionSqlDatasetConfigs.filter(cfg => !dtoDatasetNames.has(cfg.datasetName));
|
|
82
|
-
if (configsToRemove.length > 0) {
|
|
83
|
-
await datasetConfigRepo.remove(configsToRemove);
|
|
84
|
-
}
|
|
85
|
-
}
|
|
89
|
+
const newDashboard = this.create(dashboardData);
|
|
90
|
+
return this.save(newDashboard);
|
|
86
91
|
}
|
|
87
92
|
};
|
|
88
93
|
exports.DashboardRepository = DashboardRepository;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.repository.js","sourceRoot":"","sources":["../../src/repository/dashboard.repository.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAoD;
|
|
1
|
+
{"version":3,"file":"dashboard.repository.js","sourceRoot":"","sources":["../../src/repository/dashboard.repository.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable, Logger } from \"@nestjs/common\";\nimport { CreateDashboardDto } from \"src/dtos/create-dashboard.dto\";\nimport { DashboardVariable } from \"src/entities/dashboard-variable.entity\";\nimport { Dashboard } from \"src/entities/dashboard.entity\";\nimport { ModuleMetadata } from \"src/entities/module-metadata.entity\";\nimport { DashboardQuestionSqlDatasetConfig } from \"src/entities/dashboard-question-sql-dataset-config.entity\";\nimport { DashboardQuestion } from \"src/entities/dashboard-question.entity\";\nimport { DataSource, Repository } from \"typeorm\";\n\n@Injectable()\nexport class DashboardRepository extends Repository<Dashboard> {\n private readonly logger = new Logger(this.constructor.name);\n constructor(\n private dataSource: DataSource,\n ) {\n super(Dashboard, dataSource.createEntityManager());\n }\n\n\n async upsertWithDto(createDto: any) {\n const moduleMetadataRepository = this.dataSource.getRepository(ModuleMetadata);\n const module = await moduleMetadataRepository.findOneBy({ name: createDto.moduleUserKey });\n\n if (!module) throw new Error(`Module with key ${createDto.moduleUserKey} not found`);\n\n const existingDashboard = await this.findOne({\n where: { name: createDto.name },\n relations: ['dashboardVariables', 'questions', 'questions.questionSqlDatasetConfigs'],\n });\n\n if (existingDashboard) {\n // Update basic fields\n existingDashboard.layoutJson = JSON.stringify(createDto.layoutJson ?? {});\n existingDashboard.module = module;\n\n // Upsert dashboard variables\n existingDashboard.dashboardVariables = createDto.dashboardVariables?.map(variable => {\n const existingVar = existingDashboard.dashboardVariables.find(v => v.variableName === variable.variableName);\n if (existingVar) {\n return Object.assign(existingVar, {\n ...variable,\n selectionStaticValues: JSON.stringify(variable.selectionStaticValues ?? []),\n defaultValue: JSON.stringify(variable.defaultValue ?? []),\n });\n }\n return {\n ...variable,\n selectionStaticValues: JSON.stringify(variable.selectionStaticValues ?? []),\n defaultValue: JSON.stringify(variable.defaultValue ?? []),\n };\n }) ?? [];\n\n // Upsert questions and their configs\n existingDashboard.questions = createDto.questions?.map(question => {\n const existingQuestion = existingDashboard.questions.find(q => q.name === question.name);\n const questionData: any = {\n ...question,\n questionSqlDatasetConfigs: question.questionSqlDatasetConfigs?.map(cfg => {\n const existingCfg = existingQuestion?.questionSqlDatasetConfigs.find(c => c.datasetName === cfg.datasetName);\n if (existingCfg) {\n return Object.assign(existingCfg, {\n ...cfg,\n options: JSON.stringify(cfg.options ?? {}),\n });\n }\n return {\n ...cfg,\n options: JSON.stringify(cfg.options ?? {}),\n };\n }) ?? [],\n };\n\n return existingQuestion ? Object.assign(existingQuestion, questionData) : questionData;\n }) ?? [];\n\n return this.save(existingDashboard);\n }\n\n // Else: new dashboard\n const dashboardData = {\n ...createDto,\n module,\n layoutJson: JSON.stringify(createDto.layoutJson ?? {}),\n dashboardVariables: createDto.dashboardVariables?.map(variable => ({\n ...variable,\n selectionStaticValues: JSON.stringify(variable.selectionStaticValues ?? []),\n defaultValue: JSON.stringify(variable.defaultValue ?? []),\n })),\n questions: createDto.questions?.map(question => ({\n ...question,\n questionSqlDatasetConfigs: question.questionSqlDatasetConfigs?.map(cfg => ({\n ...cfg,\n options: JSON.stringify(cfg.options ?? {}),\n })),\n })),\n };\n\n const newDashboard = this.create(dashboardData);\n return this.save(newDashboard);\n }\n}"]}
|