Example #1
0
        public async Task RemoveFromIndex()
        {
            var store = await StoreBuilder.New().CreateAsync();

            var schema = await store.Schemas.New <TestDomainDefinition>().CreateAsync();

            var domain = await store.DomainModels.New().CreateAsync("Test");

            var graph = domain.Resolve <IHyperGraph>() as Hyperstore.Modeling.HyperGraph.HyperGraph;
            MemoryIndexManager manager = graph.IndexManager as MemoryIndexManager;

            manager.CreateIndex(schema.Definition.XExtendsBaseClass, "index1", true, "Name");

            var index = manager.GetIndex("index1");
            var id    = new Identity("Test", "1");

            using (var session = store.BeginSession(new SessionConfiguration {
                Readonly = true
            }))
            {
                manager.AddToIndex(schema.Definition.XExtendsBaseClass, "index1", id, "momo");
                Assert.Equal(id, index.Get("momo"));
                manager.RemoveFromIndex(schema.Definition.XExtendsBaseClass, "index1", id, "momo");
                Assert.Null(index.Get("momo"));
            }
        }
        ///-------------------------------------------------------------------------------------------------
        /// <summary>
        ///  Constructor.
        /// </summary>
        /// <param name="indexManager">
        ///  The graph.
        /// </param>
        ///-------------------------------------------------------------------------------------------------
        public HypergraphTransaction(MemoryIndexManager indexManager)
        {
            Contract.Requires(indexManager, "indexManager");

            _indexManager = indexManager;

            _pendingActions = new List <IPendingAction>();
            Session.Current.Enlist(this);

            PushNestedTransaction();
        }
Example #3
0
 public async Task WrongIndexNameTest()
 {
     await Assert.ThrowsAsync <InvalidNameException>(async() =>
     {
         var store  = await StoreBuilder.New().CreateAsync();
         var schema = await store.Schemas.New <TestDomainDefinition>().CreateAsync();
         var domain = await store.DomainModels.New().CreateAsync("Test");
         var graph  = domain.Resolve <IHyperGraph>() as Hyperstore.Modeling.HyperGraph.HyperGraph;
         MemoryIndexManager manager = graph.IndexManager as MemoryIndexManager;
         manager.CreateIndex(schema.Definition.XExtendsBaseClass, "index:1", true, "Name");
     });
 }
Example #4
0
 public async Task CreateIndex()
 {
     await Assert.ThrowsAsync <DuplicateIndexException>(async() =>
     {
         // Création concurrente -> Une seule création
         var store  = await StoreBuilder.New().CreateAsync();
         var schema = await store.Schemas.New <TestDomainDefinition>().CreateAsync();
         var domain = await store.DomainModels.New().CreateAsync("Test");
         var graph  = domain.Resolve <IHyperGraph>() as Hyperstore.Modeling.HyperGraph.HyperGraph;
         MemoryIndexManager manager = graph.IndexManager as MemoryIndexManager;
         manager.CreateIndex(schema.Definition.XExtendsBaseClass, "index1", true, "Name");
         manager.CreateIndex(schema.Definition.XExtendsBaseClass, "index1", true, "Name");
     });
 }
Example #5
0
        public async Task GetIndex()
        {
            var store = await StoreBuilder.New().CreateAsync();

            var schema = await store.Schemas.New <TestDomainDefinition>().CreateAsync();

            var domain = await store.DomainModels.New().CreateAsync("Test");

            var graph = domain.Resolve <IHyperGraph>() as Hyperstore.Modeling.HyperGraph.HyperGraph;
            MemoryIndexManager manager = graph.IndexManager as MemoryIndexManager;

            manager.CreateIndex(schema.Definition.XExtendsBaseClass, "index1", true, "Name");

            Assert.NotNull(manager.GetIndex("index1"));
        }
Example #6
0
        public async Task UniqueConstraintIndex()
        {
            await Assert.ThrowsAsync <UniqueConstraintException>(async() =>
            {
                var store  = await StoreBuilder.New().CreateAsync();
                var schema = await store.Schemas.New <TestDomainDefinition>().CreateAsync();
                var domain = await store.DomainModels.New().CreateAsync("Test");
                var graph  = domain.Resolve <IHyperGraph>() as Hyperstore.Modeling.HyperGraph.HyperGraph;
                MemoryIndexManager manager = graph.IndexManager as MemoryIndexManager;
                using (var s = store.BeginSession(new SessionConfiguration {
                    Readonly = true
                }))
                {
                    manager.CreateIndex(schema.Definition.XExtendsBaseClass, "index1", true, "Name");

                    manager.AddToIndex(schema.Definition.XExtendsBaseClass, "index1", new Identity("Test", "1"), "momo");
                    manager.AddToIndex(schema.Definition.XExtendsBaseClass, "index1", new Identity("Test", "2"), "momo");
                }
            });
        }
            ///-------------------------------------------------------------------------------------------------
            /// <summary>
            ///  Executes the given graph.
            /// </summary>
            /// <param name="indexManager">
            ///  The graph.
            /// </param>
            ///-------------------------------------------------------------------------------------------------
            public void Execute(MemoryIndexManager indexManager)
            {
                DebugContract.Requires(indexManager);

                _action(indexManager.DomainModel.Statistics);
            }
            ///-------------------------------------------------------------------------------------------------
            /// <summary>
            ///  Executes the given graph.
            /// </summary>
            /// <param name="indexManager">
            ///  The graph.
            /// </param>
            ///-------------------------------------------------------------------------------------------------
            public override void Execute(MemoryIndexManager indexManager)
            {
                DebugContract.Requires(indexManager);

                indexManager.RemoveFromIndex(SchemaElement, IndexName, Id, Key);
            }
 ///-------------------------------------------------------------------------------------------------
 /// <summary>
 ///  Executes the given graph.
 /// </summary>
 /// <param name="indexManager">
 ///  The graph.
 /// </param>
 ///-------------------------------------------------------------------------------------------------
 public abstract void Execute(MemoryIndexManager indexManager);