Beispiel #1
0
        public static ISagaRepository <TSaga> Create(IDocumentStore documentStore)
        {
            var consumeContextFactory = new SagaConsumeContextFactory <IDocumentSession, TSaga>();

            ISagaRepositoryContextFactory <TSaga> repositoryContextFactory = new MartenSagaRepositoryContextFactory <TSaga>(documentStore, consumeContextFactory);

            return(new SagaRepository <TSaga>(repositoryContextFactory));
        }
        public static ISagaRepository <TSaga> Create(Func <CloudTable> tableFactory)
        {
            var consumeContextFactory = new SagaConsumeContextFactory <DatabaseContext <TSaga>, TSaga>();

            var repositoryContextFactory = new AzureTableSagaRepositoryContextFactory <TSaga>(tableFactory, consumeContextFactory);

            return(new SagaRepository <TSaga>(repositoryContextFactory));
        }
Beispiel #3
0
        public static ISagaRepository <TSaga> Create(ISessionFactory sessionFactory)
        {
            var consumeContextFactory = new SagaConsumeContextFactory <ISession, TSaga>();

            var repositoryContextFactory = new NHibernateSagaRepositoryContextFactory <TSaga>(sessionFactory, consumeContextFactory);

            return(new SagaRepository <TSaga>(repositoryContextFactory));
        }
        static ISagaRepository <TSaga> CreateRepository(ISagaDbContextFactory <TSaga> dbContextFactory, ISagaRepositoryLockStrategy <TSaga> lockStrategy)
        {
            var consumeContextFactory = new SagaConsumeContextFactory <DbContext, TSaga>();

            var repositoryFactory =
                new EntityFrameworkSagaRepositoryContextFactory <TSaga>(dbContextFactory, consumeContextFactory, lockStrategy);

            return(new SagaRepository <TSaga>(repositoryFactory));
        }
        public static ISagaRepository <TSaga> Create(string connectionString, IsolationLevel isolationLevel = IsolationLevel.Serializable)
        {
            var consumeContextFactory = new SagaConsumeContextFactory <DatabaseContext <TSaga>, TSaga>();

            var options = new DapperOptions <TSaga>(connectionString, isolationLevel);
            var repositoryContextFactory = new DapperSagaRepositoryContextFactory <TSaga>(options, consumeContextFactory);

            return(new SagaRepository <TSaga>(repositoryContextFactory));
        }
        public static ISagaRepository <T> Create <T>()
            where T : class, ISaga
        {
            var consumeContextFactory = new SagaConsumeContextFactory <MessageSessionContext, T>();

            var repositoryFactory = new MessageSessionSagaRepositoryContextFactory <T>(consumeContextFactory);

            return(new SagaRepository <T>(repositoryFactory));
        }
Beispiel #7
0
        public static ISagaRepository <TSaga> Create(IMongoDatabase database, ICollectionNameFormatter collectionNameFormatter)
        {
            var mongoDbSagaConsumeContextFactory = new SagaConsumeContextFactory <IMongoCollection <TSaga>, TSaga>();

            var repositoryContextFactory = new MongoDbSagaRepositoryContextFactory <TSaga>(database.GetCollection <TSaga>(collectionNameFormatter),
                                                                                           mongoDbSagaConsumeContextFactory);

            return(new SagaRepository <TSaga>(repositoryContextFactory));
        }
Beispiel #8
0
        public static ISagaRepository <TSaga> Create(Func <CloudTable> tableFactory, ISagaKeyFormatter <TSaga> keyFormatter)
        {
            var consumeContextFactory = new SagaConsumeContextFactory <DatabaseContext <TSaga>, TSaga>();

            var cloudTableProvider = new DelegateCloudTableProvider <TSaga>(tableFactory);

            var repositoryContextFactory = new AzureTableSagaRepositoryContextFactory <TSaga>(cloudTableProvider, consumeContextFactory, keyFormatter);

            return(new SagaRepository <TSaga>(repositoryContextFactory));
        }
        public static ISagaRepository <TSaga> Create(Func <IDatabase> redisDbFactory, bool optimistic = true, TimeSpan?lockTimeout = null, TimeSpan?
                                                     lockRetryTimeout = null, string keyPrefix = "", TimeSpan?expiry = null)
        {
            var options = new RedisSagaRepositoryOptions <TSaga>(optimistic ? ConcurrencyMode.Optimistic : ConcurrencyMode.Pessimistic, lockTimeout, null,
                                                                 keyPrefix, SelectDefaultDatabase, expiry);

            var consumeContextFactory = new SagaConsumeContextFactory <DatabaseContext <TSaga>, TSaga>();

            var repositoryContextFactory = new RedisSagaRepositoryContextFactory <TSaga>(redisDbFactory, consumeContextFactory, options);

            return(new SagaRepository <TSaga>(repositoryContextFactory));
        }
        public static ISagaRepository <TSaga> Create(CosmosClient client, string databaseName, ICollectionIdFormatter collectionIdFormatter)
        {
            if (collectionIdFormatter == null)
            {
                throw new ArgumentNullException(nameof(collectionIdFormatter));
            }

            var databaseContext = new CosmosDatabaseContext <TSaga>(client.GetContainer(databaseName, collectionIdFormatter.Saga <TSaga>()));

            var consumeContextFactory = new SagaConsumeContextFactory <DatabaseContext <TSaga>, TSaga>();

            var repositoryFactory = new CosmosSagaRepositoryContextFactory <TSaga>(databaseContext, consumeContextFactory);

            return(new SagaRepository <TSaga>(repositoryFactory));
        }