aboutsummaryrefslogtreecommitdiff
path: root/server/src/Persistence/Income.hs
diff options
context:
space:
mode:
authorJoris2019-10-27 20:26:29 +0100
committerJoris2019-10-27 20:26:29 +0100
commitb97ad942495352c3fc1e0c820cfba82a9693ac7a (patch)
treef554831888929e2eff5e1fe478f92758637d37cf /server/src/Persistence/Income.hs
parent8ef4d96644bce59bbb736af6359e644743e5610a (diff)
downloadbudget-b97ad942495352c3fc1e0c820cfba82a9693ac7a.tar.gz
budget-b97ad942495352c3fc1e0c820cfba82a9693ac7a.tar.bz2
budget-b97ad942495352c3fc1e0c820cfba82a9693ac7a.zip
WIP Set up server side paging for incomes
Diffstat (limited to 'server/src/Persistence/Income.hs')
-rw-r--r--server/src/Persistence/Income.hs26
1 files changed, 25 insertions, 1 deletions
diff --git a/server/src/Persistence/Income.hs b/server/src/Persistence/Income.hs
index 2b9bf0c..de55a18 100644
--- a/server/src/Persistence/Income.hs
+++ b/server/src/Persistence/Income.hs
@@ -1,5 +1,7 @@
module Persistence.Income
- ( list
+ ( count
+ , list
+ , listv2
, create
, edit
, delete
@@ -29,6 +31,18 @@ instance FromRow Row where
SQLite.field <*>
SQLite.field)
+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 income WHERE deleted_at IS NULL"
+ )
+
list :: Query [Income]
list =
Query (\conn ->
@@ -36,6 +50,16 @@ list =
SQLite.query_ conn "SELECT * FROM income WHERE deleted_at IS NULL"
)
+listv2 :: Int -> Int -> Query [Income]
+listv2 page perPage =
+ Query (\conn ->
+ map (\(Row i) -> i) <$>
+ SQLite.query
+ conn
+ "SELECT * FROM income WHERE deleted_at IS NULL ORDER BY date DESC LIMIT ? OFFSET ?"
+ (perPage, (page - 1) * perPage)
+ )
+
create :: UserId -> Day -> Int -> Query Income
create userId date amount =
Query (\conn -> do