PG-Snapshot-DataSource

Open source library that allows creating snapshots of embedded postgres database state and restore from them

Лицензия

Лицензия

Категории

Категории

Данные
Группа

Группа

com.afrunt.pgs
Идентификатор

Идентификатор

pg-snapshot-datasource
Последняя версия

Последняя версия

0.1
Дата

Дата

Тип

Тип

jar
Описание

Описание

PG-Snapshot-DataSource
Open source library that allows creating snapshots of embedded postgres database state and restore from them
Ссылка на сайт

Ссылка на сайт

https://github.com/afrunt/pg-snapshot-datasource
Система контроля версий

Система контроля версий

http://github.com/afrunt/pg-snapshot-datasource/tree/master

Скачать pg-snapshot-datasource

Как подключить последнюю версию

<!-- https://jarcasting.com/artifacts/com.afrunt.pgs/pg-snapshot-datasource/ -->
<dependency>
    <groupId>com.afrunt.pgs</groupId>
    <artifactId>pg-snapshot-datasource</artifactId>
    <version>0.1</version>
</dependency>
// https://jarcasting.com/artifacts/com.afrunt.pgs/pg-snapshot-datasource/
implementation 'com.afrunt.pgs:pg-snapshot-datasource:0.1'
// https://jarcasting.com/artifacts/com.afrunt.pgs/pg-snapshot-datasource/
implementation ("com.afrunt.pgs:pg-snapshot-datasource:0.1")
'com.afrunt.pgs:pg-snapshot-datasource:jar:0.1'
<dependency org="com.afrunt.pgs" name="pg-snapshot-datasource" rev="0.1">
  <artifact name="pg-snapshot-datasource" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.afrunt.pgs', module='pg-snapshot-datasource', version='0.1')
)
libraryDependencies += "com.afrunt.pgs" % "pg-snapshot-datasource" % "0.1"
[com.afrunt.pgs/pg-snapshot-datasource "0.1"]

Зависимости

compile (2)

Идентификатор библиотеки Тип Версия
io.zonky.test : embedded-postgres Необязательный jar 1.2.10
org.slf4j : slf4j-api Необязательный jar

test (5)

Идентификатор библиотеки Тип Версия
org.springframework : spring-jdbc jar
org.junit.jupiter : junit-jupiter jar
org.assertj : assertj-core jar
junit : junit jar
org.slf4j : slf4j-simple jar

Модули Проекта

Данный проект не имеет модулей.

Build Status

Java library that helps you to create simple embedded postgres database and make the snapshots

Add pg-snapshot-datasource to your project. For maven projects just add this dependency:

<dependency>
    <groupId>com.afrunt.pgs</groupId>
    <artifactId>pg-snapshot-datasource</artifactId>
    <version>0.1</version>
</dependency>

Usage

package com.afrunt.pgs.test;

import com.afrunt.pgs.PgSnapshot;
import com.afrunt.pgs.PgSnapshotDataSource;
import org.junit.jupiter.api.Test;
import org.springframework.jdbc.BadSqlGrammarException;
import org.springframework.jdbc.core.JdbcTemplate;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;

public class PgSnapshotDataSourceTest {
    @Test
    public void testSnapshotCreateRestore() throws Exception {
        PgSnapshotDataSource dataSource = new PgSnapshotDataSource();

        PgSnapshot initialState = dataSource.createSnapshot("Initial state");

        JdbcTemplate jdbc = new JdbcTemplate(dataSource);

        jdbc.execute("CREATE TABLE dummy(id bigint PRIMARY KEY)");

        for (int i = 0; i < 10; i++) {
            final var id = i;
            jdbc.update("INSERT INTO dummy (id) VALUES (?)", ps -> ps.setInt(1, id));
        }

        assertThat(jdbc.queryForObject("SELECT COUNT(*) FROM dummy", Integer.class)).isEqualTo(10);

        PgSnapshot mutatedState = dataSource.createSnapshot("Mutated state");

        dataSource.restoreFromSnapshot(initialState);

        assertThatThrownBy(() -> jdbc.queryForObject("SELECT COUNT(*) FROM dummy", Integer.class)).isInstanceOf(BadSqlGrammarException.class);

        dataSource.restoreFromSnapshot(mutatedState);

        assertThat(jdbc.queryForObject("SELECT COUNT(*) FROM dummy", Integer.class)).isEqualTo(10);

        dataSource.close();
    }
}

Версии библиотеки

Версия
0.1