on master help sign in
Minor style and readability updates
eee4731David Christiansen
contribs/lib/SQLite3/Sqlite3.idr+157−152
@@ -22,7 +22,7 @@ data DBVal = DBInt Int
22 | DBText String
22 | DBText String
23 | DBFloat Float
23 | DBFloat Float
24 | DBNull
24 | DBNull
25−
25+
26-- Database pointer
26-- Database pointer
27data DBPointer = MkDBPointer Ptr
27data DBPointer = MkDBPointer Ptr
28-- Table pointer
28-- Table pointer
@@ -42,19 +42,16 @@ data DB a = MkDB (IO (Either String a))
42
42
43instance Functor DB where
43instance Functor DB where
44 fmap f (MkDB action) = MkDB (do res <- action
44 fmap f (MkDB action) = MkDB (do res <- action
45− case res of
45+ return (fmap f res))
46− Left x => return (Left x)
46+
47− Right x => return (Right (f x)))
48
47
49instance Applicative DB where
48instance Applicative DB where
50 pure = MkDB . return . Right
49 pure = MkDB . return . Right
51− (MkDB f) <$> (MkDB x) = MkDB (do f' <- f -- FIXME make pretty
50+ (MkDB f) <$> (MkDB x) = MkDB (do f' <- f
52 case f' of
51 case f' of
53 Left err => return (Left err)
52 Left err => return (Left err)
54− Right op => do x' <- x
53+ Right op => x >>= (return . fmap op))
55− case x' of
54+
56− Left err => return (Left err)
57− Right v => return (Right (op v)))
58
55
59instance Monad DB where
56instance Monad DB where
60 (MkDB l) >>= k = MkDB (do c <- l
57 (MkDB l) >>= k = MkDB (do c <- l
@@ -79,14 +76,14 @@ runDB : DB a -> IO a
79runDB (MkDB f) = do f' <- f
76runDB (MkDB f) = do f' <- f
80 case f' of
77 case f' of
81 Right v => return v
78 Right v => return v
82− Left str => ioError str
79+ Left str => ioError str
83−
80+
84-----------------------------------------------------------------------------
81-----------------------------------------------------------------------------
85-- | Opens an SQLite database file as specified by the String name argument.
82-- | Opens an SQLite database file as specified by the String name argument.
86-----------------------------------------------------------------------------
83-----------------------------------------------------------------------------
87−
84+
88open_db : String -> DB DBPointer
85open_db : String -> DB DBPointer
89−open_db name = do x <- liftIO(mkForeign (FFun "sqlite3_open_idr" [FString] FPtr) name)
86+open_db name = do x <- liftIO (mkForeign (FFun "sqlite3_open_idr" [FString] FPtr) name)
90 return (MkDBPointer x)
87 return (MkDBPointer x)
91
88
92-----------------------------------------------------------------------------
89-----------------------------------------------------------------------------
@@ -94,38 +91,38 @@ open_db name = do x <- liftIO(mkForeign (FFun "sqlite3_open_idr" [FString] FPtr)
94-----------------------------------------------------------------------------
91-----------------------------------------------------------------------------
95
92
96close_db : DBPointer -> DB Int
93close_db : DBPointer -> DB Int
97−close_db (MkDBPointer pointer) = liftIO (mkForeign (FFun "sqlite3_close_idr" [FPtr] FInt)pointer)
94+close_db (MkDBPointer pointer) = liftIO (mkForeign (FFun "sqlite3_close_idr" [FPtr] FInt) pointer)
98
95
99-----------------------------------------------------------------------------
96-----------------------------------------------------------------------------
100-- | Wrapper around prepare, step and finalize.
97-- | Wrapper around prepare, step and finalize.
101-----------------------------------------------------------------------------
98-----------------------------------------------------------------------------
102−
99+
103exec_db : DBPointer -> String -> DB Int
100exec_db : DBPointer -> String -> DB Int
104−exec_db (MkDBPointer pointer) stmt = do
101+exec_db (MkDBPointer pointer) stmt = do
105− x <- liftIO(mkForeign (FFun "sqlite3_exec_idr" [FPtr, FString] FInt)pointer stmt)
102+ x <- liftIO (mkForeign (FFun "sqlite3_exec_idr" [FPtr, FString] FInt) pointer stmt)
106 if (x == 1)
103 if (x == 1)
107− then fail "Could not execute."
104+ then fail "Could not execute."
108− else return x
105+ else return x
109
106
110-----------------------------------------------------------------------------
107-----------------------------------------------------------------------------
111-- | Executes a prepared query. Use of this version is recommended.
108-- | Executes a prepared query. Use of this version is recommended.
112-----------------------------------------------------------------------------
109-----------------------------------------------------------------------------
113
110
114exec_db_v2 : StmtPtr -> DB Int
111exec_db_v2 : StmtPtr -> DB Int
115−exec_db_v2 (MkStmtPtr pointer) = do
112+exec_db_v2 (MkStmtPtr pointer) = do
116 x <- liftIO (mkForeign (FFun "exec_db" [FPtr] FInt) pointer)
113 x <- liftIO (mkForeign (FFun "exec_db" [FPtr] FInt) pointer)
117 if (x == 21)
114 if (x == 21)
118− then fail "No data returned."
115+ then fail "No data returned."
119− else return x
116+ else return x
120−
117+
121-----------------------------------------------------------------------------
118-----------------------------------------------------------------------------
122-- | Returns the error stored in the buffer by exec_db function.
119-- | Returns the error stored in the buffer by exec_db function.
123-- This function can only be used with exec_db and get_table.
120-- This function can only be used with exec_db and get_table.
124-- Only these functions store any occured error in the buffer array.
121-- Only these functions store any occured error in the buffer array.
125-----------------------------------------------------------------------------
122-----------------------------------------------------------------------------
126−
123+
127get_error : DBPointer -> IO String
124get_error : DBPointer -> IO String
128−get_error (MkDBPointer pointer) =mkForeign (FFun "sqlite3_get_error" [FPtr] FString)pointer
125+get_error (MkDBPointer pointer) = mkForeign (FFun "sqlite3_get_error" [FPtr] FString) pointer
129
126
130
127
131-----------------------------------------------------------------------------
128-----------------------------------------------------------------------------
@@ -133,14 +130,14 @@ get_error (MkDBPointer pointer) =mkForeign (FFun "sqlite3_get_error" [FPtr] FStr
133-- Returns a pointer to a Statement pointer on a successful call.
130-- Returns a pointer to a Statement pointer on a successful call.
134-- Returns a null pointer on a failure.
131-- Returns a null pointer on a failure.
135-----------------------------------------------------------------------------
132-----------------------------------------------------------------------------
136−
133+
137prepare_db : DBPointer -> String -> DB StmtPtr
134prepare_db : DBPointer -> String -> DB StmtPtr
138prepare_db (MkDBPointer pointer) cmd = do
135prepare_db (MkDBPointer pointer) cmd = do
139− result <- liftIO(mkForeign (FFun "sqlite3_prepare_idr" [FPtr, FString] FPtr)pointer cmd)
136+ result <- liftIO (mkForeign (FFun "sqlite3_prepare_idr" [FPtr, FString] FPtr) pointer cmd)
140− flag <- liftIO(nullPtr result)
137+ flag <- liftIO (nullPtr result)
141 if flag
138 if flag
142− then fail "Error occured while preparing"
139+ then fail "Error occured while preparing"
143− else return (MkStmtPtr result)
140+ else return (MkStmtPtr result)
144
141
145-----------------------------------------------------------------------------
142-----------------------------------------------------------------------------
146-- | Returns the error stored in the buffer by exec_db function.
143-- | Returns the error stored in the buffer by exec_db function.
@@ -152,81 +149,92 @@ step_db : StmtPtr -> DB Int
152step_db (MkStmtPtr pointer)= do
149step_db (MkStmtPtr pointer)= do
153 x <- liftIO (mkForeign (FFun "sqlite3_step_idr" [FPtr] FInt)pointer)
150 x <- liftIO (mkForeign (FFun "sqlite3_step_idr" [FPtr] FInt)pointer)
154 if ( x == 101)
151 if ( x == 101)
155− then fail "SQLITE_DONE"
152+ then fail "SQLITE_DONE"
156− else return x
153+ else return x
157
154
158-----------------------------------------------------------------------------
155-----------------------------------------------------------------------------
159−-- | Deletes a prepared statement. This function must be called after
156+-- | Deletes a prepared statement. This function must be called after
160-- prepare function.
157-- prepare function.
161-----------------------------------------------------------------------------
158-----------------------------------------------------------------------------
162
159
163finalize_db : StmtPtr -> DB Int
160finalize_db : StmtPtr -> DB Int
164−finalize_db (MkStmtPtr pointer) = do
161+finalize_db (MkStmtPtr pointer) = do
165− x <- liftIO (mkForeign (FFun "sqlite3_finalize_idr" [FPtr] FInt)pointer)
162+ x <- liftIO (mkForeign (FFun "sqlite3_finalize_idr" [FPtr] FInt) pointer)
166 if (x /= 0)
163 if (x /= 0)
167− then fail "Could not finalize"
164+ then fail "Could not finalize"
168− else return x
165+ else return x
169
166
170-----------------------------------------------------------------------------
167-----------------------------------------------------------------------------
171-- | Resets a prepared statement pointer back to its initial state.
168-- | Resets a prepared statement pointer back to its initial state.
172-----------------------------------------------------------------------------
169-----------------------------------------------------------------------------
173
170
174reset_db : StmtPtr -> DB Int
171reset_db : StmtPtr -> DB Int
175−reset_db (MkStmtPtr pointer) = do
172+reset_db (MkStmtPtr pointer) = do
176− x <- liftIO(mkForeign (FFun "sqlite3_reset_idr" [FPtr] FInt)pointer)
173+ x <- liftIO (mkForeign (FFun "sqlite3_reset_idr" [FPtr] FInt) pointer)
177− if (x /=0)
174+ if (x /= 0)
178− then fail "Could not reset"
175+ then fail "Could not reset"
179− else return x
176+ else return x
180
177
181-----------------------------------------------------------------------------
178-----------------------------------------------------------------------------
182-- | These routines obtain column information.
179-- | These routines obtain column information.
183-----------------------------------------------------------------------------
180-----------------------------------------------------------------------------
184
181
185column_count : DBPointer -> IO (Either String Int)
182column_count : DBPointer -> IO (Either String Int)
186−column_count (MkDBPointer pointer) = do
183+column_count (MkDBPointer pointer) = do
187− x <- mkForeign (FFun "sqlite3_column_count_idr" [FPtr] FInt)pointer
184+ x <- mkForeign (FFun "sqlite3_column_count_idr" [FPtr] FInt) pointer
188− if (x == 0 )
185+ return $ if (x == 0 )
189− then return (Left "No Data")
186+ then Left "No Data"
190− else return (Right x)
187+ else (Right x)
191
188
192column_name : DBPointer -> Int -> IO String
189column_name : DBPointer -> Int -> IO String
190+column_name (MkDBPointer pointer) iCol =
193−column_name (MkDBPointer pointer) iCol =mkForeign (FFun "sqlite3_column_name_idr" [FPtr, FInt] FString)pointer iCol
191+ mkForeign (FFun "sqlite3_column_name_idr" [FPtr, FInt] FString) pointer iCol
194−
192+
195column_decltype : DBPointer -> Int -> IO String
193column_decltype : DBPointer -> Int -> IO String
194+column_decltype (MkDBPointer pointer) iCol =
196−column_decltype (MkDBPointer pointer) iCol =mkForeign (FFun "sqlite3_column_decltype_idr" [FPtr, FInt] FString)pointer iCol
195+ mkForeign (FFun "sqlite3_column_decltype_idr" [FPtr, FInt] FString) pointer iCol
197
196
198
197
199column_bytes : DBPointer -> Int -> IO Int
198column_bytes : DBPointer -> Int -> IO Int
199+column_bytes (MkDBPointer pointer) iCol =
200−column_bytes (MkDBPointer pointer) iCol =mkForeign (FFun "sqlite3_column_bytes_idr" [FPtr, FInt] FInt)pointer iCol
200+ mkForeign (FFun "sqlite3_column_bytes_idr" [FPtr, FInt] FInt) pointer iCol
201
201
202
202
203column_blob : DBPointer -> Int -> IO String
203column_blob : DBPointer -> Int -> IO String
204+column_blob (MkDBPointer pointer) iCol =
204−column_blob (MkDBPointer pointer) iCol =mkForeign (FFun "sqlite3_column_bytes_idr" [FPtr, FInt] FString)pointer iCol
205+ mkForeign (FFun "sqlite3_column_bytes_idr" [FPtr, FInt] FString) pointer iCol
205
206
206
207
207column_text : DBPointer -> Int -> IO String
208column_text : DBPointer -> Int -> IO String
209+column_text (MkDBPointer pointer) iCol =
208−column_text (MkDBPointer pointer) iCol =mkForeign (FFun "sqlite3_column_text_idr" [FPtr, FInt] FString)pointer iCol
210+ mkForeign (FFun "sqlite3_column_text_idr" [FPtr, FInt] FString) pointer iCol
209
211
210
212
211column_Int : DBPointer -> Int -> IO Int
213column_Int : DBPointer -> Int -> IO Int
214+column_Int (MkDBPointer pointer) iCol =
212−column_Int (MkDBPointer pointer) iCol =mkForeign (FFun "sqlite3_column_int_idr" [FPtr, FInt] FInt)pointer iCol
215+ mkForeign (FFun "sqlite3_column_int_idr" [FPtr, FInt] FInt) pointer iCol
213
216
214-----------------------------------------------------------------------------
217-----------------------------------------------------------------------------
215-- | These routines support some of SQLite backup functions.
218-- | These routines support some of SQLite backup functions.
216-----------------------------------------------------------------------------
219-----------------------------------------------------------------------------
217
220
218−backup_init : DBPointer -> String -> DBPointer -> String -> IO DBPointer
221+backup_init : DBPointer -> String -> DBPointer -> String -> IO DBPointer
219−backup_init (MkDBPointer des_pointer) destName (MkDBPointer src_pointer) srcName = do x <- mkForeign (FFun "sqlite3_backup_init_idr" [FPtr,FString, FPtr, FString] FPtr)des_pointer destName src_pointer srcName
222+backup_init (MkDBPointer des_pointer) destName (MkDBPointer src_pointer) srcName =
223+ do x <- mkForeign (FFun "sqlite3_backup_init_idr" [FPtr,FString, FPtr, FString] FPtr)
224+ des_pointer destName src_pointer srcName
220− return (MkDBPointer x)
225+ return (MkDBPointer x)
221
226
222backup_step : DBPointer -> Int -> IO Int
227backup_step : DBPointer -> Int -> IO Int
228+backup_step (MkDBPointer pointer) nPage =
223−backup_step (MkDBPointer pointer) nPage =mkForeign (FFun "sqlite3_backup_step_idr" [FPtr, FInt] FInt)pointer nPage
229+ mkForeign (FFun "sqlite3_backup_step_idr" [FPtr, FInt] FInt) pointer nPage
224
230
225backup_finish : DBPointer -> IO Int
231backup_finish : DBPointer -> IO Int
232+backup_finish (MkDBPointer pointer) =
226−backup_finish (MkDBPointer pointer) =mkForeign (FFun "sqlite3_backup_finish_idr" [FPtr] FInt)pointer
233+ mkForeign (FFun "sqlite3_backup_finish_idr" [FPtr] FInt) pointer
227
234
228backup_remaining : DBPointer -> IO Int
235backup_remaining : DBPointer -> IO Int
236+backup_remaining (MkDBPointer pointer) =
229−backup_remaining (MkDBPointer pointer) =mkForeign (FFun "sqlite3_backup_remaining_idr" [FPtr] FInt)pointer
237+ mkForeign (FFun "sqlite3_backup_remaining_idr" [FPtr] FInt) pointer
230
238
231
239
232-----------------------------------------------------------------------------
240-----------------------------------------------------------------------------
@@ -237,100 +245,98 @@ backup_remaining (MkDBPointer pointer) =mkForeign (FFun "sqlite3_backup_remainin
237-----------------------------------------------------------------------------
245-----------------------------------------------------------------------------
238
246
239get_table : DBPointer -> String -> DB TBPointer
247get_table : DBPointer -> String -> DB TBPointer
240−get_table (MkDBPointer pointer) name = do
248+get_table (MkDBPointer pointer) name = do
241− x <- liftIO(mkForeign (FFun "sqlite3_get_table_idr" [FPtr, FString] FPtr)pointer name)
249+ x <- liftIO(mkForeign (FFun "sqlite3_get_table_idr" [FPtr, FString] FPtr) pointer name)
242− flag <- liftIO(nullPtr x)
250+ flag <- liftIO (nullPtr x)
243 if flag
251 if flag
244− then do x <- liftIO(get_error_table pointer) ; fail x
252+ then do x <- liftIO(get_error_table pointer) ; fail x
245− else return (MkTBPointer x)
253+ else return (MkTBPointer x)
246 where
254 where
247 get_error_table : Ptr-> IO String
255 get_error_table : Ptr-> IO String
248− get_error_table pointer = do x <- mkForeign (FFun "sqlite3_get_error" [FPtr] FString)pointer
256+ get_error_table pointer = do x <- mkForeign (FFun "sqlite3_get_error" [FPtr] FString) pointer
249 return x
257 return x
250
258
251
259
252free_table : TBPointer -> IO ()
260free_table : TBPointer -> IO ()
253−free_table (MkTBPointer pointer) = do x <- mkForeign (FFun "sqlite3_free_table_idr" [FPtr] FUnit)pointer
261+free_table (MkTBPointer pointer) = do x <- mkForeign (FFun "sqlite3_free_table_idr" [FPtr] FUnit) pointer
254 return ()
262 return ()
255−
263+
256-----------------------------------------------------------------------------
264-----------------------------------------------------------------------------
257-- | This version of these function obtain the row and column number
265-- | This version of these function obtain the row and column number
258-- from the Table struct. These functions are only used with get_table.
266-- from the Table struct. These functions are only used with get_table.
259-----------------------------------------------------------------------------
267-----------------------------------------------------------------------------
260
268
261num_row : TBPointer -> IO Int
269num_row : TBPointer -> IO Int
262−num_row (MkTBPointer pointer) = do x <- mkForeign (FFun "sqlite3_get_num_row" [FPtr] FInt)pointer
270+num_row (MkTBPointer pointer) = do x <- mkForeign (FFun "sqlite3_get_num_row" [FPtr] FInt) pointer
263− return (x)
271+ return x
264
272
265num_col : TBPointer -> IO Int
273num_col : TBPointer -> IO Int
266−num_col (MkTBPointer pointer) = do x <- mkForeign (FFun "sqlite3_get_num_col" [FPtr] FInt)pointer
274+num_col (MkTBPointer pointer) = do x <- mkForeign (FFun "sqlite3_get_num_col" [FPtr] FInt) pointer
267− return (x)
275+ return x
268−
276+
269-----------------------------------------------------------------------------
277-----------------------------------------------------------------------------
270-- | This version of these function obtain the row and column number
278-- | This version of these function obtain the row and column number
271-- from the Database struct.
279-- from the Database struct.
272-----------------------------------------------------------------------------
280-----------------------------------------------------------------------------
273
281
274num_row_v2 : DBPointer -> IO Int
282num_row_v2 : DBPointer -> IO Int
275−num_row_v2 (MkDBPointer pointer) = do x <- mkForeign (FFun "sqlite3_get_num_row_v2" [FPtr] FInt)pointer
283+num_row_v2 (MkDBPointer pointer) = do x <- mkForeign (FFun "sqlite3_get_num_row_v2" [FPtr] FInt) pointer
276− return (x)
284+ return x
277
285
278num_col_v2 : DBPointer -> IO Int
286num_col_v2 : DBPointer -> IO Int
279−num_col_v2 (MkDBPointer pointer) = do x <- mkForeign (FFun "sqlite3_get_num_col_v2" [FPtr] FInt)pointer
287+num_col_v2 (MkDBPointer pointer) = do x <- mkForeign (FFun "sqlite3_get_num_col_v2" [FPtr] FInt) pointer
280− return (x)
288+ return x
281−
289+
282-----------------------------------------------------------------------------
290-----------------------------------------------------------------------------
283-- | This function prints the result of a query by checking the type
291-- | This function prints the result of a query by checking the type
284-- of each value returned, it then calls the appropriate function.
292-- of each value returned, it then calls the appropriate function.
285-- Ther result is one of the DBVal variants.
293-- Ther result is one of the DBVal variants.
286-----------------------------------------------------------------------------
294-----------------------------------------------------------------------------
287−
295+
288get_data : DBPointer -> Int -> Int -> IO DBVal
296get_data : DBPointer -> Int -> Int -> IO DBVal
289get_data (MkDBPointer pointer) row col = do
297get_data (MkDBPointer pointer) row col = do
290 ty <- get_data_type pointer row col
298 ty <- get_data_type pointer row col
291 helper ty
299 helper ty
292− where
293− get_data_type : Ptr ->Int -> Int -> IO Int
300+ where get_data_type : Ptr ->Int -> Int -> IO Int
301+ get_data_type pointer row col =
294− get_data_type pointer row col =mkForeign (FFun "sqlite3_get_data_type" [FPtr, FInt, FInt] FInt)pointer row col
302+ mkForeign (FFun "sqlite3_get_data_type" [FPtr, FInt, FInt] FInt) pointer row col
295−
296− get_data_val_int : Ptr -> Int -> IO Int
303+ get_data_val_int : Ptr -> Int -> IO Int
304+ get_data_val_int pointer col =
297− get_data_val_int pointer col =mkForeign (FFun "sqlite3_get_val_int" [FPtr,FInt] FInt)pointer col
305+ mkForeign (FFun "sqlite3_get_val_int" [FPtr,FInt] FInt) pointer col
298−
306+
299− get_data_val_text : Ptr -> Int -> IO String
307+ get_data_val_text : Ptr -> Int -> IO String
308+ get_data_val_text pointer col =
300− get_data_val_text pointer col =mkForeign (FFun "sqlite3_get_val_text" [FPtr, FInt] FString)pointer col
309+ mkForeign (FFun "sqlite3_get_val_text" [FPtr, FInt] FString) pointer col
301−
310+
302−
303−
304− get_data_val_float : Ptr -> Int -> IO Float
311+ get_data_val_float : Ptr -> Int -> IO Float
312+ get_data_val_float pointer col =
305− get_data_val_float pointer col =mkForeign (FFun "sqlite3_get_float" [FPtr, FInt] FFloat)pointer col
313+ mkForeign (FFun "sqlite3_get_float" [FPtr, FInt] FFloat) pointer col
306−
314+
307− helper : Int -> IO DBVal
315+ helper : Int -> IO DBVal
308− helper 1 = do i <- get_data_val_int pointer col ; return (DBInt i)
316+ helper 1 = do i <- get_data_val_int pointer col ; return (DBInt i)
309− helper 2 = do i <- get_data_val_float pointer col ; return (DBFloat i)
317+ helper 2 = do i <- get_data_val_float pointer col ; return (DBFloat i)
310− helper 3 = do i <- get_data_val_text pointer col; return (DBText i)
318+ helper 3 = do i <- get_data_val_text pointer col; return (DBText i)
311− helper _ =return (DBNull)
319+ helper _ = return DBNull
312−
320+
313-----------------------------------------------------------------------------
321-----------------------------------------------------------------------------
314-- | This function makes use of get_data to get all the result.
322-- | This function makes use of get_data to get all the result.
315-----------------------------------------------------------------------------
323-----------------------------------------------------------------------------
316
324
317−toList_v1 : DBPointer -> DB Table
325+toList_v1 : DBPointer -> DB Table
318toList_v1 db = do nbR <- liftIO (num_row_v2 db)
326toList_v1 db = do nbR <- liftIO (num_row_v2 db)
319 nmC <- liftIO (num_col_v2 db)
327 nmC <- liftIO (num_col_v2 db)
320−
321− res <- liftIO $ forM [0..(nbR-1)] (\ i =>
328+ res <- liftIO $ forM [0..(nbR-1)] $ \ i =>
322− forM [0..(nmC-1)] (\ j => get_data db i j)
329+ forM [0..(nmC-1)] $ \ j => get_data db i j
323− )
324 return (the (List (List DBVal)) res)
330 return (the (List (List DBVal)) res)
325
331
326strcat : String -> String-> String
332strcat : String -> String-> String
327−strcat str1 str2 = (str1 ++ str2)
333+strcat str1 str2 = str1 ++ str2
328
334
329-----------------------------------------------------------------------------
335-----------------------------------------------------------------------------
330-- | This version of toList retunrs result from get_table
336-- | This version of toList retunrs result from get_table
331-- This could be removed if not needed in the future.
337-- This could be removed if not needed in the future.
332-----------------------------------------------------------------------------
338-----------------------------------------------------------------------------
333−
339+
334--toList_v2 : String -> String -> DBPointer -> DB Table
340--toList_v2 : String -> String -> DBPointer -> DB Table
335--toList_v2 name stmt x = do
341--toList_v2 name stmt x = do
336-- ptr <- (get_table x (stmt))
342-- ptr <- (get_table x (stmt))
@@ -339,12 +345,12 @@ strcat str1 str2 = (str1 ++ str2)
339-- res <- forM [0..(nbR-1)] (\ i =>
345-- res <- forM [0..(nbR-1)] (\ i =>
340-- forM [0..(nmC-1)] (\ j =>
346-- forM [0..(nmC-1)] (\ j =>
341-- liftIO(get_data x name i j)
347-- liftIO(get_data x name i j)
342−--
348+--
343-- )
349-- )
344-- )
350-- )
345-- liftIO (free_table ptr)
351-- liftIO (free_table ptr)
346−-- return res
352+-- return res
347−
353+
348
354
349-----------------------------------------------------------------------------
355-----------------------------------------------------------------------------
350-- | These routines support binding the types supported by Idris.
356-- | These routines support binding the types supported by Idris.
@@ -353,68 +359,67 @@ strcat str1 str2 = (str1 ++ str2)
353-----------------------------------------------------------------------------
359-----------------------------------------------------------------------------
354
360
355bind_int : StmtPtr -> Int -> Int -> DB StmtPtr
361bind_int : StmtPtr -> Int -> Int -> DB StmtPtr
356−bind_int (MkStmtPtr pointer) indexval val = do
362+bind_int (MkStmtPtr pointer) indexval val = do
357− x <- liftIO(mkForeign (FFun "sqlite3_bind_int_idr" [FPtr, FInt, FInt] FPtr)pointer indexval val)
363+ x <- liftIO (mkForeign (FFun "sqlite3_bind_int_idr" [FPtr, FInt, FInt] FPtr) pointer indexval val)
358− flag <- liftIO(nullPtr x)
364+ flag <- liftIO (nullPtr x)
359 if flag
365 if flag
360− then fail "Could not bind int."
366+ then fail "Could not bind int."
361− else return (MkStmtPtr x)
367+ else return (MkStmtPtr x)
362−
368+
363−
369+
364bind_float : StmtPtr -> Int -> Float -> DB StmtPtr
370bind_float : StmtPtr -> Int -> Float -> DB StmtPtr
365−bind_float (MkStmtPtr pointer) indexval val = do
371+bind_float (MkStmtPtr pointer) indexval val = do
366− x <- liftIO(mkForeign (FFun "sqlite3_bind_float_idr" [FPtr, FInt, FFloat] FPtr)pointer indexval val)
372+ x <- liftIO (mkForeign (FFun "sqlite3_bind_float_idr" [FPtr, FInt, FFloat] FPtr) pointer indexval val)
367− flag <- liftIO(nullPtr x)
373+ flag <- liftIO (nullPtr x)
368 if flag
374 if flag
369− then fail "Could not bind float."
375+ then fail "Could not bind float."
370− else return (MkStmtPtr x)
376+ else return (MkStmtPtr x)
371
377
372bind_text : StmtPtr -> String -> Int -> Int -> DB StmtPtr
378bind_text : StmtPtr -> String -> Int -> Int -> DB StmtPtr
373bind_text (MkStmtPtr pointer) text indexval lengthval = do
379bind_text (MkStmtPtr pointer) text indexval lengthval = do
374− x <- liftIO(mkForeign (FFun "sqlite3_bind_text_idr" [FPtr, FString, FInt, FInt] FPtr)pointer text indexval lengthval)
380+ x <- liftIO (mkForeign (FFun "sqlite3_bind_text_idr" [FPtr, FString, FInt, FInt] FPtr)
381+ pointer text indexval lengthval)
375− flag <- liftIO(nullPtr x)
382+ flag <- liftIO(nullPtr x)
376 if flag
383 if flag
377− then fail "Could not bind text."
384+ then fail "Could not bind text."
378− else return (MkStmtPtr x)
385+ else return (MkStmtPtr x)
379
386
380bind_null : StmtPtr -> Int -> DB StmtPtr
387bind_null : StmtPtr -> Int -> DB StmtPtr
381−bind_null (MkStmtPtr pointer) indexval = do
388+bind_null (MkStmtPtr pointer) indexval = do
382− x <- liftIO(mkForeign (FFun "sqlite3_bind_null_idr" [FPtr, FInt] FPtr)pointer indexval)
389+ x <- liftIO (mkForeign (FFun "sqlite3_bind_null_idr" [FPtr, FInt] FPtr) pointer indexval)
383− flag <- liftIO(nullPtr x)
390+ flag <- liftIO (nullPtr x)
384 if flag
391 if flag
385− then fail "Could not bind null."
392+ then fail "Could not bind null."
386− else return (MkStmtPtr x)
393+ else return (MkStmtPtr x)
387
394
388-----------------------------------------------------------------------------
395-----------------------------------------------------------------------------
389-- | String Length
396-- | String Length
390-----------------------------------------------------------------------------
397-----------------------------------------------------------------------------
391−
398+
392strlen : String -> DB Int
399strlen : String -> DB Int
393−strlen str = liftIO(mkForeign (FFun "strLength" [FString] FInt) str)
400+strlen str = liftIO (mkForeign (FFun "strLength" [FString] FInt) str)
394−
401+
395instance Show DBVal where
402instance Show DBVal where
396− show (DBInt i) = "Int val: " ++ show i ++ "\n"
403+ show (DBInt i) = "Int val: " ++ show i ++ "\n"
397− show (DBText i) = "Text val: " ++ show i ++ "\n"
404+ show (DBText i) = "Text val: " ++ show i ++ "\n"
398− show (DBFloat i) = "Float val: " ++ show i ++ "\n"
405+ show (DBFloat i) = "Float val: " ++ show i ++ "\n"
399− show (DBNull ) = "NULL"
406+ show (DBNull ) = "NULL"
400
407
401-----------------------------------------------------------------------------
408-----------------------------------------------------------------------------
402-- | Multi bind a list of values.
409-- | Multi bind a list of values.
403-----------------------------------------------------------------------------
410-----------------------------------------------------------------------------
404
411
405bindMulti : StmtPtr-> List (Maybe (Int, Value)) -> DB StmtPtr
412bindMulti : StmtPtr-> List (Maybe (Int, Value)) -> DB StmtPtr
406−bindMulti pointer [] = return pointer
413+bindMulti pointer [] = return pointer
407−bindMulti pointer (Nothing :: vs) = bindMulti pointer vs
414+bindMulti pointer (Nothing :: vs) = bindMulti pointer vs
408−bindMulti pointer ((Just (indexs, val))::vs) = case val of
415+bindMulti pointer ((Just (indexs, (VInt i)))::vs) =
409− (VInt intval) => do x <- bind_int pointer indexs intval
416+ do x <- bind_int pointer indexs i
410− bindMulti(x) vs
417+ bindMulti x vs
411−
418+bindMulti pointer ((Just (indexs, (VStr s)))::vs) =
412− (VStr strval) => do len <- strlen strval
419+ do len <- strlen s
413− x <- bind_text pointer strval indexs len
420+ x <- bind_text pointer s indexs len
414− bindMulti(x) vs
421+ bindMulti x vs
415−
422+bindMulti pointer ((Just (indexs, (VFloat f)))::vs) =
416−
417− (VFloat floatval) => do x <- bind_float pointer indexs floatval
423+ do x <- bind_float pointer indexs f
418−
419− bindMulti(x) vs
424+ bindMulti x vs
420
425