@memberjunction/server 2.102.0 → 2.103.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memberjunction/server",
3
- "version": "2.102.0",
3
+ "version": "2.103.0",
4
4
  "description": "MemberJunction: This project provides API access via GraphQL to the common data store.",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./src/index.ts",
@@ -22,45 +22,45 @@
22
22
  "dependencies": {
23
23
  "@apollo/server": "^4.9.1",
24
24
  "@graphql-tools/utils": "^10.0.1",
25
- "@memberjunction/actions": "2.102.0",
26
- "@memberjunction/ai": "2.102.0",
27
- "@memberjunction/ai-core-plus": "2.102.0",
28
- "@memberjunction/ai-agents": "2.102.0",
29
- "@memberjunction/aiengine": "2.102.0",
30
- "@memberjunction/ai-prompts": "2.102.0",
31
- "@memberjunction/ai-agent-manager-actions": "2.102.0",
32
- "@memberjunction/ai-mistral": "2.102.0",
33
- "@memberjunction/ai-openai": "2.102.0",
34
- "@memberjunction/ai-anthropic": "2.102.0",
35
- "@memberjunction/ai-groq": "2.102.0",
36
- "@memberjunction/ai-cerebras": "2.102.0",
37
- "@memberjunction/ai-lmstudio": "2.102.0",
38
- "@memberjunction/ai-openrouter": "2.102.0",
39
- "@memberjunction/ai-ollama": "2.102.0",
40
- "@memberjunction/ai-vectors-pinecone": "2.102.0",
41
- "@memberjunction/ai-local-embeddings": "2.102.0",
42
- "@memberjunction/core": "2.102.0",
43
- "@memberjunction/core-actions": "2.102.0",
44
- "@memberjunction/actions-apollo": "2.102.0",
45
- "@memberjunction/actions-bizapps-accounting": "2.102.0",
46
- "@memberjunction/actions-bizapps-crm": "2.102.0",
47
- "@memberjunction/actions-bizapps-lms": "2.102.0",
48
- "@memberjunction/actions-bizapps-social": "2.102.0",
49
- "@memberjunction/component-registry-client-sdk": "2.102.0",
50
- "@memberjunction/core-entities": "2.102.0",
51
- "@memberjunction/core-entities-server": "2.102.0",
52
- "@memberjunction/data-context": "2.102.0",
53
- "@memberjunction/data-context-server": "2.102.0",
54
- "@memberjunction/doc-utils": "2.102.0",
55
- "@memberjunction/entity-communications-server": "2.102.0",
56
- "@memberjunction/external-change-detection": "2.102.0",
57
- "@memberjunction/global": "2.102.0",
58
- "@memberjunction/graphql-dataprovider": "2.102.0",
59
- "@memberjunction/queue": "2.102.0",
60
- "@memberjunction/skip-types": "2.102.0",
61
- "@memberjunction/sqlserver-dataprovider": "2.102.0",
62
- "@memberjunction/storage": "2.102.0",
63
- "@memberjunction/templates": "2.102.0",
25
+ "@memberjunction/actions": "2.103.0",
26
+ "@memberjunction/ai": "2.103.0",
27
+ "@memberjunction/ai-core-plus": "2.103.0",
28
+ "@memberjunction/ai-agents": "2.103.0",
29
+ "@memberjunction/aiengine": "2.103.0",
30
+ "@memberjunction/ai-prompts": "2.103.0",
31
+ "@memberjunction/ai-agent-manager-actions": "2.103.0",
32
+ "@memberjunction/ai-mistral": "2.103.0",
33
+ "@memberjunction/ai-openai": "2.103.0",
34
+ "@memberjunction/ai-anthropic": "2.103.0",
35
+ "@memberjunction/ai-groq": "2.103.0",
36
+ "@memberjunction/ai-cerebras": "2.103.0",
37
+ "@memberjunction/ai-lmstudio": "2.103.0",
38
+ "@memberjunction/ai-openrouter": "2.103.0",
39
+ "@memberjunction/ai-ollama": "2.103.0",
40
+ "@memberjunction/ai-vectors-pinecone": "2.103.0",
41
+ "@memberjunction/ai-local-embeddings": "2.103.0",
42
+ "@memberjunction/core": "2.100.3",
43
+ "@memberjunction/core-actions": "2.103.0",
44
+ "@memberjunction/actions-apollo": "2.103.0",
45
+ "@memberjunction/actions-bizapps-accounting": "2.103.0",
46
+ "@memberjunction/actions-bizapps-crm": "2.103.0",
47
+ "@memberjunction/actions-bizapps-lms": "2.103.0",
48
+ "@memberjunction/actions-bizapps-social": "2.103.0",
49
+ "@memberjunction/component-registry-client-sdk": "2.103.0",
50
+ "@memberjunction/core-entities": "2.103.0",
51
+ "@memberjunction/core-entities-server": "2.103.0",
52
+ "@memberjunction/data-context": "2.103.0",
53
+ "@memberjunction/data-context-server": "2.103.0",
54
+ "@memberjunction/doc-utils": "2.103.0",
55
+ "@memberjunction/entity-communications-server": "2.103.0",
56
+ "@memberjunction/external-change-detection": "2.103.0",
57
+ "@memberjunction/global": "2.100.3",
58
+ "@memberjunction/graphql-dataprovider": "2.103.0",
59
+ "@memberjunction/queue": "2.103.0",
60
+ "@memberjunction/skip-types": "2.103.0",
61
+ "@memberjunction/sqlserver-dataprovider": "2.103.0",
62
+ "@memberjunction/storage": "2.103.0",
63
+ "@memberjunction/templates": "2.103.0",
64
64
  "@types/compression": "^1.7.5",
65
65
  "@types/cors": "^2.8.13",
66
66
  "@types/jsonwebtoken": "9.0.6",
@@ -19,7 +19,7 @@ import { mj_core_schema } from '../config.js';
19
19
 
20
20
 
21
21
 
22
- import { ScheduledActionEntity, ScheduledActionParamEntity, ExplorerNavigationItemEntity, GeneratedCodeCategoryEntity, AIAgentModelEntity, ComponentRegistryEntity, AIAgentNoteTypeEntity, ComponentDependencyEntity, AIAgentRunEntity, AIVendorEntity, TaskTypeEntity, AIConfigurationEntity, AIAgentEntity, AIAgentStepEntity, AIModelCostEntity, AIPromptModelEntity, AIAgentTypeEntity, AIAgentNoteEntity, EnvironmentEntity, AIAgentActionEntity, TaskDependencyEntity, AIModelPriceTypeEntity, CollectionEntity, RecordLinkEntity, AIPromptEntity, AIResultCacheEntity, AIPromptCategoryEntity, AIPromptTypeEntity, CompanyEntity, EmployeeEntity, UserFavoriteEntity, EmployeeCompanyIntegrationEntity, EmployeeRoleEntity, EmployeeSkillEntity, RoleEntity, SkillEntity, IntegrationURLFormatEntity, IntegrationEntity, CompanyIntegrationEntity, EntityFieldEntity, EntityEntity, UserEntity, EntityRelationshipEntity, UserRecordLogEntity, UserViewEntity, CompanyIntegrationRunEntity, CompanyIntegrationRunDetailEntity, ErrorLogEntity, ApplicationEntity, ApplicationEntityEntity, EntityPermissionEntity, UserApplicationEntityEntity, UserApplicationEntity, CompanyIntegrationRunAPILogEntity, ListEntity, ListDetailEntity, UserViewRunEntity, UserViewRunDetailEntity, WorkflowRunEntity, WorkflowEntity, WorkflowEngineEntity, RecordChangeEntity, UserRoleEntity, RowLevelSecurityFilterEntity, AuditLogEntity, AuthorizationEntity, AuthorizationRoleEntity, AuditLogTypeEntity, EntityFieldValueEntity, AIModelEntity, AIActionEntity, AIModelActionEntity, EntityAIActionEntity, AIModelTypeEntity, QueueTypeEntity, QueueEntity, QueueTaskEntity, DashboardEntity, OutputTriggerTypeEntity, OutputFormatTypeEntity, OutputDeliveryTypeEntity, ReportEntity, ReportSnapshotEntity, ResourceTypeEntity, TagEntity, TaggedItemEntity, WorkspaceEntity, WorkspaceItemEntity, DatasetEntity, DatasetItemEntity, ConversationDetailEntity, ConversationEntity, UserNotificationEntity, SchemaInfoEntity, CompanyIntegrationRecordMapEntity, RecordMergeLogEntity, RecordMergeDeletionLogEntity, QueryFieldEntity, QueryCategoryEntity, QueryEntity, QueryPermissionEntity, VectorIndexEntity, EntityDocumentTypeEntity, EntityDocumentRunEntity, VectorDatabaseEntity, EntityRecordDocumentEntity, EntityDocumentEntity, DataContextItemEntity, DataContextEntity, UserViewCategoryEntity, DashboardCategoryEntity, ReportCategoryEntity, FileStorageProviderEntity, FileEntity, FileCategoryEntity, FileEntityRecordLinkEntity, VersionInstallationEntity, DuplicateRunDetailMatchEntity, EntityDocumentSettingEntity, EntitySettingEntity, DuplicateRunEntity, DuplicateRunDetailEntity, ApplicationSettingEntity, ActionCategoryEntity, EntityActionEntity, EntityActionInvocationEntity, ActionAuthorizationEntity, EntityActionInvocationTypeEntity, ActionEntity, EntityActionFilterEntity, ActionFilterEntity, ActionContextTypeEntity, ActionResultCodeEntity, ActionContextEntity, ActionExecutionLogEntity, ActionParamEntity, ActionLibraryEntity, LibraryEntity, ListCategoryEntity, CommunicationProviderEntity, CommunicationRunEntity, CommunicationProviderMessageTypeEntity, CommunicationLogEntity, CommunicationBaseMessageTypeEntity, TemplateEntity, TemplateCategoryEntity, TemplateContentEntity, TemplateParamEntity, TemplateContentTypeEntity, RecommendationEntity, RecommendationProviderEntity, RecommendationRunEntity, RecommendationItemEntity, EntityCommunicationMessageTypeEntity, EntityCommunicationFieldEntity, RecordChangeReplayRunEntity, LibraryItemEntity, EntityRelationshipDisplayComponentEntity, EntityActionParamEntity, ResourcePermissionEntity, ResourceLinkEntity, ConversationArtifactVersionEntity, AIAgentRequestEntity, AIModelVendorEntity, AIVendorTypeDefinitionEntity, ReportUserStateEntity, QueryEntityEntity, DashboardUserStateEntity, ComponentEntity, AccessControlRuleEntity, PublicLinkEntity, ArtifactTypeEntity, AIVendorTypeEntity, ArtifactEntity, ConversationArtifactEntity, AIAgentPromptEntity, ComponentLibraryEntity, DashboardUserPreferenceEntity, QueryParameterEntity, AIAgentRelationshipEntity, ComponentLibraryLinkEntity, ContentProcessRunEntity, ContentSourceEntity, ContentSourceParamEntity, ContentSourceTypeEntity, ContentSourceTypeParamEntity, ContentTypeEntity, ContentTypeAttributeEntity, ContentFileTypeEntity, ContentItemEntity, ContentItemAttributeEntity, ContentItemTagEntity, GeneratedCodeEntity, AIPromptRunEntity, AIAgentRunStepEntity, TaskEntity, ProjectEntity, ConversationArtifactPermissionEntity, AIModelPriceUnitTypeEntity, ArtifactVersionEntity, AIAgentStepPathEntity, AIAgentLearningCycleEntity, ReportVersionEntity, AIConfigurationParamEntity } from '@memberjunction/core-entities';
22
+ import { ScheduledActionEntity, ScheduledActionParamEntity, ExplorerNavigationItemEntity, GeneratedCodeCategoryEntity, AIAgentModelEntity, ComponentRegistryEntity, AIAgentNoteTypeEntity, ComponentDependencyEntity, AIAgentRunEntity, AIVendorEntity, TaskTypeEntity, AIConfigurationEntity, AIAgentEntity, AIAgentStepEntity, AIModelCostEntity, AIPromptModelEntity, AIAgentTypeEntity, AIAgentNoteEntity, EnvironmentEntity, AIAgentActionEntity, TaskDependencyEntity, CollectionArtifactEntity, AIModelPriceTypeEntity, CollectionEntity, RecordLinkEntity, AIPromptEntity, AIResultCacheEntity, AIPromptCategoryEntity, AIPromptTypeEntity, CompanyEntity, EmployeeEntity, UserFavoriteEntity, EmployeeCompanyIntegrationEntity, EmployeeRoleEntity, EmployeeSkillEntity, RoleEntity, SkillEntity, IntegrationURLFormatEntity, IntegrationEntity, CompanyIntegrationEntity, EntityFieldEntity, EntityEntity, UserEntity, EntityRelationshipEntity, UserRecordLogEntity, UserViewEntity, CompanyIntegrationRunEntity, CompanyIntegrationRunDetailEntity, ErrorLogEntity, ApplicationEntity, ApplicationEntityEntity, EntityPermissionEntity, UserApplicationEntityEntity, UserApplicationEntity, CompanyIntegrationRunAPILogEntity, ListEntity, ListDetailEntity, UserViewRunEntity, UserViewRunDetailEntity, WorkflowRunEntity, WorkflowEntity, WorkflowEngineEntity, RecordChangeEntity, UserRoleEntity, RowLevelSecurityFilterEntity, AuditLogEntity, AuthorizationEntity, AuthorizationRoleEntity, AuditLogTypeEntity, EntityFieldValueEntity, AIModelEntity, AIActionEntity, AIModelActionEntity, EntityAIActionEntity, AIModelTypeEntity, QueueTypeEntity, QueueEntity, QueueTaskEntity, DashboardEntity, OutputTriggerTypeEntity, OutputFormatTypeEntity, OutputDeliveryTypeEntity, ReportEntity, ReportSnapshotEntity, ResourceTypeEntity, TagEntity, TaggedItemEntity, WorkspaceEntity, WorkspaceItemEntity, DatasetEntity, DatasetItemEntity, ConversationDetailEntity, ConversationEntity, UserNotificationEntity, SchemaInfoEntity, CompanyIntegrationRecordMapEntity, RecordMergeLogEntity, RecordMergeDeletionLogEntity, QueryFieldEntity, QueryCategoryEntity, QueryEntity, QueryPermissionEntity, VectorIndexEntity, EntityDocumentTypeEntity, EntityDocumentRunEntity, VectorDatabaseEntity, EntityRecordDocumentEntity, EntityDocumentEntity, DataContextItemEntity, DataContextEntity, UserViewCategoryEntity, DashboardCategoryEntity, ReportCategoryEntity, FileStorageProviderEntity, FileEntity, FileCategoryEntity, FileEntityRecordLinkEntity, VersionInstallationEntity, DuplicateRunDetailMatchEntity, EntityDocumentSettingEntity, EntitySettingEntity, DuplicateRunEntity, DuplicateRunDetailEntity, ApplicationSettingEntity, ActionCategoryEntity, EntityActionEntity, EntityActionInvocationEntity, ActionAuthorizationEntity, EntityActionInvocationTypeEntity, ActionEntity, EntityActionFilterEntity, ActionFilterEntity, ActionContextTypeEntity, ActionResultCodeEntity, ActionContextEntity, ActionExecutionLogEntity, ActionParamEntity, ActionLibraryEntity, LibraryEntity, ListCategoryEntity, CommunicationProviderEntity, CommunicationRunEntity, CommunicationProviderMessageTypeEntity, CommunicationLogEntity, CommunicationBaseMessageTypeEntity, TemplateEntity, TemplateCategoryEntity, TemplateContentEntity, TemplateParamEntity, TemplateContentTypeEntity, RecommendationEntity, RecommendationProviderEntity, RecommendationRunEntity, RecommendationItemEntity, EntityCommunicationMessageTypeEntity, EntityCommunicationFieldEntity, RecordChangeReplayRunEntity, LibraryItemEntity, EntityRelationshipDisplayComponentEntity, EntityActionParamEntity, ResourcePermissionEntity, ResourceLinkEntity, ConversationArtifactVersionEntity, AIAgentRequestEntity, AIModelVendorEntity, AIVendorTypeDefinitionEntity, ReportUserStateEntity, QueryEntityEntity, DashboardUserStateEntity, ComponentEntity, AccessControlRuleEntity, PublicLinkEntity, ArtifactTypeEntity, AIVendorTypeEntity, ArtifactEntity, ConversationArtifactEntity, AIAgentPromptEntity, ComponentLibraryEntity, DashboardUserPreferenceEntity, QueryParameterEntity, AIAgentRelationshipEntity, ComponentLibraryLinkEntity, ContentProcessRunEntity, ContentSourceEntity, ContentSourceParamEntity, ContentSourceTypeEntity, ContentSourceTypeParamEntity, ContentTypeEntity, ContentTypeAttributeEntity, ContentFileTypeEntity, ContentItemEntity, ContentItemAttributeEntity, ContentItemTagEntity, GeneratedCodeEntity, AIPromptRunEntity, AIAgentRunStepEntity, TaskEntity, ProjectEntity, ConversationArtifactPermissionEntity, AIModelPriceUnitTypeEntity, ArtifactVersionEntity, AIAgentStepPathEntity, AIAgentLearningCycleEntity, ReportVersionEntity, AIConfigurationParamEntity } from '@memberjunction/core-entities';
23
23
 
24
24
 
25
25
  //****************************************************************************
@@ -5358,6 +5358,171 @@ export class TaskDependencyResolver extends ResolverBase {
5358
5358
 
5359
5359
  }
5360
5360
 
5361
+ //****************************************************************************
5362
+ // ENTITY CLASS for MJ: Collection Artifacts
5363
+ //****************************************************************************
5364
+ @ObjectType({ description: `Join table that establishes many-to-many relationships between Collections and Artifacts, allowing artifacts to be organized within collections` })
5365
+ export class CollectionArtifact_ {
5366
+ @Field()
5367
+ @MaxLength(16)
5368
+ ID: string;
5369
+
5370
+ @Field()
5371
+ @MaxLength(16)
5372
+ CollectionID: string;
5373
+
5374
+ @Field()
5375
+ @MaxLength(16)
5376
+ ArtifactID: string;
5377
+
5378
+ @Field(() => Int, {description: `Sequence number for ordering artifacts within a collection`})
5379
+ Sequence: number;
5380
+
5381
+ @Field()
5382
+ @MaxLength(10)
5383
+ _mj__CreatedAt: Date;
5384
+
5385
+ @Field()
5386
+ @MaxLength(10)
5387
+ _mj__UpdatedAt: Date;
5388
+
5389
+ @Field()
5390
+ @MaxLength(510)
5391
+ Collection: string;
5392
+
5393
+ @Field()
5394
+ @MaxLength(510)
5395
+ Artifact: string;
5396
+
5397
+ }
5398
+
5399
+ //****************************************************************************
5400
+ // INPUT TYPE for MJ: Collection Artifacts
5401
+ //****************************************************************************
5402
+ @InputType()
5403
+ export class CreateCollectionArtifactInput {
5404
+ @Field({ nullable: true })
5405
+ ID?: string;
5406
+
5407
+ @Field({ nullable: true })
5408
+ CollectionID?: string;
5409
+
5410
+ @Field({ nullable: true })
5411
+ ArtifactID?: string;
5412
+
5413
+ @Field(() => Int, { nullable: true })
5414
+ Sequence?: number;
5415
+ }
5416
+
5417
+
5418
+ //****************************************************************************
5419
+ // INPUT TYPE for MJ: Collection Artifacts
5420
+ //****************************************************************************
5421
+ @InputType()
5422
+ export class UpdateCollectionArtifactInput {
5423
+ @Field()
5424
+ ID: string;
5425
+
5426
+ @Field({ nullable: true })
5427
+ CollectionID?: string;
5428
+
5429
+ @Field({ nullable: true })
5430
+ ArtifactID?: string;
5431
+
5432
+ @Field(() => Int, { nullable: true })
5433
+ Sequence?: number;
5434
+
5435
+ @Field(() => [KeyValuePairInput], { nullable: true })
5436
+ OldValues___?: KeyValuePairInput[];
5437
+ }
5438
+
5439
+ //****************************************************************************
5440
+ // RESOLVER for MJ: Collection Artifacts
5441
+ //****************************************************************************
5442
+ @ObjectType()
5443
+ export class RunCollectionArtifactViewResult {
5444
+ @Field(() => [CollectionArtifact_])
5445
+ Results: CollectionArtifact_[];
5446
+
5447
+ @Field(() => String, {nullable: true})
5448
+ UserViewRunID?: string;
5449
+
5450
+ @Field(() => Int, {nullable: true})
5451
+ RowCount: number;
5452
+
5453
+ @Field(() => Int, {nullable: true})
5454
+ TotalRowCount: number;
5455
+
5456
+ @Field(() => Int, {nullable: true})
5457
+ ExecutionTime: number;
5458
+
5459
+ @Field({nullable: true})
5460
+ ErrorMessage?: string;
5461
+
5462
+ @Field(() => Boolean, {nullable: false})
5463
+ Success: boolean;
5464
+ }
5465
+
5466
+ @Resolver(CollectionArtifact_)
5467
+ export class CollectionArtifactResolver extends ResolverBase {
5468
+ @Query(() => RunCollectionArtifactViewResult)
5469
+ async RunCollectionArtifactViewByID(@Arg('input', () => RunViewByIDInput) input: RunViewByIDInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
5470
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
5471
+ return super.RunViewByIDGeneric(input, provider, userPayload, pubSub);
5472
+ }
5473
+
5474
+ @Query(() => RunCollectionArtifactViewResult)
5475
+ async RunCollectionArtifactViewByName(@Arg('input', () => RunViewByNameInput) input: RunViewByNameInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
5476
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
5477
+ return super.RunViewByNameGeneric(input, provider, userPayload, pubSub);
5478
+ }
5479
+
5480
+ @Query(() => RunCollectionArtifactViewResult)
5481
+ async RunCollectionArtifactDynamicView(@Arg('input', () => RunDynamicViewInput) input: RunDynamicViewInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
5482
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
5483
+ input.EntityName = 'MJ: Collection Artifacts';
5484
+ return super.RunDynamicViewGeneric(input, provider, userPayload, pubSub);
5485
+ }
5486
+ @Query(() => CollectionArtifact_, { nullable: true })
5487
+ async CollectionArtifact(@Arg('ID', () => String) ID: string, @Ctx() { dataSources, userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine): Promise<CollectionArtifact_ | null> {
5488
+ this.CheckUserReadPermissions('MJ: Collection Artifacts', userPayload);
5489
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
5490
+ const connPool = GetReadOnlyDataSource(dataSources, { allowFallbackToReadWrite: true });
5491
+ const sSQL = `SELECT * FROM [${Metadata.Provider.ConfigData.MJCoreSchemaName}].[vwCollectionArtifacts] WHERE [ID]='${ID}' ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Collection Artifacts', userPayload, EntityPermissionType.Read, 'AND');
5492
+ const rows = await SQLServerDataProvider.ExecuteSQLWithPool(connPool, sSQL, undefined, this.GetUserFromPayload(userPayload));
5493
+ const result = this.MapFieldNamesToCodeNames('MJ: Collection Artifacts', rows && rows.length > 0 ? rows[0] : {})
5494
+ return result;
5495
+ }
5496
+
5497
+ @Mutation(() => CollectionArtifact_)
5498
+ async CreateCollectionArtifact(
5499
+ @Arg('input', () => CreateCollectionArtifactInput) input: CreateCollectionArtifactInput,
5500
+ @Ctx() { providers, userPayload }: AppContext,
5501
+ @PubSub() pubSub: PubSubEngine
5502
+ ) {
5503
+ const provider = GetReadWriteProvider(providers);
5504
+ return this.CreateRecord('MJ: Collection Artifacts', input, provider, userPayload, pubSub)
5505
+ }
5506
+
5507
+ @Mutation(() => CollectionArtifact_)
5508
+ async UpdateCollectionArtifact(
5509
+ @Arg('input', () => UpdateCollectionArtifactInput) input: UpdateCollectionArtifactInput,
5510
+ @Ctx() { providers, userPayload }: AppContext,
5511
+ @PubSub() pubSub: PubSubEngine
5512
+ ) {
5513
+ const provider = GetReadWriteProvider(providers);
5514
+ return this.UpdateRecord('MJ: Collection Artifacts', input, provider, userPayload, pubSub);
5515
+ }
5516
+
5517
+ @Mutation(() => CollectionArtifact_)
5518
+ async DeleteCollectionArtifact(@Arg('ID', () => String) ID: string, @Arg('options___', () => DeleteOptionsInput) options: DeleteOptionsInput, @Ctx() { providers, userPayload }: AppContext, @PubSub() pubSub: PubSubEngine) {
5519
+ const provider = GetReadWriteProvider(providers);
5520
+ const key = new CompositeKey([{FieldName: 'ID', Value: ID}]);
5521
+ return this.DeleteRecord('MJ: Collection Artifacts', key, options, provider, userPayload, pubSub);
5522
+ }
5523
+
5524
+ }
5525
+
5361
5526
  //****************************************************************************
5362
5527
  // ENTITY CLASS for MJ: AI Model Price Types
5363
5528
  //****************************************************************************
@@ -5570,6 +5735,9 @@ export class Collection_ {
5570
5735
  @MaxLength(510)
5571
5736
  Parent?: string;
5572
5737
 
5738
+ @Field(() => [CollectionArtifact_])
5739
+ MJ_CollectionArtifacts_CollectionIDArray: CollectionArtifact_[]; // Link to MJ_CollectionArtifacts
5740
+
5573
5741
  @Field(() => [Collection_])
5574
5742
  MJ_Collections_ParentIDArray: Collection_[]; // Link to MJ_Collections
5575
5743
 
@@ -5697,6 +5865,17 @@ export class CollectionResolver extends ResolverBase {
5697
5865
  return result;
5698
5866
  }
5699
5867
 
5868
+ @FieldResolver(() => [CollectionArtifact_])
5869
+ async MJ_CollectionArtifacts_CollectionIDArray(@Root() collection_: Collection_, @Ctx() { dataSources, userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine) {
5870
+ this.CheckUserReadPermissions('MJ: Collection Artifacts', userPayload);
5871
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
5872
+ const connPool = GetReadOnlyDataSource(dataSources, { allowFallbackToReadWrite: true });
5873
+ const sSQL = `SELECT * FROM [${Metadata.Provider.ConfigData.MJCoreSchemaName}].[vwCollectionArtifacts] WHERE [CollectionID]='${collection_.ID}' ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Collection Artifacts', userPayload, EntityPermissionType.Read, 'AND');
5874
+ const rows = await SQLServerDataProvider.ExecuteSQLWithPool(connPool, sSQL, undefined, this.GetUserFromPayload(userPayload));
5875
+ const result = this.ArrayMapFieldNamesToCodeNames('MJ: Collection Artifacts', rows);
5876
+ return result;
5877
+ }
5878
+
5700
5879
  @FieldResolver(() => [Collection_])
5701
5880
  async MJ_Collections_ParentIDArray(@Root() collection_: Collection_, @Ctx() { dataSources, userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine) {
5702
5881
  this.CheckUserReadPermissions('MJ: Collections', userPayload);
@@ -40417,6 +40596,9 @@ export class Artifact_ {
40417
40596
  @Field(() => [ArtifactVersion_])
40418
40597
  MJ_ArtifactVersions_ArtifactIDArray: ArtifactVersion_[]; // Link to MJ_ArtifactVersions
40419
40598
 
40599
+ @Field(() => [CollectionArtifact_])
40600
+ MJ_CollectionArtifacts_ArtifactIDArray: CollectionArtifact_[]; // Link to MJ_CollectionArtifacts
40601
+
40420
40602
  }
40421
40603
 
40422
40604
  //****************************************************************************
@@ -40546,6 +40728,17 @@ export class ArtifactResolver extends ResolverBase {
40546
40728
  return result;
40547
40729
  }
40548
40730
 
40731
+ @FieldResolver(() => [CollectionArtifact_])
40732
+ async MJ_CollectionArtifacts_ArtifactIDArray(@Root() artifact_: Artifact_, @Ctx() { dataSources, userPayload, providers }: AppContext, @PubSub() pubSub: PubSubEngine) {
40733
+ this.CheckUserReadPermissions('MJ: Collection Artifacts', userPayload);
40734
+ const provider = GetReadOnlyProvider(providers, { allowFallbackToReadWrite: true });
40735
+ const connPool = GetReadOnlyDataSource(dataSources, { allowFallbackToReadWrite: true });
40736
+ const sSQL = `SELECT * FROM [${Metadata.Provider.ConfigData.MJCoreSchemaName}].[vwCollectionArtifacts] WHERE [ArtifactID]='${artifact_.ID}' ` + this.getRowLevelSecurityWhereClause(provider, 'MJ: Collection Artifacts', userPayload, EntityPermissionType.Read, 'AND');
40737
+ const rows = await SQLServerDataProvider.ExecuteSQLWithPool(connPool, sSQL, undefined, this.GetUserFromPayload(userPayload));
40738
+ const result = this.ArrayMapFieldNamesToCodeNames('MJ: Collection Artifacts', rows);
40739
+ return result;
40740
+ }
40741
+
40549
40742
  @Mutation(() => Artifact_)
40550
40743
  async CreateArtifact(
40551
40744
  @Arg('input', () => CreateArtifactInput) input: CreateArtifactInput,