public void IndexLinkedResource(Uri pidUri, Entity resource, ResourcesCTO repoResources)
        {
            // TODO: Repos resources
            var resourceIndex = new ResourceIndexingDTO(ResourceCrudAction.Linking, pidUri, resource, repoResources);

            IndexResource(resourceIndex);
        }
        public void IndexNewResource(Uri pidUri, Resource resource, IList <VersionOverviewCTO> resourceVersions)
        {
            var repoResource = new ResourcesCTO(null, null, resourceVersions);

            var resourceIndex = new ResourceIndexingDTO(ResourceCrudAction.Create, pidUri, resource, repoResource);

            IndexResource(resourceIndex);
        }
        public void IndexUnlinkedResource(Uri pidUri, ResourcesCTO resource, Uri unlinkedPidUri, ResourcesCTO unlinkedListResource)
        {
            var resourceIndex = new ResourceIndexingDTO(ResourceCrudAction.Unlinking, pidUri, resource.GetDraftOrPublishedVersion(), resource);

            IndexResource(resourceIndex);

            IndexLinkedResource(unlinkedPidUri, unlinkedListResource.GetDraftOrPublishedVersion(), unlinkedListResource);
        }
        private void IndexResource(ResourceIndexingDTO resourceIndexingDto)
        {
            Guard.ArgumentNotNull(resourceIndexingDto, nameof(resourceIndexingDto));

            try
            {
                var jsonString = JsonConvert.SerializeObject(resourceIndexingDto);
                PublishMessage(_mqOptions.Topics["IndexingResources"], jsonString, null);
            }
            catch (System.Exception ex)
            {
                //TODO: Log error
                Console.WriteLine($"Something went wrong while publishing resource {resourceIndexingDto.PidUri} by message queue. Exception: {ex}");
            }
        }
        public void IndexUpdatedResource(Uri pidUri, Entity resource, ResourcesCTO repoResources)
        {
            var resourceIndex = new ResourceIndexingDTO(ResourceCrudAction.Update, pidUri, resource, repoResources);

            IndexResource(resourceIndex);
        }
        public void IndexMarkedForDeletionResource(Uri pidUri, Entity resource, ResourcesCTO repoResources)
        {
            var resourceIndex = new ResourceIndexingDTO(ResourceCrudAction.MarkedForDeletion, pidUri, resource, repoResources);

            IndexResource(resourceIndex);
        }