From 88c1a612ba50e19e5aa8666816d540f4de77dd6f Mon Sep 17 00:00:00 2001 From: swrup Date: Tue, 10 Feb 2026 05:32:18 +0100 Subject: [PATCH] --- tools/dbinit.sh | 88 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 tools/dbinit.sh diff --git a/tools/dbinit.sh b/tools/dbinit.sh new file mode 100644 index 00000000..51296594 --- /dev/null +++ b/tools/dbinit.sh @@ -0,0 +1,88 @@ +# TODO +# - PostgreSQL configuration file/env variable +# (host, port, username, password, ..) + +# usage: +# `make create_database` +# create a `taler-exchange` database +# `make fetch_source` +# fetch all *.sql and *.sql.in files from GNU Taler exchange repository (latest commit) +# file `exchangedb.version` contains hash of latest commit that changed +# something in exchange/src/exchangedb +# `make init` +# initialize taler-exchange database (create tables, ...) +# `taler-exchange` database must already be created +fetch_source() { + git clone https://git.taler.net/exchange.git/ ./exchange + cp ./exchange/src/exchangedb/*.sql ./ + cp ./exchange/src/exchangedb/*.sql.in ./ + git -C ./exchange log -n 1 --pretty=format:%H ./src/exchangedb > exchangedb.version + rm -rf ./exchange +} + +clean_source() { + rm -f ./*.sql + rm -f ./*.sql.in +} + +dbname := taler-exchange +sql_INIT := init.sql +sql_DROP := drop.sql + +sql_DATA := \ + versioning.sql \ + exchange-0001.sql \ + exchange-0002.sql \ + exchange-0003.sql \ + exchange-0004.sql \ + exchange-0005.sql \ + procedures.sql + +procedures.sql: procedures.sql.in exchange_do_*.sql exchange_statistics_*.sql exchange_trigger_*.sql + chmod +w $@ 2> /dev/null || true + gcc -E -P -undef - < procedures.sql.in 2>/dev/null | sed -e "s/--.*//" | awk 'NF' - >$@ + chmod ugo-w $@ + +exchange-0002.sql: exchange-0002.sql.in 0002-*.sql + chmod +w $@ 2> /dev/null || true + gcc -E -P -undef - < exchange-0002.sql.in 2>/dev/null | sed -e "s/--.*//" | awk 'NF' - >$@ + chmod ugo-w $@ + +exchange-0003.sql: exchange-0003.sql.in 0003-*.sql + chmod +w $@ 2> /dev/null || true + gcc -E -P -undef - < exchange-0003.sql.in 2>/dev/null | sed -e "s/--.*//" | awk 'NF' - >$@ + chmod ugo-w $@ + +exchange-0004.sql: exchange-0004.sql.in 0004-*.sql + chmod +w $@ 2> /dev/null || true + gcc -E -P -undef - < exchange-0004.sql.in 2>/dev/null | sed -e "s/--.*//" | awk 'NF' - >$@ + chmod ugo-w $@ + +gen_sql: procedures.sql exchange-0002.sql exchange-0003.sql exchange-0004.sql + +.DEFAULT_GOAL := gen_init +gen_init: gen_sql $(sql_DATA) + @printf "" > $(sql_INIT) + @cat $(sql_DATA) >> $(sql_INIT) + +clean: + rm -f procedures.sql + rm -f exchange-0002.sql + rm -f exchange-0003.sql + rm -f exchange-0004.sql + rm $(sql_INIT) + +# "NOTICE: function xxx() does not exist, skipping" are normal and expected +init: gen_init + psql --host=localhost --port=5432 --username=mte --password --dbname=$(dbname) --file=$(sql_INIT) + +drop: + psql --host=localhost --port=5432 --username=mte --password --dbname=$(dbname) --file=$(sql_DROP) + +create_database: + createdb --host=localhost --port=5432 --username=mte --password $(dbname) + +drop_database: + dropdb --host=localhost --port=5432 --username=mte --password $(dbname) + +reset_database: drop_database create_database