public override Exchange Process(Exchange exchange, UriDescriptor endPointDescriptor)
        {
            try
            {
                Camel.TryLog(exchange, "provider", endPointDescriptor.ComponentName);

                var dbHost = endPointDescriptor.ComponentPath;
                var port = endPointDescriptor.GetUriProperty<int>("port");
                var couchDbDatabase = exchange.InMessage.GetHeader("CouchDbDatabase");
                var createDb = endPointDescriptor.GetUriProperty<bool>("createDb");
                var document = exchange.InMessage.Body;

                var dbUrl = string.Format("http://{0}:{1}", dbHost, port);
                var conn = new Connection(new Uri(dbUrl));

                if (createDb && !conn.ListDatabases().Contains(couchDbDatabase))
                {
                    conn.CreateDatabase(couchDbDatabase.ToString());
                }
            }
            catch (Exception exception)
            {
            }

            return base.Process(exchange, endPointDescriptor);
        }
Example #2
0
        public void FixtureSetup()
        {
            _cx = ConnectionTests.CreateConnection();
            if (_cx.ListDatabases().Contains("relax-repository-tests"))
            {
                _cx.DeleteDatabase("relax-repository-tests");
            }
            _cx.CreateDatabase("relax-repository-tests");
            _sx  = _cx.CreateSession("relax-repository-tests");
            _sx2 = _cx.CreateSession("relax-repository-tests");

            _sx.Save(new Gizmo {
                Name = "Widget", Cost = 30, Manufacturer = "ACME"
            });
            _sx.Save(new Gizmo {
                Name = "Gadget", Cost = 30, Manufacturer = "ACME"
            });
            _sx.Save(new Gizmo {
                Name = "Foo", Cost = 35, Manufacturer = "ACME"
            });
            _sx.Save(new Gizmo {
                Name = "Bar", Cost = 35, Manufacturer = "Widgetco"
            });
            _sx.Save(new Gizmo {
                Name = "Biz", Cost = 45, Manufacturer = "Widgetco"
            });
            _sx.Save(new Gizmo {
                Name = "Bang", Cost = 55, Manufacturer = "Widgetco"
            });
        }
Example #3
0
 protected void Page_Load( object sender, EventArgs e )
 {
     var url = ConfigurationManager.AppSettings.Get( "CLOUDANT_URL" );
     var connection = new Connection( new Uri( url ) );
     if ( !connection.ListDatabases().Contains( "gmkreports" ) )
     {
         connection.CreateDatabase( "gmkreports" );
     }
     var repository = new Repository<Report>( connection.CreateSession( "gmkreports" ) );
     var report = new Report { ID = Guid.NewGuid(), Type = 1, AccessionNumber = "123", Contents = "abcd" };
     System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();
     watch.Reset();
     watch.Start();
     var id = repository.Save( report ).Id;
     var retrievedReport = repository.Get( id );
     watch.Stop();
     if ( retrievedReport.ID == report.ID && retrievedReport.Type == report.Type && retrievedReport.AccessionNumber == report.AccessionNumber && retrievedReport.Contents == report.Contents )
     {
         _label.Text = watch.ElapsedMilliseconds.ToString();
     }
     else
     {
         _label.Text = "Error";
     }
 }
        public void FixtureSetup()
        {
            _cx = ConnectionTests.CreateConnection();
            if (_cx.ListDatabases().Contains("relax-query-tests"))
            {
                _cx.DeleteDatabase("relax-query-tests");
            }
            _cx.CreateDatabase("relax-query-tests");
            _sx = _cx.CreateSession("relax-query-tests");
        
            // populate a few widgets & a simple design doc
            _sx.Save(new Widget { Name = "widget", Manufacturer = "acme" });
            _sx.Save(new Widget { Name = "sprocket", Manufacturer = "acme" });
            _sx.Save(new Widget { Name = "doodad", Manufacturer = "widgetco" });

            _sx.Save(
                new DesignDocument {
                         Language = "javascript",
                         Views = new Dictionary<string, View>
                         {
                            { "all-widgets", new View {
                                Map = @"function(doc) { emit(null, null); }"
                            }},
                            { "all-manufacturers", new View() {
                                Map = @"function(doc) { emit(doc.Manufacturer, 1); }",
                                Reduce = @"function(keys, values, rereduce) { return sum(values); }"
                            }}
                         }
                 },
                 "_design/widgets"
            );      
        }
        public void FixtureSetup()
        {
            _cx = ConnectionTests.CreateConnection();
            if (_cx.ListDatabases().Contains("relax-reference-tests"))
            {
                _cx.DeleteDatabase("relax-reference-tests");
            }
            _cx.CreateDatabase("relax-reference-tests");
            _sx = _cx.CreateSession("relax-reference-tests");
            _sx2 = _cx.CreateSession("relax-reference-tests");

            _sx.Save(new Widget { Id = "w1", Name = "Widget", Cost = 30 });
            _sx.Save(new Widget { Id = "w2", Name = "Gadget", Cost = 30 });
            _sx.Save(new Widget { Id = "w3", Name = "Foo",    Cost = 35 });
            _sx.Save(new Widget { Id = "w4", Name = "Bar",    Cost = 35 });
            _sx.Save(new Widget { Id = "w5", Name = "Biz",    Cost = 45 });
            _sx.Save(new Widget { Id = "w6", Name = "Bang",   Cost = 55 });
            
            _sx.SaveRaw(JObject.Parse(
            @"{
                _id: 'g1',
                Name: 'Gadget #1',
                Primary: 'w1'
            }"));
            
            _sx.SaveRaw(JObject.Parse(
            @"{
                _id: 'g2',
                Name: 'Gadget #1',
                Secondary: ['w1', 'w2', 'w3']
            }"));

        }
Example #6
0
 public void FixtureSetup()
 {
     _cx = ConnectionTests.CreateConnection();
     if (_cx.ListDatabases().Contains("relax-observer-tests"))
     {
         _cx.DeleteDatabase("relax-observer-tests");
     }
     _cx.CreateDatabase("relax-observer-tests");
 }
 public void FixtureSetup()
 {
     _cx = ConnectionTests.CreateConnection();
     if (_cx.ListDatabases().Contains("relax-observer-tests"))
     {
         _cx.DeleteDatabase("relax-observer-tests");
     }
     _cx.CreateDatabase("relax-observer-tests");
 }
Example #8
0
 public CouchRepositar(string jmenoDatabaze)
 {
     _jmenoDatabaze = jmenoDatabaze;
     var host = ConfigurationManager.AppSettings["CouchDB/Host"] ?? "localhost";
     var port = Convert.ToInt32(ConfigurationManager.AppSettings["CouchDB/Port"] ?? "5984");
     _store = new RedBranch.Hammock.Connection(new Uri(string.Format("http://{0}:{1}", host, port)));
     if(!_store.ListDatabases().Contains(_jmenoDatabaze)) {
         _store.CreateDatabase(_jmenoDatabaze);
     }
 }
 public CloudantDataService()
 {
     var url = ConfigurationManager.AppSettings.Get( "CLOUDANT_URL" );
     var connection = new Connection( new Uri( url ) );
     if ( !connection.ListDatabases().Contains( "reports" ) )
     {
         connection.CreateDatabase( "reports" );
     }
     _repository = new Repository<Report>( connection.CreateSession( "reports" ) );
 }
Example #10
0
        public void ListDatabases_Test1()
        {
            DatabaseInfo[] databases
                = Connection.ListDatabases();

            string text = string.Join
                          (
                ", ",
                databases.Select(d => d.Name)
                          );

            Write(text);
        }
        public void FixtureSetup()
        {
            _cx = ConnectionTests.CreateConnection();
            if (_cx.ListDatabases().Contains("relax-session-tests"))
            {
                _cx.DeleteDatabase("relax-session-tests");
            }
            _cx.CreateDatabase("relax-session-tests");
            _sx = _cx.CreateSession("relax-session-tests");

            // create an initial document on a seperate session
            var x = _cx.CreateSession(_sx.Database);
            var w = new Widget {Name = "gizmo", Tags = new[] {"whizbang", "geegollie"}};
            _doc = x.Save(w);
        }
Example #12
0
        public void FixtureSetup()
        {
            _cx = ConnectionTests.CreateConnection();
            if (_cx.ListDatabases().Contains("relax-session-tests"))
            {
                _cx.DeleteDatabase("relax-session-tests");
            }
            _cx.CreateDatabase("relax-session-tests");
            _sx = _cx.CreateSession("relax-session-tests");

            // create an initial document on a seperate session
            var x = _cx.CreateSession(_sx.Database);
            var w = new Widget {
                Name = "gizmo", Tags = new[] { "whizbang", "geegollie" }
            };

            _doc = x.Save(w);
        }
Example #13
0
        public void FixtureSetup()
        {
            _cx = ConnectionTests.CreateConnection();
            if (_cx.ListDatabases().Contains("relax-reference-tests"))
            {
                _cx.DeleteDatabase("relax-reference-tests");
            }
            _cx.CreateDatabase("relax-reference-tests");
            _sx  = _cx.CreateSession("relax-reference-tests");
            _sx2 = _cx.CreateSession("relax-reference-tests");

            _sx.Save(new Widget {
                Id = "w1", Name = "Widget", Cost = 30
            });
            _sx.Save(new Widget {
                Id = "w2", Name = "Gadget", Cost = 30
            });
            _sx.Save(new Widget {
                Id = "w3", Name = "Foo", Cost = 35
            });
            _sx.Save(new Widget {
                Id = "w4", Name = "Bar", Cost = 35
            });
            _sx.Save(new Widget {
                Id = "w5", Name = "Biz", Cost = 45
            });
            _sx.Save(new Widget {
                Id = "w6", Name = "Bang", Cost = 55
            });

            _sx.SaveRaw(JObject.Parse(
                            @"{
                _id: 'g1',
                Name: 'Gadget #1',
                Primary: 'w1'
            }"));

            _sx.SaveRaw(JObject.Parse(
                            @"{
                _id: 'g2',
                Name: 'Gadget #1',
                Secondary: ['w1', 'w2', 'w3']
            }"));
        }
Example #14
0
        public void FixtureSetup()
        {
            _cx = ConnectionTests.CreateConnection();
            if (_cx.ListDatabases().Contains("relax-query-tests"))
            {
                _cx.DeleteDatabase("relax-query-tests");
            }
            _cx.CreateDatabase("relax-query-tests");
            _sx = _cx.CreateSession("relax-query-tests");

            // populate a few widgets & a simple design doc
            _sx.Save(new Widget {
                Name = "widget", Manufacturer = "acme"
            });
            _sx.Save(new Widget {
                Name = "sprocket", Manufacturer = "acme"
            });
            _sx.Save(new Widget {
                Name = "doodad", Manufacturer = "widgetco"
            });

            _sx.Save(
                new DesignDocument {
                Language = "javascript",
                Views    = new Dictionary <string, View>
                {
                    { "all-widgets", new View {
                          Map = @"function(doc) { emit(null, null); }"
                      } },
                    { "all-manufacturers", new View()
                      {
                          Map    = @"function(doc) { emit(doc.Manufacturer, 1); }",
                          Reduce = @"function(keys, values, rereduce) { return sum(values); }"
                      } }
                }
            },
                "_design/widgets"
                );
        }
Example #15
0
        protected void InstallPersistence(ContainerBuilder builder)
        {
            // register the connection used for products, tenants, and ticket jones
            builder.Register(c => {
                var cfg = c.Resolve <IInfrastructureConfiguration>();
                var x   = new Connection(new Uri(cfg.CouchServer));
                var dbs = x.ListDatabases();
                if (!dbs.Contains(cfg.CouchCatalogDatabase))
                {
                    x.CreateDatabase(cfg.CouchCatalogDatabase);
                }
                if (!dbs.Contains(cfg.CouchTenantsDatabase))
                {
                    x.CreateDatabase(cfg.CouchTenantsDatabase);
                }
                if (!dbs.Contains(cfg.CouchTicketJonesDatabase))
                {
                    x.CreateDatabase(cfg.CouchTicketJonesDatabase);
                }
                if (!dbs.Contains(cfg.CouchErrorsDatabase))
                {
                    x.CreateDatabase(cfg.CouchErrorsDatabase);
                }
                x.Observers.Add(y => new EntityAuditObserver());
                return(x);
            })
            .Named <Connection>("global-connection")
            .As <Connection>()
            .SingleInstance();

            // register a single connection, shared globally, and also create the database if needed
            builder
            .Register(c =>
            {
                var cfg = c.Resolve <IInfrastructureConfiguration>();
                var x   = new Connection(new Uri(cfg.CouchServer));

                // todo: SessionObserver's are VERY hard to wire with IoC in the
                // multi-tenant context. I think the solution is one connection
                // instance per tenant, but not sure how that works with autofac.
                // Tagged containers?

                var h = c.ResolveNamed <ICacheStore>("http-context-cache-store");
                var s = c.Resolve <ITenantResolverService>();

                x.Observers.Add(y => new EntityAuditObserver());
                x.Observers.Add(y => new EntityCache <User> .SessionObserver(h, s));
                x.Observers.Add(y => new EntityCache <Group> .SessionObserver(h, s));
                x.Observers.Add(y => new EntityCache <Menu> .SessionObserver(h, s));
                x.Observers.Add(y => new EntityCache <Page> .SessionObserver(h, s));
                x.Observers.Add(y => new EntityCache <ApplicationConfiguration> .SessionObserver(h, s));
                x.Observers.Add(y => new EntityCache <Theme> .SessionObserver(h, s));
                x.Observers.Add(y => new UserSummaryCache.SessionObserver(h, s));
                x.Observers.Add(y => new GroupSummaryCache.SessionObserver(h, s));
                return(x);
            })
            .As(typeof(Connection))
            .SingleInstance();

            // register sessions, using the connection as a factory. register the two shared sessions first (catalog and tenants),
            // then register the tenant-specific session last, which makes it the default when an ISession is asked for. Catalog and
            // tenant session must therefore be requested explicitly by service name.
            builder
            .Register(c => c.ResolveNamed <Connection>("global-connection").CreateSession(c.Resolve <IInfrastructureConfiguration>().CouchCatalogDatabase))
            .InstancePerLifetimeScope()
            .Named <Session>("catalog-session");
            builder
            .Register(c => c.ResolveNamed <Connection>("global-connection").CreateSession(c.Resolve <IInfrastructureConfiguration>().CouchTenantsDatabase))
            .SingleInstance()
            .Named <Session>("tenants-session");
            builder
            .Register(c => c.ResolveNamed <Connection>("global-connection").CreateSession(c.Resolve <IInfrastructureConfiguration>().CouchErrorsDatabase))
            .SingleInstance()
            .Named <Session>("errors-session");
            builder
            .Register(c => c.ResolveNamed <Connection>("global-connection").CreateSession(c.Resolve <IInfrastructureConfiguration>().CouchMailDatabase))
            .SingleInstance()
            .Named <Session>("mail-session");

            builder
            .Register(c => c.ResolveNamed <Connection>("global-connection").CreateSession(c.Resolve <IInfrastructureConfiguration>().CouchTicketJonesDatabase))
            .InstancePerLifetimeScope()
            .Named <Session>("ticketjones-session");
            builder
            .Register(c =>
            {
                // default session service must determine the current tenant
                // and create a session on that tenant's db
                var t = c.Resolve <Tenant>();
                if (null == t)
                {
                    throw new Exception("No tenant found to respond to this url.");
                }
                var cx = c.Resolve <Connection>();
                if (!cx.ListDatabases(true).Contains(t.Database))
                {
                    cx.CreateDatabase(t.Database);
                }
                return(cx.CreateSession(t.Database));
            })
            .As <Session>()
            .InstancePerLifetimeScope();

            // explicit repositories (i.e. classes in .Infrastructure that inherit from Repository<>) will
            // be registered as services and override this registration. this means that requesting an
            // IRepository<User> will return UserRepository instead of Repository<User>.
            builder
            .RegisterGeneric(typeof(Repository <>))
            .As(typeof(IRepository <>))
            .InstancePerLifetimeScope();

            // register the catalog and tenant repositories seperatly, so that they are forced to attach to their special
            // databases, and not the current tenant's database
            builder
            .Register(c => new ProductRepository(c.ResolveNamed <Session>("catalog-session")))
            .As(typeof(ProductRepository), typeof(IProductRepository), typeof(IRepository <Product>))
            .InstancePerLifetimeScope();
            builder
            .Register(c => new TenantRepository(c.ResolveNamed <Session>("tenants-session")))
            .As(typeof(TenantRepository), typeof(ITenantRepository), typeof(IRepository <Tenant>))
            .InstancePerLifetimeScope();
            builder
            .Register(c => new ErrorRepository(c.ResolveNamed <Session>("errors-session")))
            .As(typeof(ErrorRepository), typeof(IErrorRepository), typeof(IRepository <Error>))
            .InstancePerLifetimeScope();
            builder
            .Register(c => new EmailRepository(c.ResolveNamed <Session>("mail-session")))
            .As(typeof(EmailRepository), typeof(IEmailRepository), typeof(IRepository <Email>))
            .InstancePerLifetimeScope();
            builder
            .Register(c => new TicketJonesCategoryRepository(c.ResolveNamed <Session>("ticketjones-session")))
            .As(typeof(TicketJonesCategoryRepository), typeof(ITicketJonesCategoryRepository), typeof(IRepository <TicketJonesCategory>))
            .InstancePerLifetimeScope();
            builder
            .Register(c => new TicketJonesVenueRepository(c.ResolveNamed <Session>("ticketjones-session")))
            .As(typeof(TicketJonesVenueRepository), typeof(ITicketJonesVenueRepository), typeof(IRepository <TicketJonesVenue>))
            .InstancePerLifetimeScope();
            builder
            .Register(c => new TicketJonesPerformerRepository(c.ResolveNamed <Session>("ticketjones-session")))
            .As(typeof(TicketJonesPerformerRepository), typeof(ITicketJonesPerformerRepository), typeof(IRepository <TicketJonesPerformer>))
            .InstancePerLifetimeScope();
            builder
            .Register(c => new TicketJonesEventRepository(c.ResolveNamed <Session>("ticketjones-session")))
            .As(typeof(TicketJonesEventRepository), typeof(ITicketJonesEventRepository), typeof(IRepository <TicketJonesEvent>))
            .InstancePerLifetimeScope();

            // register the 2nd-level caching system
            builder
            .RegisterGeneric(typeof(EntityCache <>))
            .As(typeof(IEntityCache <>))
            .InstancePerLifetimeScope();

            // register the product entity cache using the http cache store instead
            // of the default per-tenant cache store
            builder.Register(c => new EntityCache <Product>(
                                 c.Resolve <IRepository <Product> >(),
                                 c.ResolveNamed <ICacheStore>("http-context-cache-store")
                                 ))
            .As <IEntityCache <Product> >()
            .InstancePerLifetimeScope();
        }