Recount-Server/tests/testdb.go

91 lines
2.2 KiB
Go

package debug_mode
import (
_ "github.com/mattn/go-sqlite3"
"github.com/jmoiron/sqlx"
"github.com/rs/zerolog/log"
)
func Init_testdb(DB_TYPE string, DB_CONNECTION_STRING string) {
db, err := sqlx.Connect(DB_TYPE, DB_CONNECTION_STRING)
if err != nil {
log.Fatal().
Err(err).
Msg("Couldn't open test db")
}
defer db.Close()
init_sql := `
CREATE TABLE accounts (
acnt_id Integer PRIMARY KEY,
acnt_dsply_name varchar(50) NOT NULL,
acnt_description varchar(250) NULL
);
CREATE TABLE buckets (
bkt_id Integer PRIMARY KEY,
bkt_dsply_code varchar(5) NOT NULL,
bkt_dsply_name varchar(50) NULL,
bkt_description varchar(250) NULL
);
CREATE TABLE transactions (
trns_id Integer PRIMARY KEY,
trns_amount money NOT NULL,
trns_description varchar(250) NULL,
trns_account int4 NOT NULL,
trns_bucket int4 NULL,
trns_date Date not null,
FOREIGN KEY (trns_account)
REFERENCES accounts (acnt_id)
ON UPDATE CASCADE ON DELETE SET NULL,
FOREIGN KEY (trns_bucket)
REFERENCES buckets (bkt_id)
ON UPDATE CASCADE ON DELETE SET NULL
);
CREATE TABLE transaction_breakdown (
trns_brkdwn_id Integer PRIMARY KEY,
trns_brkdwn_amount money NOT NULL,
trns_brkdwn_parent_transaction int4 NOT NULL,
trns_brkdwn_catagory int4 NULL,
trns_brkdwn_bucket int4 NULL,
FOREIGN KEY (trns_brkdwn_parent_transaction)
REFERENCES transactions (trns_id)
ON UPDATE CASCADE ON DELETE SET NULL,
FOREIGN KEY (trns_brkdwn_catagory)
REFERENCES transaction_categories(trns_ctgry_id)
ON UPDATE CASCADE ON DELETE SET NULL,
FOREIGN KEY (trns_brkdwn_bucket)
REFERENCES buckets (bkt_id)
ON UPDATE CASCADE ON DELETE SET NULL
);
CREATE TABLE transaction_categories (
trns_ctgry_id Integer PRIMARY KEY,
trns_ctgry_dsply_code varchar(5) NOT NULL,
trns_ctgry_dsply_name varchar(50) NOT NULL,
trns_ctgry_description varchar(250) NULL
);
`
tx := db.MustBegin()
tx.MustExec(init_sql)
err = tx.Commit()
if err != nil {
log.Fatal().
Err(err).
Msg("Could not commit transaction")
}
log.Debug().Msg("Test database initialized")
}