diff --git a/src/PaymentServer/Persistence.hs b/src/PaymentServer/Persistence.hs index 04ac8997b28c3e5b83fad91fde1df2167a358141..6f9548f9de135edeadd76171f9f71ab82271e94c 100644 --- a/src/PaymentServer/Persistence.hs +++ b/src/PaymentServer/Persistence.hs @@ -337,8 +337,9 @@ sqlite path = dbConn <- Sqlite.open (unpack path) let exec = Sqlite.execute_ dbConn exec "PRAGMA foreign_keys = ON" - exec "CREATE TABLE IF NOT EXISTS vouchers (id INTEGER PRIMARY KEY, name TEXT UNIQUE)" - exec "CREATE TABLE IF NOT EXISTS redeemed (id INTEGER PRIMARY KEY, voucher_id INTEGER, counter INTEGER, fingerprint TEXT, FOREIGN KEY (voucher_id) REFERENCES vouchers(id))" - return dbConn + Sqlite.withExclusiveTransaction dbConn $ do + exec "CREATE TABLE IF NOT EXISTS vouchers (id INTEGER PRIMARY KEY, name TEXT UNIQUE)" + exec "CREATE TABLE IF NOT EXISTS redeemed (id INTEGER PRIMARY KEY, voucher_id INTEGER, counter INTEGER, fingerprint TEXT, FOREIGN KEY (voucher_id) REFERENCES vouchers(id))" + return dbConn in return . SQLiteDB $ connect