Skip to content

Commit 5308dc5

Browse files
alexbiehlclaude
andcommitted
Move Insert and Parser modules under Internal namespace
Re-export insert API from Database.ClickHouse so consumers no longer need to import Database.ClickHouse.Insert directly. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 4ef04ee commit 5308dc5

7 files changed

Lines changed: 47 additions & 49 deletions

File tree

clickhouse-client.cabal

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,11 @@ library
4949
exposed-modules:
5050
Database.ClickHouse
5151
Database.ClickHouse.Connection
52-
Database.ClickHouse.Insert
52+
Database.ClickHouse.Internal.Insert
53+
Database.ClickHouse.Internal.Parser
5354
Database.ClickHouse.Params
5455
Database.ClickHouse.Result
5556
Database.ClickHouse.Value
56-
Database.ClickHouse.Parser
5757
Database.ClickHouse.Stream
5858

5959
default-extensions:

examples/SimpleInsert.hs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ module Main (main) where
44

55
import Data.Functor.Contravariant (contramap)
66
import Database.ClickHouse
7-
import Database.ClickHouse.Insert qualified as Insert
87
import Database.ClickHouse.Value qualified as Value
98

109
main :: IO ()
@@ -23,6 +22,6 @@ main = do
2322
contramap fst Value.uint32
2423
<> contramap snd Value.string
2524

26-
ins = Insert.insert "events" ["id", "name"] rowEncoder mempty
25+
ins = insert "events" ["id", "name"] rowEncoder mempty
2726

2827
runInsert connection ins () [(1, "signup"), (2, "purchase")]

src/Database/ClickHouse.hs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -76,15 +76,15 @@
7676
--
7777
-- = Inserting data
7878
--
79-
-- Build an 'Database.ClickHouse.Insert.Insert' describing the target table,
79+
-- Build an 'Database.ClickHouse.Internal.Insert.Insert' describing the target table,
8080
-- columns, and row encoder, then run it with 'runInsert'.
8181
--
8282
-- == Inserting a single-column row
8383
--
8484
-- @
8585
-- import "Database.ClickHouse.Value" qualified as Value
8686
--
87-
-- let ins = 'Database.ClickHouse.Insert.insert' \"my_table\" [\"val\"] Value.uint32 'mempty'
87+
-- let ins = 'insert' \"my_table\" [\"val\"] Value.uint32 'mempty'
8888
-- 'runInsert' connection ins () [1, 2, 3 :: Word32]
8989
-- @
9090
--
@@ -100,7 +100,7 @@
100100
-- 'Data.Functor.Contravariant.contramap' fst Value.int64
101101
-- \<\> 'Data.Functor.Contravariant.contramap' snd Value.string
102102
--
103-
-- let ins = 'Database.ClickHouse.Insert.insert' \"events\" [\"id\", \"name\"] encoder 'mempty'
103+
-- let ins = 'insert' \"events\" [\"id\", \"name\"] encoder 'mempty'
104104
-- 'runInsert' connection ins () [(1, \"click\"), (2, \"view\")]
105105
-- @
106106
--
@@ -111,7 +111,7 @@
111111
-- 'Data.Functor.Contravariant.contramap' fst Value.string
112112
-- \<\> 'Data.Functor.Contravariant.contramap' snd (Value.nullable Value.uint32)
113113
--
114-
-- let ins = 'Database.ClickHouse.Insert.insert' \"users\" [\"name\", \"age\"] encoder 'mempty'
114+
-- let ins = 'insert' \"users\" [\"name\", \"age\"] encoder 'mempty'
115115
-- 'runInsert' connection ins () [(\"alice\", Just 30), (\"bob\", Nothing)]
116116
-- @
117117
module Database.ClickHouse
@@ -134,9 +134,9 @@ module Database.ClickHouse
134134
Database.ClickHouse.Result.manyRows,
135135

136136
-- * Insert
137-
Database.ClickHouse.Insert.Insert,
138-
Database.ClickHouse.Insert.insert,
139-
Database.ClickHouse.Insert.modifySettings,
137+
Database.ClickHouse.Internal.Insert.Insert,
138+
Database.ClickHouse.Internal.Insert.insert,
139+
Database.ClickHouse.Internal.Insert.modifySettings,
140140

141141
-- * Streaming
142142
Database.ClickHouse.Stream.ToStreamIO (..),
@@ -160,31 +160,31 @@ import Database.ClickHouse.Connection
160160
ConnectionOptions (..),
161161
newConnection,
162162
)
163-
import Database.ClickHouse.Insert qualified
163+
import Database.ClickHouse.Internal.Insert qualified
164164
import Database.ClickHouse.Params qualified
165165
import Database.ClickHouse.Result qualified
166166
import Database.ClickHouse.Stream (Stream (..), ToStreamIO (..))
167167
import Database.ClickHouse.Value qualified
168168
import Network.HTTP.Client qualified
169169
import Network.HTTP.Types qualified
170170

171-
-- | Execute an 'Database.ClickHouse.Insert.Insert' statement, streaming rows
171+
-- | Execute an 'Database.ClickHouse.Internal.Insert.Insert' statement, streaming rows
172172
-- into ClickHouse.
173173
--
174174
-- The @values@ argument can be any type with a 'ToStreamIO' instance (e.g. a
175175
-- list or a 'Database.ClickHouse.Stream.Stream').
176176
runInsert ::
177177
(ToStreamIO value values) =>
178178
Connection ->
179-
Database.ClickHouse.Insert.Insert input value ->
179+
Database.ClickHouse.Internal.Insert.Insert input value ->
180180
input ->
181181
values ->
182182
IO ()
183183
runInsert connection insert paramsInput inputs = do
184184
let query =
185185
Data.Text.Lazy.toStrict
186186
( Data.Text.Lazy.Builder.toLazyText
187-
(Database.ClickHouse.Insert.renderInsert insert)
187+
(Database.ClickHouse.Internal.Insert.renderInsert insert)
188188
)
189189

190190
stream = toStreamIO inputs

src/Database/ClickHouse/Insert.hs renamed to src/Database/ClickHouse/Internal/Insert.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{-# LANGUAGE OverloadedStrings #-}
22
{-# LANGUAGE RecordWildCards #-}
33

4-
module Database.ClickHouse.Insert
4+
module Database.ClickHouse.Internal.Insert
55
( Insert (..),
66
insert,
77
modifySettings,

src/Database/ClickHouse/Parser.hs renamed to src/Database/ClickHouse/Internal/Parser.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{-# LANGUAGE BangPatterns #-}
22
{-# LANGUAGE UnboxedTuples #-}
33

4-
module Database.ClickHouse.Parser
4+
module Database.ClickHouse.Internal.Parser
55
( Parser (..),
66
ParseResult (..),
77
runParser,

src/Database/ClickHouse/Result.hs

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ import Data.Vector.Mutable qualified
7575
import Data.Vector.Storable qualified
7676
import Data.Vector.Unboxed qualified
7777
import Data.Word (Word16, Word32, Word64, Word8)
78-
import Database.ClickHouse.Parser qualified
78+
import Database.ClickHouse.Internal.Parser qualified
7979
import Database.ClickHouse.Stream qualified
8080
import GHC.TypeLits qualified
8181
import Network.HTTP.Client qualified
@@ -105,7 +105,7 @@ defaultFormat =
105105
"RowBinary"
106106

107107
-- | @`Row a` deserializes an @a@ from a ClickHouse query result.
108-
data Row a = Row !Int (Database.ClickHouse.Parser.Parser a)
108+
data Row a = Row !Int (Database.ClickHouse.Internal.Parser.Parser a)
109109
deriving stock (Functor)
110110

111111
instance Applicative Row where
@@ -122,58 +122,58 @@ column (Column get) = Row 1 get
122122

123123
nullable :: Column a -> Column (Maybe a)
124124
nullable (Column get) = Column $ do
125-
w <- Database.ClickHouse.Parser.word8
125+
w <- Database.ClickHouse.Internal.Parser.word8
126126
if w /= 0
127127
then pure Nothing
128128
else fmap Just get
129129

130-
newtype Column a = Column (Database.ClickHouse.Parser.Parser a)
130+
newtype Column a = Column (Database.ClickHouse.Internal.Parser.Parser a)
131131
deriving newtype (Functor, Applicative)
132132

133133
int8 :: Column Int8
134134
int8 =
135-
Column Database.ClickHouse.Parser.int8
135+
Column Database.ClickHouse.Internal.Parser.int8
136136
{-# INLINE int8 #-}
137137

138138
uint8 :: Column Word8
139139
uint8 =
140-
Column Database.ClickHouse.Parser.word8
140+
Column Database.ClickHouse.Internal.Parser.word8
141141
{-# INLINE uint8 #-}
142142

143143
int16 :: Column Int16
144144
int16 =
145-
Column Database.ClickHouse.Parser.int16le
145+
Column Database.ClickHouse.Internal.Parser.int16le
146146
{-# INLINE int16 #-}
147147

148148
uint16 :: Column Word16
149149
uint16 =
150-
Column Database.ClickHouse.Parser.word16le
150+
Column Database.ClickHouse.Internal.Parser.word16le
151151
{-# INLINE uint16 #-}
152152

153153
int32 :: Column Int32
154154
int32 =
155-
Column Database.ClickHouse.Parser.int32le
155+
Column Database.ClickHouse.Internal.Parser.int32le
156156
{-# INLINE int32 #-}
157157

158158
uint32 :: Column Word32
159159
uint32 =
160-
Column Database.ClickHouse.Parser.word32le
160+
Column Database.ClickHouse.Internal.Parser.word32le
161161
{-# INLINE uint32 #-}
162162

163163
int64 :: Column Int64
164164
int64 =
165-
Column Database.ClickHouse.Parser.int64le
165+
Column Database.ClickHouse.Internal.Parser.int64le
166166
{-# INLINE int64 #-}
167167

168168
uint64 :: Column Word64
169169
uint64 =
170-
Column Database.ClickHouse.Parser.word64le
170+
Column Database.ClickHouse.Internal.Parser.word64le
171171
{-# INLINE uint64 #-}
172172

173173
string :: Column Text
174174
string = Column $ do
175-
len <- Database.ClickHouse.Parser.uLEB128
176-
Database.ClickHouse.Parser.text (fromIntegral len)
175+
len <- Database.ClickHouse.Internal.Parser.uLEB128
176+
Database.ClickHouse.Internal.Parser.text (fromIntegral len)
177177
{-# INLINE string #-}
178178

179179
newtype FixedString (n :: GHC.TypeLits.Nat) = FixedString Data.ByteString.ByteString
@@ -182,7 +182,7 @@ fixedString :: forall (n :: GHC.TypeLits.Nat). (GHC.TypeLits.KnownNat n) => Colu
182182
fixedString =
183183
Column $
184184
fmap FixedString $
185-
Database.ClickHouse.Parser.byteString $
185+
Database.ClickHouse.Internal.Parser.byteString $
186186
fromIntegral (GHC.TypeLits.natVal (Proxy :: Proxy n))
187187
{-# INLINE fixedString #-}
188188

@@ -191,40 +191,40 @@ date =
191191
Column $
192192
-- Data.Time.Clock.System.systemEpochDay is the day of the epoch of SystemTime, 1970-01-01
193193
(\days -> fromIntegral days `Data.Time.Calendar.addDays` Data.Time.Clock.System.systemEpochDay)
194-
<$!> Database.ClickHouse.Parser.int16le
194+
<$!> Database.ClickHouse.Internal.Parser.int16le
195195
{-# INLINE date #-}
196196

197197
date32 :: Column Day
198198
date32 =
199199
Column $
200200
-- Data.Time.Clock.System.systemEpochDay is the day of the epoch of SystemTime, 1970-01-01
201201
(\days -> fromIntegral days `Data.Time.Calendar.addDays` Data.Time.Clock.System.systemEpochDay)
202-
<$!> Database.ClickHouse.Parser.int32le
202+
<$!> Database.ClickHouse.Internal.Parser.int32le
203203
{-# INLINE date32 #-}
204204

205205
float32 :: Column Float
206206
float32 =
207-
Column Database.ClickHouse.Parser.float32le
207+
Column Database.ClickHouse.Internal.Parser.float32le
208208
{-# INLINE float32 #-}
209209

210210
float64 :: Column Double
211211
float64 =
212-
Column Database.ClickHouse.Parser.float64le
212+
Column Database.ClickHouse.Internal.Parser.float64le
213213
{-# INLINE float64 #-}
214214

215215
bool :: Column Bool
216216
bool =
217217
Column $
218218
(\x -> x > 0)
219-
<$!> Database.ClickHouse.Parser.word8
219+
<$!> Database.ClickHouse.Internal.Parser.word8
220220
{-# INLINE bool #-}
221221

222222
uuid :: Column Data.UUID.UUID
223223
uuid =
224224
Column $
225225
Data.UUID.fromWords64
226-
<$> Database.ClickHouse.Parser.word64le
227-
<*> Database.ClickHouse.Parser.word64le
226+
<$> Database.ClickHouse.Internal.Parser.word64le
227+
<*> Database.ClickHouse.Internal.Parser.word64le
228228
{-# INLINE uuid #-}
229229

230230
dateTime :: Column Data.Time.UTCTime
@@ -234,7 +234,7 @@ dateTime = dateTime32
234234
dateTime32 :: Column Data.Time.UTCTime
235235
dateTime32 =
236236
Column $ do
237-
!time <- Database.ClickHouse.Parser.int32le
237+
!time <- Database.ClickHouse.Internal.Parser.int32le
238238
let utcTime@Data.Time.UTCTime {utctDayTime = !_x, utctDay = !_y} =
239239
Data.Time.Clock.POSIX.posixSecondsToUTCTime (fromIntegral time)
240240
pure utcTime
@@ -243,12 +243,12 @@ dateTime32 =
243243
dateTime64 :: Column Data.Time.UTCTime
244244
dateTime64 = Column $ do
245245
(\time -> Data.Time.Clock.POSIX.posixSecondsToUTCTime (fromIntegral time / 1000))
246-
<$!> Database.ClickHouse.Parser.int64le
246+
<$!> Database.ClickHouse.Internal.Parser.int64le
247247
{-# INLINE dateTime64 #-}
248248

249249
map :: (Hashable a) => Column a -> Column b -> Column (HashMap a b)
250250
map (Column getKey) (Column getValue) = Column $ do
251-
len <- Database.ClickHouse.Parser.uLEB128
251+
len <- Database.ClickHouse.Internal.Parser.uLEB128
252252
entries len mempty
253253
where
254254
entries 0 !acc =
@@ -262,7 +262,7 @@ map (Column getKey) (Column getValue) = Column $ do
262262
array :: (Data.Vector.Generic.Vector v a) => Column a -> Column (v a)
263263
array (Column elem) = Column $ do
264264
len <-
265-
Database.ClickHouse.Parser.uLEB128
265+
Database.ClickHouse.Internal.Parser.uLEB128
266266
xs <-
267267
liftIO $ Data.Vector.Generic.Mutable.new (fromIntegral len)
268268
go xs (fromIntegral len) 0
@@ -398,7 +398,7 @@ data Fold input output where
398398
runDecoder :: IO Data.ByteString.ByteString -> Row a -> Fold a b -> IO b
399399
runDecoder source (Row _ parser) (Fold start step stop) = do
400400
state <- start
401-
let stream = Database.ClickHouse.Parser.parseFromSource source parser
401+
let stream = Database.ClickHouse.Internal.Parser.parseFromSource source parser
402402
Database.ClickHouse.Stream.foldStream
403403
( \state element ->
404404
case element of

test/Main.hs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import Data.UUID qualified
1515
import Data.Vector qualified
1616
import Data.Word (Word16, Word32, Word64, Word8)
1717
import Database.ClickHouse qualified
18-
import Database.ClickHouse.Insert qualified
1918
import Database.ClickHouse.Params qualified
2019
import Database.ClickHouse.Result qualified
2120
import Database.ClickHouse.Value qualified
@@ -835,7 +834,7 @@ insertAndReadOne connection tableName columnDef valueEncoder resultDecoder row =
835834
()
836835

837836
-- Insert single row
838-
let ins = Database.ClickHouse.Insert.insert tableName ["val"] valueEncoder mempty
837+
let ins = Database.ClickHouse.insert tableName ["val"] valueEncoder mempty
839838
Database.ClickHouse.runInsert
840839
connection
841840
ins
@@ -1127,7 +1126,7 @@ insertAndReadMany connection tableName columnDef valueEncoder resultDecoder rows
11271126
()
11281127

11291128
-- Insert all rows
1130-
let ins = Database.ClickHouse.Insert.insert tableName ["val"] valueEncoder mempty
1129+
let ins = Database.ClickHouse.insert tableName ["val"] valueEncoder mempty
11311130
Database.ClickHouse.runInsert
11321131
connection
11331132
ins
@@ -1254,7 +1253,7 @@ stressTests newConnection =
12541253
<> contramap (\(_, b, _) -> b) Database.ClickHouse.Value.string
12551254
<> contramap (\(_, _, c) -> c) (Database.ClickHouse.Value.nullable Database.ClickHouse.Value.uint32)
12561255

1257-
let ins = Database.ClickHouse.Insert.insert "stress_multi" ["a", "b", "c"] valueEncoder mempty
1256+
let ins = Database.ClickHouse.insert "stress_multi" ["a", "b", "c"] valueEncoder mempty
12581257
Database.ClickHouse.runInsert
12591258
connection
12601259
ins
@@ -1527,7 +1526,7 @@ wideTableSmoketest newConnection =
15271526
"col_array_tuple"
15281527
]
15291528

1530-
let ins = Database.ClickHouse.Insert.insert "wide_smoketest" columnNames valueEncoder mempty
1529+
let ins = Database.ClickHouse.insert "wide_smoketest" columnNames valueEncoder mempty
15311530

15321531
let testUUID = case Data.UUID.fromString "a1b2c3d4-e5f6-7890-abcd-ef1234567890" of
15331532
Just u -> u

0 commit comments

Comments
 (0)