Skip to content

Commit bf9a3c0

Browse files
committed
updated messages example
1 parent 19b6a89 commit bf9a3c0

4 files changed

Lines changed: 15 additions & 7 deletions

File tree

examples/Common.hs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,12 @@ bindOptions = (def :: PostgresBindOptions) {
2626
, pboSetOfReturnType = \case
2727
"t_user" -> AsRow
2828
_ -> AsField
29-
}
29+
, pboIsNullable = isNullable
30+
} where
31+
isNullable :: String -> String -> Bool
32+
isNullable "get_new_messages" "contents" = True
33+
isNullable _ _ = False
34+
3035

3136
withDB :: ConnectInfo -> (Connection -> IO a) -> IO a
3237
withDB connectInfo = bracket (connect connectInfo) close

examples/ExMessages.hs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
{-# LANGUAGE OverloadedStrings #-}
33
{-# LANGUAGE TemplateHaskell #-}
44
{-# LANGUAGE TypeFamilies #-}
5+
{-# LANGUAGE DeriveGeneric #-}
56

67
-- Legend:
78
-- API for reading and sending messages.
@@ -25,7 +26,7 @@ import Prelude hiding (getContents)
2526
import Test.Hspec (Spec, describe, it, shouldBe)
2627

2728
concat <$> mapM (bindFunction bindOptions) [
28-
"function send_message(p_receiver varchar, p_contents varchar) returns bigint"
29+
"function send_message(p_receiver varchar, p_contents varchar default null) returns bigint"
2930
, "function get_new_messages(p_receiver varchar) returns table (message_id bigint, sender varchar, contents varchar)"
3031
, "function mark_as_read(p_receiver varchar, p_message_id bigint) returns void"
3132
]
@@ -43,9 +44,9 @@ specMessages conn = describe "Messages example" $ it "works" $ mapM_ runTests [
4344
runTests fn = do
4445
include conn fn
4546

46-
msg1 <- sqlSendMessage conn "mr_foo" "hello!"
47-
msg2 <- sqlSendMessage conn "mr_bar" "hello!"
48-
msg3 <- sqlSendMessage conn "mr_bar" "hello again!"
47+
msg1 <- sqlSendMessage conn "mr_foo" (Just "hello!")
48+
msg2 <- sqlSendMessage conn "mr_bar" (Just "hello!")
49+
msg3 <- sqlSendMessage conn "mr_bar" (Just "hello again!")
4950

5051
sqlGetNewMessages conn "mr_foo" >>= shouldBe [msg1] . map getId
5152
sqlGetNewMessages conn "mr_bar" >>= shouldBe [msg2, msg3] . map getId
@@ -56,3 +57,5 @@ specMessages conn = describe "Messages example" $ it "works" $ mapM_ runTests [
5657

5758
sqlMarkAsRead conn "mr_foo" msg1
5859
sqlMarkAsRead conn "mr_bar" msg3
60+
61+
sqlSendMessage conn "mr_foo" Nothing

examples/sql/messages-patch-2.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ alter table messages
2727
, drop column receiver;
2828

2929

30-
create or replace function send_message(p_receiver varchar, p_contents varchar) returns bigint as
30+
create or replace function send_message(p_receiver varchar, p_contents varchar default null) returns bigint as
3131
$send_message$
3232
insert into messages(message_id, sender_id, receiver_id, contents)
3333
values (

examples/sql/messages.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ create table messages (
88
, is_read boolean default false
99
);
1010

11-
create function send_message(p_receiver varchar, p_contents varchar) returns bigint as
11+
create function send_message(p_receiver varchar, p_contents varchar default null) returns bigint as
1212
$send_message$
1313
insert into messages(message_id, sender, receiver, contents)
1414
values (

0 commit comments

Comments
 (0)