# TODO
#   - make test
#   - PostgreSQL configuration (host, port, username, password, ..)

# usage:
#
download_source:
	git clone --depth 1 https://git.taler.net/exchange.git/ ./exchange
	mv ./exchange/src/exchangedb/*.sql ./
	mv ./exchange/src/exchangedb/*.sql.in ./
	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
