diff --git a/src/PaymentServer/Persistence.hs b/src/PaymentServer/Persistence.hs index 1d9f0251388b7b2a535bc3bce0350a0f137557a9..3115e77b55e2680893b2ecee3eb809e98b1e15e0 100644 --- a/src/PaymentServer/Persistence.hs +++ b/src/PaymentServer/Persistence.hs @@ -103,7 +103,7 @@ instance VoucherDatabase VoucherDatabaseState where redeemVoucher SQLiteDB { conn = conn } voucher fingerprint = do unpaid <- isVoucherUnpaid conn voucher - existingFingerprint <- listToMaybe <$> getVoucherFingerprint conn voucher + existingFingerprint <- getVoucherFingerprint conn voucher let insertFn = insertVoucherAndFingerprint conn redeemVoucherHelper (unpaid, existingFingerprint) voucher fingerprint insertFn @@ -136,9 +136,9 @@ isVoucherUnpaid :: Sqlite.Connection -> Voucher -> IO Bool isVoucherUnpaid dbConn voucher = null <$> (Sqlite.query dbConn "SELECT 1 FROM vouchers WHERE vouchers.name = ? LIMIT 1" (Sqlite.Only voucher) :: IO [Sqlite.Only Int]) -getVoucherFingerprint :: Sqlite.Connection -> Voucher -> IO [Fingerprint] +getVoucherFingerprint :: Sqlite.Connection -> Voucher -> IO (Maybe Fingerprint) getVoucherFingerprint dbConn voucher = - Sqlite.query dbConn "SELECT redeemed.fingerprint FROM vouchers INNER JOIN redeemed ON vouchers.id = redeemed.voucher_id AND vouchers.name = ?" (Sqlite.Only voucher) + listToMaybe <$> Sqlite.query dbConn "SELECT redeemed.fingerprint FROM vouchers INNER JOIN redeemed ON vouchers.id = redeemed.voucher_id AND vouchers.name = ?" (Sqlite.Only voucher) insertVoucher :: Sqlite.Connection -> Voucher -> IO () insertVoucher dbConn voucher =