Ejemplo n.º 1
0
        /// <summary>
        /// Verify the provided <paramref name="mongoIndex"/> is defined and ready to go.
        /// </summary>
        protected virtual void VerifyIndex(MongoDbIndex <MongoDbEventData> mongoIndex)
        {
            IndexKeysDefinitionBuilder <MongoDbEventData> indexKeysBuilder = Builders <MongoDbEventData> .IndexKeys;
            IndexKeysDefinition <MongoDbEventData>        indexKey         = null;

            IList <Expression <Func <MongoDbEventData, object> > > selectors = mongoIndex.Selectors.ToList();

            for (int i = 0; i < selectors.Count; i++)
            {
                Expression <Func <MongoDbEventData, object> > expression = selectors[i];
                if (mongoIndex.IsAcending)
                {
                    if (i == 0)
                    {
                        indexKey = indexKeysBuilder.Ascending(expression);
                    }
                    else
                    {
                        indexKey = indexKey.Ascending(expression);
                    }
                }
                else
                {
                    if (i == 0)
                    {
                        indexKey = indexKeysBuilder.Descending(expression);
                    }
                    else
                    {
                        indexKey = indexKey.Descending(expression);
                    }
                }
            }

            bool throwExceptions;

            if (!bool.TryParse(ConfigurationManager.GetSetting("Cqrs.MongoDb.EventStore.ThrowExceptionsOnIndexPreparation"), out throwExceptions))
            {
                throwExceptions = true;
            }
            try
            {
                MongoCollection.Indexes.CreateOne
                (
                    indexKey,
                    new CreateIndexOptions
                {
                    Unique = mongoIndex.IsUnique,
                    Name   = mongoIndex.Name
                }
                );
            }
            catch
            {
                if (throwExceptions)
                {
                    throw;
                }
            }
        }
Ejemplo n.º 2
0
        protected virtual void VerifyIndex(MongoDbIndex <EventData> mongoIndex)
        {
            IndexKeysDefinitionBuilder <EventData> indexKeysBuilder = Builders <EventData> .IndexKeys;
            IndexKeysDefinition <EventData>        indexKey         = null;

            IList <Expression <Func <EventData, object> > > selectors = mongoIndex.Selectors.ToList();

            for (int i = 0; i < selectors.Count; i++)
            {
                Expression <Func <EventData, object> > expression = selectors[i];
                if (mongoIndex.IsAcending)
                {
                    if (i == 0)
                    {
                        indexKey = indexKeysBuilder.Ascending(expression);
                    }
                    else
                    {
                        indexKey = indexKey.Ascending(expression);
                    }
                }
                else
                {
                    if (i == 0)
                    {
                        indexKey = indexKeysBuilder.Descending(expression);
                    }
                    else
                    {
                        indexKey = indexKey.Descending(expression);
                    }
                }
            }

            MongoCollection.Indexes.CreateOne
            (
                indexKey,
                new CreateIndexOptions
            {
                Unique = mongoIndex.IsUnique,
                Name   = mongoIndex.Name
            }
            );
        }