typedquery 0.1.0.3 → 0.1.1
raw patch · 3 files changed
+42/−20 lines, 3 files
Files
- src/Database/TypedQuery/SQLParser.hs +15/−3
- src/Database/TypedQuery/Types.hs +26/−16
- typedquery.cabal +1/−1
src/Database/TypedQuery/SQLParser.hs view
@@ -22,7 +22,14 @@ --import Control.Arrow (first) import Control.Monad -- (void, foldM_)-import Data.Monoid (Monoid (..))++#if !(MIN_VERSION_base(4,8,0))+import Data.Monoid (Monoid(..))+#endif+#if !(MIN_VERSION_base(4,11,0))+import Data.Semigroup (Semigroup(..))+#endif+ import qualified Language.Haskell.TH.Syntax as TH import Data.Maybe@@ -149,10 +156,12 @@ addJISU :: String -> WParser () addJISU s = addW $ mempty { inTypeV = [TAInSupply s]} +instance Semigroup SQLWriter where+ SQLWriter a1 a2 a3 a4 a5 <> SQLWriter b1 b2 b3 b4 b5+ = SQLWriter (mappend a1 b1) (mappend a2 b2) (mappend a3 b3) (mappend a4 b4) (mappend a5 b5)+ instance Monoid SQLWriter where mempty = SQLWriter mempty mempty mempty mempty mempty- SQLWriter a1 a2 a3 a4 a5 `mappend` SQLWriter b1 b2 b3 b4 b5- = SQLWriter (mappend a1 b1) (mappend a2 b2) (mappend a3 b3) (mappend a4 b4) (mappend a5 b5) typedSQLtoSQL :: String -> Maybe (String, [Text], [TypeAction], [TypeAction], [TypeAction]) -- ^ takes some annotates string and gives its parsed representation@@ -578,6 +587,9 @@ parseInsert = do whiteSpace sql greserved "INSERT"+ optional $ do+ greserved "OR"+ greserved "IGNORE" greserved "INTO" addQ =<< identifier3 addQ =<< braketS <$> fields
src/Database/TypedQuery/Types.hs view
@@ -7,22 +7,29 @@ {-# OPTIONS_GHC -fno-warn-orphans #-} module Database.TypedQuery.Types-( TypedQuery (..)-, TypeAction (..)-, RunDB (..)-, jsonPair-, convAction-, typeTuple-, typeTupleIn-, vanilaQuery-, genUncurry-, genJsonQuery-, genTypedQuery-)+ ( TypedQuery (..)+ , TypeAction (..)+ , RunDB (..)+ , jsonPair+ , convAction+ , typeTuple+ , typeTupleIn+ , vanilaQuery+ , genUncurry+ , genJsonQuery+ , genTypedQuery+ ) where import Control.Arrow (first)++#if !(MIN_VERSION_base(4,8,0)) import Data.Monoid (Monoid(..))+#endif+#if !(MIN_VERSION_base(4,11,0))+import Data.Semigroup (Semigroup(..))+#endif+ import Data.String (IsString(..)) import Data.Typeable (Typeable) @@ -52,6 +59,7 @@ import Data.String.QM codeFormat = id+-- currently there is some parese error in the following section codeFormat' = check . fmap reformat . parseStmtWithMode defaultParseMode { extensions = [ EnableExtension BangPatterns@@ -114,16 +122,18 @@ Nothing -> mempty Just (a, b, c, d, e) -> TypedQuery (fromString a) b c d e -instance (RunDB q, Monoid q) => Monoid (TypedQuery q) where- mempty = TypedQuery mempty mempty mempty mempty mempty- TypedQuery a1 a2 a3 a4 a5 `mappend` TypedQuery b1 b2 b3 b4 b5 ++instance (RunDB q, Monoid q) => Semigroup (TypedQuery q) where+ TypedQuery a1 a2 a3 a4 a5 <> TypedQuery b1 b2 b3 b4 b5 = TypedQuery (mappend a1 b1) (mappend a2 b2) (mappend a3 b3) (mappend a4 b4) (mappend a5 b5)- {-# INLINE mappend #-}++instance (RunDB q, Monoid q) => Monoid (TypedQuery q) where+ mempty = TypedQuery mempty mempty mempty mempty mempty convAction :: RunDB q => q -> TypeAction -> TH.Exp -> TH.Exp convAction _ (TAUnknown) = id
typedquery.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/ name: typedquery-version: 0.1.0.3+version: 0.1.1 synopsis: Parser for SQL augmented with types description: Base package for parsing queries homepage: https://github.com/tolysz/typedquery