sql_DATA := \
  versioning.sql \
  exchange-0001.sql \
  exchange-0002.sql \
  exchange-0003.sql \
  exchange-0004.sql \
  exchange-0005.sql \
  procedures.sql \
  tops-0001.sql
  # benchmark-0001.sql \
  # auditor-triggers-0001.sql \
  # drop.sql \

sql_INIT := init.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)
	procedures.sql

clean:
	rm -f procedures.sql
	rm -f exchange-0002.sql
	rm -f exchange-0003.sql
	rm -f exchange-0004.sql
	rm $(sql_INIT)

exec: gen_init
	psql --host=localhost --port=5432 --username=mte --password --dbname=taler-exchange --file=$(sql_INIT)

drop_schema:
	psql --host=localhost --port=5432 --username=mte --password --dbname=taler-exchange --command="DROP SCHEMA exchange CASCADE;"

drop: gen_init
	psql --host=localhost --port=5432 --username=mte --password --dbname=taler-exchange --file=drop.sql

create_database:
	createdb --host=localhost --port=5432 --username=mte --password "taler-exchange"

drop_database:
	dropdb --host=localhost --port=5432 --username=mte --password "taler-exchange"

reset_database: drop_database create_database
