From 0e90642024e83c790e5d8bce2d814cc6944972d9 Mon Sep 17 00:00:00 2001
From: Ramakrishnan Muthukrishnan <ram@leastauthority.com>
Date: Thu, 24 Oct 2019 15:29:41 +0530
Subject: [PATCH] getVoucherFingerprint: return a Maybe value instead of a list

---
 src/PaymentServer/Persistence.hs | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/PaymentServer/Persistence.hs b/src/PaymentServer/Persistence.hs
index 1d9f025..3115e77 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 =
-- 
GitLab