@@ -40,11 +40,10 @@ sendSync conn = sendEncode conn $ encodeClientMessage Sync
40
40
sendSimpleQuery :: ConnectionCommon -> B. ByteString -> IO (Either Error () )
41
41
sendSimpleQuery conn q = do
42
42
sendMessage (connRawConnection conn) $ SimpleQuery (StatementSQL q)
43
- checkErrors <$> collectUntilReadyForQuery conn
43
+ ( checkErrors =<< ) <$> collectUntilReadyForQuery conn
44
44
where
45
- checkErrors = either
46
- (Left . ReceiverError )
47
- (maybe (Right () ) (Left . PostgresError ) . findFirstError)
45
+ checkErrors =
46
+ maybe (Right () ) (Left . PostgresError ) . findFirstError
48
47
49
48
waitReadyForQuery :: Connection -> IO (Either Error () )
50
49
waitReadyForQuery conn =
@@ -56,8 +55,8 @@ waitReadyForQuery conn =
56
55
-- We should wait for ReadyForQuery anyway.
57
56
waitReadyForQuery conn
58
57
pure . Left $ PostgresError e
59
- -- TODO
60
- ( DataMessage _) -> error " incorrect usage waitReadyForQuery "
58
+ ( DataMessage _) -> throwIncorrectUsage
59
+ " Expected ReadyForQuery, but got DataRow message "
61
60
DataReady -> pure $ Right ()
62
61
63
62
-- | Public
@@ -69,8 +68,8 @@ readNextData conn =
69
68
handleDataMessage msg = case msg of
70
69
(DataError e) -> pure . Left $ PostgresError e
71
70
(DataMessage rows) -> pure . Right $ rows
72
- -- TODO
73
- DataReady -> error " incorrect usage readNextData "
71
+ DataReady -> throwIncorrectUsage
72
+ " Expected DataRow message, but got ReadyForQuery "
74
73
75
74
-- Helper
76
75
sendBatchEndBy :: ClientMessage -> Connection -> [Query ] -> IO ()
@@ -115,7 +114,7 @@ describeStatement conn stmt = do
115
114
encodeClientMessage (Parse sname (StatementSQL stmt) V. empty)
116
115
<> encodeClientMessage (DescribeStatement sname)
117
116
<> encodeClientMessage Sync
118
- msgs <- first ReceiverError <$> collectUntilReadyForQuery conn
117
+ msgs <- collectUntilReadyForQuery conn
119
118
either (pure . Left ) parseMessages msgs
120
119
where
121
120
sname = StatementName " "
@@ -132,11 +131,11 @@ describeStatement conn stmt = do
132
131
-- Collects all messages preceding `ReadyForQuery`
133
132
collectUntilReadyForQuery
134
133
:: ConnectionCommon
135
- -> IO (Either ReceiverException [ServerMessage ])
134
+ -> IO (Either Error [ServerMessage ])
136
135
collectUntilReadyForQuery conn = do
137
136
msg <- readChan $ connOutChan conn
138
137
case msg of
139
- Left e -> pure $ Left e
138
+ Left e -> pure $ Left $ ReceiverError e
140
139
Right ReadyForQuery {} -> pure $ Right []
141
140
Right m -> fmap (m: ) <$> collectUntilReadyForQuery conn
142
141
0 commit comments