Exemplo n.º 1
0
        public PostgresEventStore(IServiceProvider serviceProvider, string connectionString, string databaseSchemaName, bool cleanAll = false)
        {
            _aggregateRepository  = new AggregateRepository(this);
            _projectionRepository = new ProjectionRepository(serviceProvider);

            var options = new StoreOptions();

            options.Connection(connectionString);
            options.Projections.Add(new Projection(_projectionRepository));

            // Serialize enums as strings
            var serializer = new Marten.Services.JsonNetSerializer();

            serializer.EnumStorage = Weasel.Core.EnumStorage.AsString;
            options.Serializer(serializer);

            // Can be overridden
            options.AutoCreateSchemaObjects = Weasel.Postgresql.AutoCreate.All;
            options.DatabaseSchemaName      = databaseSchemaName;

            _store = new DocumentStore(options);

            if (cleanAll)
            {
                _store.Advanced.Clean.CompletelyRemoveAll();
            }

            _commandLog = new PostgresCommandLog(_store);

            _sequences = new PostgresSequenceStore(connectionString, databaseSchemaName);
        }
Exemplo n.º 2
0
        private Marten.IDocumentStore InitializeDocumentStore(string connectionString)
        {
            try
            {
                var serializer = new Marten.Services.JsonNetSerializer();
                serializer.Customize(_ =>
                {
                    _.ContractResolver = new PrivateSetterContractResolver();
                });

                var store = DocumentStore
                            .For(_ =>
                {
                    _.Connection(connectionString);
                    _.Serializer(serializer);
                    _.AutoCreateSchemaObjects = AutoCreate.CreateOrUpdate;
                });
                return(store);
            }
            catch (PostgresException ex)
            {
                if (ex.SqlState == "3D000")
                {
                    Log.Error("Database does not exist.");
                }

                throw;
            }
        }