aboutsummaryrefslogtreecommitdiff
path: root/server/src/Persistence/Payment.hs
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/Persistence/Payment.hs')
-rw-r--r--server/src/Persistence/Payment.hs25
1 files changed, 24 insertions, 1 deletions
diff --git a/server/src/Persistence/Payment.hs b/server/src/Persistence/Payment.hs
index eb238d4..e01753f 100644
--- a/server/src/Persistence/Payment.hs
+++ b/server/src/Persistence/Payment.hs
@@ -1,8 +1,9 @@
module Persistence.Payment
- ( Payment(..)
+ ( count
, find
, firstPunctualDay
, listActive
+ , listActivePage
, listPunctual
, listActiveMonthlyOrderedByName
, create
@@ -54,6 +55,18 @@ instance ToRow InsertRow where
, toField (_payment_createdAt p)
]
+data Count = Count Int
+
+instance FromRow Count where
+ fromRow = Count <$> SQLite.field
+
+count :: Query Int
+count =
+ Query (\conn ->
+ (\[Count n] -> n) <$>
+ SQLite.query_ conn "SELECT COUNT(*) FROM payment WHERE deleted_at IS NULL"
+ )
+
find :: PaymentId -> Query (Maybe Payment)
find paymentId =
Query (\conn -> do
@@ -83,6 +96,16 @@ listActive =
SQLite.query_ conn "SELECT * FROM payment WHERE deleted_at IS NULL"
)
+listActivePage :: Int -> Int -> Query [Payment]
+listActivePage page perPage =
+ Query (\conn ->
+ map (\(Row p) -> p) <$>
+ SQLite.query
+ conn
+ "SELECT * FROM payment WHERE deleted_at IS NULL ORDER BY date DESC LIMIT ? OFFSET ?"
+ (perPage, (page - 1) * perPage)
+ )
+
listPunctual :: Query [Payment]
listPunctual =
Query (\conn -> do