diff options
author | Joris | 2019-11-06 19:44:15 +0100 |
---|---|---|
committer | Joris | 2019-11-06 19:44:15 +0100 |
commit | f4f24158a46d8c0975f1b8813bbdbbeebad8c108 (patch) | |
tree | d0aeaa3a920caaff7408a1f6cd12b45f21cb2620 /server/src/Persistence/Payment.hs | |
parent | 58f6c4e25f5f20f1b608242c83786e2f13947804 (diff) | |
download | budget-f4f24158a46d8c0975f1b8813bbdbbeebad8c108.tar.gz budget-f4f24158a46d8c0975f1b8813bbdbbeebad8c108.tar.bz2 budget-f4f24158a46d8c0975f1b8813bbdbbeebad8c108.zip |
Show the payment table with server side paging
Diffstat (limited to 'server/src/Persistence/Payment.hs')
-rw-r--r-- | server/src/Persistence/Payment.hs | 25 |
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 |