public void Process(UnicornSyncEndPipelineArgs args)
        {
            Assert.IsNotNullOrEmpty(PublishTriggerItemId, "Must set PublishTriggerItemId parameter.");

            if (_targetDatabases == null || _targetDatabases.Count == 0)
            {
                return;
            }

            if (!ManualPublishQueueHandler.HasItemsToPublish)
            {
                return;
            }

            // this occurs prior to the SerializationComplete event, which clears caches
            // if this is not done here, old content can be published that is out of date
            // particularly unversioned fields
            CacheManager.ClearAllCaches();

            var dbs     = _targetDatabases.Select(Factory.GetDatabase).ToArray();
            var trigger = Factory.GetDatabase("master").GetItem(PublishTriggerItemId);

            Assert.IsTrue(dbs.Length > 0, "No valid databases specified to publish to.");
            Assert.IsNotNull(trigger, "Invalid trigger item ID");

            args.Logger.Info(string.Empty);
            args.Logger.Info("[P] Auto-publishing of synced items is beginning.");
            Log.Info("Unicorn: initiated synchronous publishing of synced items.", this);

            if (ManualPublishQueueHandler.PublishQueuedItems(trigger, dbs, args.Logger))
            {
                Log.Info("Unicorn: publishing of synced items is complete.", this);
            }
        }
        public void Process(UnicornSyncEndPipelineArgs args)
        {
            Assert.IsNotNullOrEmpty(PublishTriggerItemId, "Must set PublishTriggerItemId parameter.");

            if (_targetDatabases == null || _targetDatabases.Count == 0)
            {
                return;
            }

            var dbs     = _targetDatabases.Select(Factory.GetDatabase).ToArray();
            var trigger = Factory.GetDatabase("master").GetItem(PublishTriggerItemId);

            if (!ManualPublishQueueHandler.HasItemsToPublish)
            {
                return;
            }

            Assert.IsTrue(dbs.Length > 0, "No valid databases specified to publish to.");
            Assert.IsNotNull(trigger, "Invalid trigger item ID");

            args.Console.ReportStatus(string.Empty);
            args.Console.ReportStatus("[P] Auto-publishing of synced items is beginning.");
            Log.Info("Unicorn: initiated synchronous publishing of synced items.", this);

            if (ManualPublishQueueHandler.PublishQueuedItems(trigger, dbs, args.Console))
            {
                Log.Info("Unicorn: publishing of synced items is complete.", this);
            }
        }
        protected virtual void LoadItems(IConfiguration[] configurations, DataBlasterParameters parameters, ILogger logger)
        {
            var databaseNames = configurations
                                .SelectMany(c => c.Resolve <PredicateRootPathResolver>().GetRootPaths().Select(rp => rp.DatabaseName))
                                .Distinct();

            foreach (var databaseName in databaseNames)
            {
                logger.Info($"Syncing database '{databaseName}'...");

                var context   = CreateBulkLoadContext(BulkLoader, databaseName, configurations, parameters, logger);
                var bulkItems = ItemExtractor.ExtractBulkItems(context, configurations, databaseName);
                BulkLoader.LoadItems(context, bulkItems);

                if (context.AnyStageFailed)
                {
                    throw new Exception($"Stage failed during bulkload of database '{databaseName}': {context.FailureMessage}");
                }

                // Support publishing after sync.
                if (!IsUnicornPublishEnabled && !databaseName.Equals("core", StringComparison.OrdinalIgnoreCase))
                {
                    foreach (var itemChange in context.ItemChanges)
                    {
                        ManualPublishQueueHandler.AddItemToPublish(itemChange.ItemId);
                    }
                }
            }
        }
 public void Process(UnicornSyncCompletePipelineArgs args)
 {
     foreach (var item in args.Changes)
     {
         if (item.Id != null)
         {
             ManualPublishQueueHandler.AddItemToPublish(item.Id.Value);
         }
     }
 }
Example #5
0
 public void Process(UnicornSyncCompletePipelineArgs args)
 {
     foreach (var item in args.Changes)
     {
         if (item.SerializedItem != null)
         {
             ManualPublishQueueHandler.AddItemToPublish(item.SerializedItem.Id);
         }
         if (item.SourceItem != null)
         {
             ManualPublishQueueHandler.AddItemToPublish(item.SourceItem.Id);
         }
     }
 }
Example #6
0
        public void Process(UnicornSyncEndPipelineArgs args)
        {
            Assert.IsNotNullOrEmpty(PublishTriggerItemId, "Must set PublishTriggerItemId parameter.");

            if (_targetDatabases == null || _targetDatabases.Count == 0)
            {
                return;
            }

            var dbs     = _targetDatabases.Select(Factory.GetDatabase).ToArray();
            var trigger = Factory.GetDatabase("master").GetItem(PublishTriggerItemId);

            Assert.IsTrue(dbs.Length > 0, "No valid databases specified to publish to.");
            Assert.IsNotNull(trigger, "Invalid trigger item ID");

            if (ManualPublishQueueHandler.PublishQueuedItems(trigger, dbs))
            {
                Log.Info("Unicorn: initiated publishing of synced items.", this);
            }
        }
Example #7
0
        public void Process(UnicornSyncEndPipelineArgs args)
        {
            Assert.IsNotNullOrEmpty(PublishTriggerItemId, "Must set PublishTriggerItemId parameter.");

            if (_targetDatabases == null || _targetDatabases.Count == 0)
            {
                return;
            }

            if (!string.IsNullOrWhiteSpace(HttpContext.Current.Request.QueryString["publishDbs"]))
            {
                List <string> dbNames = HttpContext.Current.Request.QueryString["publishDbs"].Split(',').ToList();
                dbNames.ForEach(AddTargetDatabase);
            }

            var dbs = _targetDatabases.Select(Factory.GetDatabase).ToArray();

            string[] deepPublish = PublishTriggerItemId.Split(',');

            if (HttpContext.Current.Request.QueryString["fullPublish"] == "true")
            {
                foreach (string path in deepPublish)
                {
                    var extractPath = path.Split(':');
                    var trigger     = Factory.GetDatabase(extractPath[0]).GetItem(extractPath[1]);
                    ManualPublishQueueHandler.AddItemToPublish(trigger.ID, extractPath[0]);
                }
            }


            Assert.IsTrue(dbs.Length > 0, "No valid databases specified to publish to.");

            if (ManualPublishQueueHandler.PublishQueuedItems(dbs))
            {
                Log.Info("Unicorn: initiated publishing of synced items.", this);
            }
        }