public void Setup()
 {
     _testRep = new TestRepository();
     _rep = new CachingRepository(_testRep, new TestEventStore());
     _aggregate = _testRep.Get<TestAggregate>(Guid.NewGuid());
     _rep.Save(_aggregate,-1);
 }
示例#2
0
        public void Stores_and_deletes()
        {
            bool deleted  = false;
            bool inserted = false;
            var  key      = Guid.NewGuid().ToString("N");

            using (var session = new CachingRepository <string, Document>(_repo,
                                                                          _ => deleted = true,
                                                                          _ => inserted = true))
            {
                session.Run(key, d => { d.Name = "test"; d.Value = "test123"; });
                session.Commit();
            }

            deleted.ShouldBeFalse();
            inserted.ShouldBeTrue();
            _repo.Get(key).ShouldNotBeNull();

            inserted = false;

            using (var session = new CachingRepository <string, Document>(_repo,
                                                                          _ => deleted = true,
                                                                          _ => inserted = true))
            {
                session.Delete(key);
                session.IsDeleted(key).ShouldBeTrue();
                session.Commit();
            }

            deleted.ShouldBeTrue();
            inserted.ShouldBeFalse();
            _repo.Get(key).ShouldBeNull();
        }
示例#3
0
        static void Main(string[] args)
        {
            ILoggerFactory loggerFactory = new ConsoleLoggerFactory();

            using (CachingRepository <MessageTemplate> repository
                       = new CachingRepository <MessageTemplate>(
                             new Repository <MessageTemplate>(new MessageTemplatesContext())))
            {
                ITransmissionStrategy transmissionStrategy =
                    new SmsTransmissionStrategy(loggerFactory);

                Messenger messenger = new Messenger(
                    loggerFactory,
                    repository,
                    transmissionStrategy);

                IUser user = new User("Gen-Eric", "*****@*****.**", "+4522123631");

                messenger.Send(new Message
                {
                    Recipient         = user,
                    MessageTemplateId = 1,
                    Parameters        = new List <object> {
                        "Jesper", DateTime.Now
                    }
                });

                Console.ReadLine();
            }
        }
示例#4
0
        private static void ComposeObjects()
        {
            var wrappedRepository        = new ServiceRepository();
            IPersonRepository repository = new CachingRepository(wrappedRepository);
            var viewModel = new PeopleViewerViewModel(repository);

            Application.Current.MainWindow = new PeopleViewerWindow(viewModel);
        }
示例#5
0
        public when_using_caching_repository()
        {
            var mockStore = new MockStreamStoreConnection("testRepo");

            mockStore.Connect();
            _repo        = new StreamStoreRepository(new PrefixedCamelCaseStreamNameBuilder(), mockStore, new JsonMessageSerializer());
            _cachingRepo = new CachingRepository(_repo);
        }
示例#6
0
        private static void CompositionObjects()
        {
            //ISuperheroRepository repository = new CSVRepository();
            var decoratedRepository      = new SuperheroRepository();
            var repository               = new CachingRepository(decoratedRepository);
            SuperheroViewModel viewModel = new SuperheroViewModel(repository);

            Application.Current.MainWindow = new SuperheroesViewerWindow(viewModel);
        }
示例#7
0
        private void GetRepos(string dbName, out DaoRepository daoRepo, out CachingRepository cachingRepo)
        {
            SQLiteDatabase db = new SQLiteDatabase(dbName);

            daoRepo = new DaoRepository(db);
            daoRepo.DaoNamespace     = $"{typeof(TestMonkey).Namespace}.Dao";
            daoRepo.WarningsAsErrors = false;
            daoRepo.AddType <TestMonkey>();
            cachingRepo = new CachingRepository(daoRepo);
        }
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);
            var wrappedRepository = new ServiceRepository();
            var repository        = new CachingRepository(wrappedRepository);
            var viewModel         = new MainWindowViewModel(repository);

            Application.Current.MainWindow = new MainWindow(viewModel);
            Application.Current.MainWindow.Show();
        }
示例#9
0
        public void Cannot_commitsession_twice()
        {
            var key = Guid.NewGuid().ToString("N");

            using (var session = new CachingRepository <string, Document>(_repo))
            {
                session.Run(key, d => { d.Name = "test"; d.Value = "test123"; });
                session.Commit();
                Should.Throw <ObjectDisposedException>(() => session.Commit());
            }
        }
示例#10
0
        protected override void OnStartup(StartupEventArgs e)
        {
            base.OnStartup(e);
            ServiceRepository wrappedRepository = new ServiceRepository();
            CachingRepository serviceRepository = new CachingRepository(wrappedRepository);
            PeopleViewModel   peopleViewModel   = new PeopleViewModel(serviceRepository);

            Application.Current.MainWindow = new MainWindow(peopleViewModel);

            Application.Current.MainWindow.Show();
        }
示例#11
0
        public CompositeRepository(DaoRepository sourceRepository, DataProvider dataProvider = null)
        {
            DataDirectoryProvider      = dataProvider ?? DataProvider.Current;
            SourceRepository           = sourceRepository;
            ReadRepository             = new CachingRepository(sourceRepository);
            WriteRepositories          = new HashSet <IRepository>();
            WorkspacePath              = DataDirectoryProvider.GetWorkspaceDirectory(this.GetType()).FullName;
            BackupRepository           = ServiceRegistry.Default.Get <IRepository>();
            TypeSchemaTempPathProvider = (sd, ts) => Path.Combine(WorkspacePath, sd.Name, ts.Hash);

            WireBackup();

            sourceRepository.StorableTypes.Each(type => AddType(type));
        }
示例#12
0
        public CompositeRepository(DaoRepository sourceRepository, DataSettings dataSettings = null)
        {
            DataSettings               = dataSettings ?? DataSettings.Current;
            SourceRepository           = sourceRepository;
            ReadRepository             = new CachingRepository(sourceRepository);
            WriteRepositories          = new HashSet <IRepository>();
            WorkspacePath              = DataSettings.GetWorkspaceDirectory(this.GetType()).FullName;
            BackupRepository           = new ObjectRepository(DataSettings.GetSysDataDirectory("BackupObjectRepo").FullName);
            TypeSchemaTempPathProvider = (sd, ts) => Path.Combine(WorkspacePath, sd.Name, ts.Hash);

            WireBackup();

            sourceRepository.StorableTypes.Each(type => AddType(type));
        }
示例#13
0
        public CompositeRepository(DaoRepository sourceRepository, string workspacePath)
        {
            SourceRepository           = sourceRepository;
            ReadRepository             = new CachingRepository(sourceRepository);
            WriteRepositories          = new HashSet <IRepository>();
            WorkspacePath              = workspacePath;
            BackupRepository           = new ObjectRepository(Path.Combine(WorkspacePath, "BackupObjectRepo"));
            TypeSchemaTempPathProvider = (sd, ts) =>
            {
                return(Path.Combine(WorkspacePath, sd.Name, ts.Hash));
            };

            WireBackup();

            sourceRepository.StorableTypes.Each(type => AddType(type));
        }
示例#14
0
        public void Does_not_store_anything_if_not_committed()
        {
            bool triggered = false;
            var  key       = Guid.NewGuid().ToString("N");

            using (var session = new CachingRepository <string, Document>(_repo,
                                                                          _ => triggered = true,
                                                                          _ => triggered = true))
            {
                session.Run(key, d => { d.Name = "test"; d.Value = "test123"; });
                session[key].Name.ShouldBe("test");
                session[key].Value.ShouldBe("test123");
            }

            triggered.ShouldBeFalse();
            _repo.Get(key).ShouldBeNull();
        }
示例#15
0
        private IEnumerable <Repository> GetTestRepositories()
        {
            ConsoleLogger logger = new ConsoleLogger {
                AddDetails = false, UseColors = true
            };

            logger.StartLoggingThread();
            string        schemaName = "TheSchemaName_".RandomLetters(5);
            DaoRepository daoRepo    = new DaoRepository(new SQLiteDatabase(".", nameof(RepoQueryTest)), logger, schemaName);

            daoRepo.WarningsAsErrors = false;
            daoRepo.AddType(typeof(KeyHashRepoTestData));
            yield return(daoRepo);

            CachingRepository cachingRepo = new CachingRepository(daoRepo, logger);

            yield return(cachingRepo);
        }
示例#16
0
        public void ShouldQueryCacheTest()
        {
            ConsoleLogger logger = new ConsoleLogger {
                AddDetails = false, UseColors = true
            };

            logger.StartLoggingThread();
            string        schemaName = "TheSchemaName_".RandomLetters(5);
            DaoRepository repo       = new DaoRepository(new SQLiteDatabase(".", nameof(ShouldQueryCacheTest)), logger, schemaName);

            repo.AddType(typeof(TestData));
            CachingRepository cachingRepo = new CachingRepository(repo, logger);

            TestData data = new TestData {
                Name = "Bryan", SerialNumber = "12345A", OtherInformation = "is having an existential crisis"
            };

            data.Save <TestData>(cachingRepo);

            bool?queriedSource = false;
            bool?queriedCache  = false;

            cachingRepo.SubscribeOnce(nameof(CachingRepository.QueriedSource), (o, a) =>
            {
                OutLineFormat("Queried source: {0}", ConsoleColor.Yellow, a.PropertiesToLine());
                queriedSource = true;
            });
            cachingRepo.SubscribeOnce(nameof(CachingRepository.QueriedCache), (o, a) =>
            {
                OutLineFormat("Queried cache: {0}", ConsoleColor.Green, a.PropertiesToLine());
                queriedCache = true;
            });
            IEnumerable <TestData> result = cachingRepo.Query <TestData>(td => td.SerialNumber.Equals(data.SerialNumber));

            Expect.AreEqual(1, result.Count());
            result = cachingRepo.Query <TestData>(td => td.SerialNumber.Equals(data.SerialNumber));

            Expect.AreEqual(1, result.Count());
            Expect.IsTrue(queriedSource.Value, "didn't query source");
            Expect.IsTrue(queriedCache.Value, "didn't query cache");
        }
示例#17
0
        public void SavingKeyHashRepoDataShouldntDuplicate()
        {
            ConsoleLogger logger = new ConsoleLogger {
                AddDetails = false, UseColors = true
            };

            logger.StartLoggingThread();
            string        schemaName = "TheSchemaName_".RandomLetters(5);
            DaoRepository repo       = new DaoRepository(new SQLiteDatabase(".", nameof(SavingKeyHashRepoDataShouldntDuplicate)), logger, schemaName);

            repo.WarningsAsErrors = false;
            repo.AddType(typeof(KeyHashRepoTestData));
            CachingRepository cachingRepo = new CachingRepository(repo, logger);

            string nameOne          = 32.RandomLetters();
            string valueOne         = 16.RandomLetters();
            KeyHashRepoTestData one = new KeyHashRepoTestData {
                Name = nameOne, SomeOtherUniqueProperty = valueOne
            };
            KeyHashRepoTestData two = new KeyHashRepoTestData {
                Name = nameOne, SomeOtherUniqueProperty = valueOne
            };

            Expect.AreEqual(one, two);

            one.Save <KeyHashRepoTestData>(cachingRepo);
            var queryParams = new { Name = nameOne };

            cachingRepo.Cache <KeyHashRepoTestData>(queryParams);
            List <KeyHashRepoTestData> retrieved = cachingRepo.Query <KeyHashRepoTestData>(queryParams).ToList();

            Expect.AreEqual(1, retrieved.Count);
            two.Save <KeyHashRepoTestData>(cachingRepo);
            retrieved = cachingRepo.Query <KeyHashRepoTestData>(queryParams).ToList();
            Expect.AreEqual(1, retrieved.Count);
        }
 public void Should_get_same_aggregate_from_different_cache_repository()
 {
     var rep = new CachingRepository(new TestRepository(), new TestEventStore());
     var aggregate = rep.Get<TestAggregate>(_aggregate.Id);
     Assert.That(aggregate, Is.EqualTo(_aggregate));
 }
 public void Setup()
 {
     _rep = new CachingRepository(new TestRepository(), new TestEventStore());
     _aggregate = _rep.Get<TestAggregate>(Guid.NewGuid());
 }
 public CachingRepositoryTests(ITestOutputHelper output) : base(output)
 {
     _cachingRepository = (CachingRepository)ServiceProvider.GetService <ICachingRepository>();
 }
示例#21
0
 private void GetRepos(string dbName, out MongoRepository mongoRepo, out CachingRepository cachingRepo)
 {
     mongoRepo = new MongoRepository(databaseName: dbName);
     mongoRepo.AddType <TestMonkey>();
     cachingRepo = new CachingRepository(mongoRepo);
 }