Add PostgreSQL support

Therefore add migration scripts and default connection settings. Also
add a draft chapter in the documentation about how to setup the database
. Make HSQLDB the default for integration tests.
This commit is contained in:
2019-03-16 00:04:13 +01:00
parent e9774b3b35
commit aa92718e74
7 changed files with 90 additions and 21 deletions

View File

@@ -1,4 +1,4 @@
spring.flyway.locations=classpath:/database/hsqldb
spring.flyway.locations=classpath:/database/hsqldb,classpath:/database/common
# DataSource
#spring.datasource.url=jdbc:hsqldb:file:/tmp/financer

View File

@@ -1 +1,7 @@
spring.flyway.locations=classpath:/database/postgres
spring.flyway.locations=classpath:/database/postgres,classpath:/database/common
spring.datasource.url=jdbc:postgresql://localhost/financer
spring.datasource.username=financer
# See https://github.com/spring-projects/spring-boot/issues/12007
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true

View File

@@ -0,0 +1,15 @@
-- Accounts
INSERT INTO account ("key", type, status, current_balance)
VALUES ('accounts.checkaccount', 'BANK', 'OPEN', 0);
INSERT INTO account ("key", type, status, current_balance)
VALUES ('accounts.income', 'INCOME', 'OPEN', 0);
INSERT INTO account ("key", type, status, current_balance)
VALUES ('accounts.cash', 'CASH', 'OPEN', 0);
INSERT INTO account ("key", type, status, current_balance)
VALUES ('accounts.start', 'START', 'OPEN', 0);
INSERT INTO account ("key", type, status, current_balance)
VALUES ('accounts.rent', 'EXPENSE', 'OPEN', 0);

View File

@@ -42,20 +42,4 @@ CREATE TABLE "transaction" ( --escape keyword "transaction"
CONSTRAINT fk_transaction_from_account FOREIGN KEY (from_account_id) REFERENCES account (id),
CONSTRAINT fk_transaction_to_account FOREIGN KEY (to_account_id) REFERENCES account (id),
CONSTRAINT fk_transaction_recurring_transaction FOREIGN KEY (recurring_transaction_id) REFERENCES recurring_transaction (id)
);
-- Accounts
INSERT INTO account (id, "key", type, status, current_balance)
VALUES (1, 'accounts.checkaccount', 'BANK', 'OPEN', 0); -- insert first with ID 1 so we get predictable numbering
INSERT INTO account ("key", type, status, current_balance)
VALUES ('accounts.income', 'INCOME', 'OPEN', 0);
INSERT INTO account ("key", type, status, current_balance)
VALUES ('accounts.cash', 'CASH', 'OPEN', 0);
INSERT INTO account ("key", type, status, current_balance)
VALUES ('accounts.start', 'START', 'OPEN', 0);
INSERT INTO account ("key", type, status, current_balance)
VALUES ('accounts.rent', 'EXPENSE', 'OPEN', 0);
);

View File

@@ -0,0 +1,45 @@
--
-- This file contains the basic initialization of the financer schema and basic init data
--
-- Account table
CREATE TABLE account (
id BIGINT NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
"key" VARCHAR(1000) NOT NULL, --escape keyword "key"
type VARCHAR(255) NOT NULL,
status VARCHAR(255) NOT NULL,
current_balance BIGINT NOT NULL,
CONSTRAINT un_account_name_key UNIQUE ("key")
);
-- Recurring transaction table
CREATE TABLE recurring_transaction (
id BIGINT NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
from_account_id BIGINT NOT NULL,
to_account_id BIGINT NOT NULL,
description VARCHAR(1000),
amount BIGINT NOT NULL,
interval_type VARCHAR(255) NOT NULL,
first_occurrence DATE NOT NULL,
last_occurrence DATE,
holiday_weekend_type VARCHAR(255) NOT NULL,
CONSTRAINT fk_recurring_transaction_from_account FOREIGN KEY (from_account_id) REFERENCES account (id),
CONSTRAINT fk_recurring_transaction_to_account FOREIGN KEY (to_account_id) REFERENCES account (id)
);
-- Transaction table
CREATE TABLE "transaction" ( --escape keyword "transaction"
id BIGINT NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
from_account_id BIGINT NOT NULL,
to_account_id BIGINT NOT NULL,
"date" DATE NOT NULL, --escape keyword "date"
description VARCHAR(1000),
amount BIGINT NOT NULL,
recurring_transaction_id BIGINT,
CONSTRAINT fk_transaction_from_account FOREIGN KEY (from_account_id) REFERENCES account (id),
CONSTRAINT fk_transaction_to_account FOREIGN KEY (to_account_id) REFERENCES account (id),
CONSTRAINT fk_transaction_recurring_transaction FOREIGN KEY (recurring_transaction_id) REFERENCES recurring_transaction (id)
);