public PostgreSqlSnapshotStore(Config snapshotConfig) : base(snapshotConfig)
        {
            var          config = snapshotConfig.WithFallback(Extension.DefaultJournalConfig);
            StoredAsType storedAs;
            var          storedAsString = config.GetString("stored-as");

            if (!Enum.TryParse(storedAsString, true, out storedAs))
            {
                throw new ConfigurationException($"Value [{storedAsString}] of the 'stored-as' HOCON config key is not valid. Valid values: bytea, json, jsonb.");
            }

            QueryExecutor = new PostgreSqlQueryExecutor(new PostgreSqlQueryConfiguration(
                                                            schemaName: config.GetString("schema-name"),
                                                            snapshotTableName: config.GetString("table-name"),
                                                            persistenceIdColumnName: "persistence_id",
                                                            sequenceNrColumnName: "sequence_nr",
                                                            payloadColumnName: "payload",
                                                            manifestColumnName: "manifest",
                                                            timestampColumnName: "created_at",
                                                            serializerIdColumnName: "serializer_id",
                                                            timeout: config.GetTimeSpan("connection-timeout"),
                                                            storedAs: storedAs,
                                                            defaultSerializer: config.GetString("serializer"),
                                                            useSequentialAccess: config.GetBoolean("sequential-access")),
                                                        Context.System.Serialization);

            SnapshotSettings = new PostgreSqlSnapshotStoreSettings(config);
        }
        public PostgreSqlSnapshotStore()
        {
            _extension = PostgreSqlPersistence.Instance.Apply(Context.System);

            _settings    = _extension.SnapshotStoreSettings;
            QueryBuilder = new PostgreSqlSnapshotQueryBuilder(_settings.SchemaName, _settings.TableName);
            QueryMapper  = new PostgreSqlSnapshotQueryMapper(Context.System.Serialization);
        }
        public PostgreSqlSnapshotStore()
        {
            _extension = PostgreSqlPersistence.Instance.Apply(Context.System);

            _settings = _extension.SnapshotStoreSettings;
            QueryBuilder = new PostgreSqlSnapshotQueryBuilder(_settings.SchemaName, _settings.TableName);
            QueryMapper = new PostgreSqlSnapshotQueryMapper(Context.System.Serialization);
        }
 public PostgreSqlSnapshotQueryBuilder(PostgreSqlSnapshotStoreSettings settings)
 {
     var tableName = settings.TableName;
     var schemaName = settings.SchemaName;
     _deleteSql = @"DELETE FROM {0}.{1} WHERE persistence_id = :persistence_id ".QuoteSchemaAndTable(schemaName, tableName);
     _insertSql = @"INSERT INTO {0}.{1} (persistence_id, sequence_nr, created_at, created_at_ticks, manifest, snapshot) VALUES (:persistence_id, :sequence_nr, :created_at, :created_at_ticks, :manifest, :snapshot)".QuoteSchemaAndTable(schemaName, tableName);
     _selectSql = @"SELECT persistence_id, sequence_nr, created_at, created_at_ticks, manifest, snapshot FROM {0}.{1} WHERE persistence_id = :persistence_id".QuoteSchemaAndTable(schemaName, tableName);
 }
        public PostgreSqlSnapshotQueryBuilder(PostgreSqlSnapshotStoreSettings settings)
        {
            var tableName  = settings.TableName;
            var schemaName = settings.SchemaName;

            _deleteSql = @"DELETE FROM {0}.{1} WHERE persistence_id = :persistence_id ".QuoteSchemaAndTable(schemaName, tableName);
            _insertSql = @"INSERT INTO {0}.{1} (persistence_id, sequence_nr, created_at, created_at_ticks, manifest, snapshot) VALUES (:persistence_id, :sequence_nr, :created_at, :created_at_ticks, :manifest, :snapshot)".QuoteSchemaAndTable(schemaName, tableName);
            _selectSql = @"SELECT persistence_id, sequence_nr, created_at, created_at_ticks, manifest, snapshot FROM {0}.{1} WHERE persistence_id = :persistence_id".QuoteSchemaAndTable(schemaName, tableName);
        }