Skip to content
Snippets Groups Projects
Commit 1af7ff1c authored by Ramakrishnan Muthukrishnan's avatar Ramakrishnan Muthukrishnan
Browse files

use the `isVoucherUnpaid` function instead of the logic with Sets

parent 8fe56051
Branches
No related tags found
1 merge request!26Initial implementation of Persistence using sqlite
...@@ -117,7 +117,7 @@ instance VoucherDatabase Sqlite.Connection where ...@@ -117,7 +117,7 @@ instance VoucherDatabase Sqlite.Connection where
undefined undefined
-- redeemVoucher :: Sqlite.Connection -> Voucher -> Fingerprint -> IO (Either RedeemError ()) -- redeemVoucher :: Sqlite.Connection -> Voucher -> Fingerprint -> IO (Either RedeemError ())
redeemVoucher dbConn voucher fingerprint = do redeemVoucher dbConn voucher fingerprint = do
unpaid <- Set.notMember voucher <$> (Set.fromList <$> getUnredeemedVouchers dbConn) unpaid <- isVoucherUnpaid dbConn voucher
existingFingerprint <- getVoucherFingerprint dbConn voucher existingFingerprint <- getVoucherFingerprint dbConn voucher
case (unpaid, existingFingerprint) of case (unpaid, existingFingerprint) of
(True, _) -> (True, _) ->
...@@ -135,11 +135,7 @@ instance FromRow Fingerprint where ...@@ -135,11 +135,7 @@ instance FromRow Fingerprint where
fromRow = Sqlite.field fromRow = Sqlite.field
-- | All paid but not redeemed vouchers -- | Checks if the given `voucher` is unpaid.
getUnredeemedVouchers :: Sqlite.Connection -> IO [Voucher]
getUnredeemedVouchers dbConn =
Sqlite.query_ dbConn "SELECT DISTINCT name FROM vouchers INNER JOIN redeemed WHERE vouchers.id != redeemed.voucher_id"
isVoucherUnpaid :: Sqlite.Connection -> Voucher -> IO Bool isVoucherUnpaid :: Sqlite.Connection -> Voucher -> IO Bool
isVoucherUnpaid dbConn voucher = do isVoucherUnpaid dbConn voucher = do
results <- Sqlite.query dbConn "SELECT DISTINCT name FROM vouchers INNER JOIN redeemed WHERE vouchers.id != redeemed.voucher_id AND vouchers.name = ?" (Sqlite.Only voucher) :: IO [Voucher] results <- Sqlite.query dbConn "SELECT DISTINCT name FROM vouchers INNER JOIN redeemed WHERE vouchers.id != redeemed.voucher_id AND vouchers.name = ?" (Sqlite.Only voucher) :: IO [Voucher]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment