packages feed

simplest-sqlite 0.0.0.8 → 0.0.0.9

raw patch · 3 files changed

+38/−6 lines, 3 filesPVP: minor bump suggested

API additions: PVP suggests at least a minor version bump

API changes (from Hackage documentation)

+ Database.SmplstSQLite3: Blob :: Type
+ Database.SmplstSQLite3: Float :: Type
+ Database.SmplstSQLite3: Integer :: Type
+ Database.SmplstSQLite3: Null :: Type
+ Database.SmplstSQLite3: Text :: Type
+ Database.SmplstSQLite3: bindNList :: SQLiteDataList a => Stmt -> Int -> [a] -> IO ()
+ Database.SmplstSQLite3: columnList :: SQLiteDataList a => Stmt -> Int -> IO [a]
+ Database.SmplstSQLite3: columnType :: Stmt -> Int -> IO Type
+ Database.SmplstSQLite3: data Type
+ Database.SmplstSQLite3: instance Database.SmplstSQLite3.SQLiteData ()
+ Database.SmplstSQLite3: instance GHC.Show.Show Database.SmplstSQLite3.Type

Files

simplest-sqlite.cabal view
@@ -2,7 +2,7 @@ cabal-version: >= 1.8  name: simplest-sqlite-version: 0.0.0.8+version: 0.0.0.9 stability: Experimental author: YoshikuniJujo <PAF01143@nifty.ne.jp> maintainer: YoshikuniJujo <PAF01143@nifty.ne.jp>@@ -23,7 +23,7 @@ source-repository this     type: git     location: git://github.com/YoshikuniJujo/test_haskell-    tag: simplest-sqlite-0.0.0.8+    tag: simplest-sqlite-0.0.0.9  library     hs-source-dirs: src
src/Database/SmplstSQLite3.hs view
@@ -3,9 +3,9 @@ module Database.SmplstSQLite3 ( 	-- * Functions 	withSQLite, withPrepared,-	step, reset, bind, bindN, column, SQLiteData, SQLiteDataList,+	step, reset, bind, SQLiteData(..), SQLiteDataList(..), columnType, 	-- * Types-	SQLite, Stmt, Result(..),+	SQLite, Stmt, Result(..), Type(..), 	) where  import Control.Applicative@@ -118,6 +118,10 @@ 	bindN = bindNList 	column = columnList +instance SQLiteData () where+	bindN = sqlite3BindNull+	column _ _ = return ()+ instance SQLiteData Int where 	bindN = sqlite3BindInt 	column (Stmt sm) i =@@ -138,6 +142,8 @@ 	column (Stmt sm) i = T.decodeUtf8 <$> 		(BS.packCString =<< c_sqlite3_column_text sm (fromIntegral i)) +foreign import ccall unsafe "sqlite3.h sqlite3_bind_null" c_sqlite3_bind_null ::+	Ptr Stmt -> CInt -> IO CInt foreign import ccall unsafe "sqlite3.h sqlite3_bind_int" c_sqlite3_bind_int :: 	Ptr Stmt -> CInt -> CInt -> IO CInt foreign import ccall unsafe "sqlite3.h sqlite3_bind_text" c_sqlite3_bind_text ::@@ -148,6 +154,12 @@ bind :: SQLiteData a => Stmt -> String -> a -> IO () bind sm ph x = flip (bindN sm) x =<< sqlite3BindParameterIndex sm ph +sqlite3BindNull :: Stmt -> Int -> () -> IO ()+sqlite3BindNull (Stmt sm) i _ = do+	ret <- c_sqlite3_bind_null sm (fromIntegral i)+	when (ret /= sQLITE_OK) . ioError . userError $+			"Cannot bind null: error code (" ++ show ret ++ ")"+ sqlite3BindInt :: Stmt -> Int -> Int -> IO () sqlite3BindInt (Stmt sm) i n = do 	ret <- c_sqlite3_bind_int sm (fromIntegral i) (fromIntegral n)@@ -191,3 +203,16 @@ 	ret <- c_sqlite3_reset sm 	when (ret /= sQLITE_OK) . ioError . userError $ 		"Cannot reset stmt: error code (" ++ show ret ++ ")"++data Type = Integer | Float | Text | Blob | Null deriving Show++foreign import ccall unsafe "sqlite3.h sqlite3_column_type"+	c_sqlite3_column_type :: Ptr Stmt -> CInt -> IO CInt++columnType :: Stmt -> Int -> IO Type+columnType (Stmt ps) i = (<$> c_sqlite3_column_type ps (fromIntegral i)) $ \t ->+	case () of _	| t == sQLITE_INTEGER -> Integer+			| t == sQLITE_FLOAT -> Float+			| t == sQLITE_TEXT -> Text+			| t == sQLITE_BLOB -> Blob+			| otherwise -> Null
src/Database/SmplstSQLite3/Constants.hsc view
@@ -1,8 +1,8 @@ #include <sqlite3.h>  module Database.SmplstSQLite3.Constants (-	sQLITE_OK, sQLITE_ERROR, sQLITE_BUSY,-	sQLITE_ROW, sQLITE_DONE+	sQLITE_OK, sQLITE_ERROR, sQLITE_BUSY, sQLITE_ROW, sQLITE_DONE,+	sQLITE_INTEGER, sQLITE_FLOAT, sQLITE_TEXT, sQLITE_BLOB, sQLITE_NULL 	) where  import Foreign.C.Types@@ -13,3 +13,10 @@ sQLITE_BUSY = #const SQLITE_BUSY sQLITE_ROW = #const SQLITE_ROW sQLITE_DONE = #const SQLITE_DONE++sQLITE_INTEGER, sQLITE_FLOAT, sQLITE_TEXT, sQLITE_BLOB, sQLITE_NULL :: CInt+sQLITE_INTEGER = #const SQLITE_INTEGER+sQLITE_FLOAT = #const SQLITE_FLOAT+sQLITE_TEXT = #const SQLITE_TEXT+sQLITE_BLOB = #const SQLITE_BLOB+sQLITE_NULL = #const SQLITE_NULL