simplest-sqlite 0.0.0.13 → 0.0.0.14
raw patch · 5 files changed
+43/−14 lines, 5 files
Files
- simplest-sqlite.cabal +3/−3
- src/Database/SmplstSQLite3.hs +19/−8
- src/Database/SmplstSQLite3/Constants.hsc +5/−2
- src/Database/SmplstSQLite3/Exception.hs +3/−0
- src/Database/SmplstSQLite3/Exception/Internal.hs +13/−1
simplest-sqlite.cabal view
@@ -2,7 +2,7 @@ cabal-version: >= 1.8 name: simplest-sqlite-version: 0.0.0.13+version: 0.0.0.14 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.13+ tag: simplest-sqlite-0.0.0.14 library hs-source-dirs: src@@ -34,6 +34,6 @@ build-depends: base == 4.*, bytestring == 0.10.*, text >= 1.1 && < 1.3, exception-hierarchy == 0.0.0.*, template-haskell >= 2.9 && < 2.11- ghc-options: -Wall+ ghc-options: -Wall -fno-warn-tabs extra-libraries: sqlite3 extensions: ForeignFunctionInterface
src/Database/SmplstSQLite3.hs view
@@ -53,7 +53,8 @@ sqliteThrow ("Cannot close database: " ++ em) ret sqlite3Errmsg :: SQLite -> IO String-sqlite3Errmsg (SQLite db) = peekCString =<< c_sqlite3_errmsg db+sqlite3Errmsg (SQLite db) =+ peekCString' "Error Message" =<< c_sqlite3_errmsg db foreign import ccall unsafe "sqlite3.h sqlite3_prepare_v2" c_sqlite3_prepare_v2 ::@@ -76,7 +77,7 @@ em <- sqlite3Errmsg db sqlite3Finalize sm sqliteThrow ("Cannot prepare: " ++ em) ret- (sm ,) <$> (peekCString =<< peek pt)+ (sm ,) <$> (peekCString' "Unused SQL" =<< peek pt) sqlite3Finalize :: Stmt -> IO () sqlite3Finalize (Stmt psm) = do@@ -133,18 +134,28 @@ instance SQLiteDataList Char where bindNList = sqlite3BindString- columnList (Stmt sm) i =- peekCString =<< c_sqlite3_column_text sm (fromIntegral i)+ columnList (Stmt sm) i = peekCString' "String column"+ =<< c_sqlite3_column_text sm (fromIntegral i) instance SQLiteData BS.ByteString where bindN = sqlite3BindBlob- column (Stmt sm) i =- BS.packCString =<< c_sqlite3_column_blob sm (fromIntegral i)+ column (Stmt sm) i = packCString' "ByteString column"+ =<< c_sqlite3_column_blob sm (fromIntegral i) instance SQLiteData T.Text where bindN sm i = sqlite3BindByteString sm i . T.encodeUtf8- column (Stmt sm) i = T.decodeUtf8 <$>- (BS.packCString =<< c_sqlite3_column_text sm (fromIntegral i))+ column (Stmt sm) i = (T.decodeUtf8 <$>) . packCString' "Text column"+ =<< c_sqlite3_column_text sm (fromIntegral i)++peekCString' :: String -> CString -> IO String+peekCString' em cstr+ | cstr == nullPtr = nullPointerException em+ | otherwise = peekCString cstr++packCString' :: String -> CString -> IO BS.ByteString+packCString' em cstr+ | cstr == nullPtr = nullPointerException em+ | otherwise = BS.packCString cstr foreign import ccall unsafe "sqlite3.h sqlite3_bind_null" c_sqlite3_bind_null :: Ptr Stmt -> CInt -> IO CInt
src/Database/SmplstSQLite3/Constants.hsc view
@@ -63,6 +63,7 @@ ) where import Foreign.C.Types+import Data.Bits sQLITE_OK, sQLITE_ROW, sQLITE_DONE :: CInt sQLITE_OK = #const SQLITE_OK@@ -98,7 +99,8 @@ sQLITE_READONLY_RECOVERY = #const SQLITE_READONLY_RECOVERY sQLITE_READONLY_CANTLOCK = #const SQLITE_READONLY_CANTLOCK sQLITE_READONLY_ROLLBACK = #const SQLITE_READONLY_ROLLBACK-sQLITE_READONLY_DBMOVED = #const SQLITE_READONLY_DBMOVED+-- sQLITE_READONLY_DBMOVED = #const SQLITE_READONLY_DBMOVED+sQLITE_READONLY_DBMOVED = sQLITE_READONLY_PLAIN .|. 4 `shiftL` 8 sQLITE_INTERRUPT :: CInt sQLITE_INTERRUPT = #const SQLITE_INTERRUPT@@ -191,7 +193,8 @@ sQLITE_AUTH_PLAIN, sQLITE_AUTH_USER :: CInt sQLITE_AUTH_PLAIN = #const SQLITE_AUTH-sQLITE_AUTH_USER = #const SQLITE_AUTH_USER+-- sQLITE_AUTH_USER = #const SQLITE_AUTH_USER+sQLITE_AUTH_USER = sQLITE_AUTH_PLAIN .|. 1 `shiftL` 8 sQLITE_FORMAT, sQLITE_RANGE, sQLITE_NOTADB :: CInt sQLITE_FORMAT = #const SQLITE_FORMAT
src/Database/SmplstSQLite3/Exception.hs view
@@ -113,6 +113,9 @@ SQLITE_BIND_ERROR(..), SQLITE_ERROR_OTHER(..),+ + NullPointerException(..),+ nullPointerException ) where import Database.SmplstSQLite3.Exception.Internal
src/Database/SmplstSQLite3/Exception/Internal.hs view
@@ -116,7 +116,11 @@ SQLITE_WARNING_AUTOINDEX(..), SQLITE_BIND_ERROR(..),- SQLITE_ERROR_OTHER(..) ) where+ SQLITE_ERROR_OTHER(..),+ + NullPointerException(..),+ nullPointerException+ ) where import Control.Exception import Control.Exception.Hierarchy@@ -443,3 +447,11 @@ sqliteThrowBindError :: String -> IO a sqliteThrowBindError em = throw $ SQLITE_BIND_ERROR em++newtype NullPointerException = NullPointerException String+ deriving (Typeable, Show)++exceptionHierarchy Nothing (ExType ''NullPointerException)++nullPointerException :: String -> IO a+nullPointerException em = throwIO $ NullPointerException em