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") }