hasql-th 0.1.0.1 → 0.2
raw patch · 6 files changed
+10/−92 lines, 6 filesdep −attoparsecdep −hasqldep −hasql-transactionPVP ok
version bump matches the API change (PVP)
Dependencies removed: attoparsec, hasql, hasql-transaction
API changes (from Hackage documentation)
- Hasql.TH: readFileAsTransaction :: String -> Q Exp
+ Hasql.TH: readFileAsSQL :: String -> Q Exp
Files
- hasql-th.cabal +1/−9
- library/Hasql/TH.hs +9/−20
- library/Hasql/TH/Parsers.hs +0/−23
- library/Hasql/TH/Queries.hs +0/−14
- library/Hasql/TH/Renderers.hs +0/−10
- library/Hasql/TH/Transactions.hs +0/−16
hasql-th.cabal view
@@ -1,7 +1,7 @@ name: hasql-th version:- 0.1.0.1+ 0.2 category: Hasql, Database, PostgreSQL, Template Haskell synopsis:@@ -43,20 +43,12 @@ Haskell2010 other-modules: Hasql.TH.Prelude- Hasql.TH.Queries- Hasql.TH.Transactions- Hasql.TH.Parsers Hasql.TH.Renderers exposed-modules: Hasql.TH build-depends:- -- database:- hasql >= 0.15 && < 0.16,- hasql-transaction >= 0.3 && < 0.4, -- template-haskell: template-haskell >= 2.8 && < 3,- -- parsers:- attoparsec >= 0.10 && < 0.14, -- data: bytestring >= 0.10 && < 0.11, text >= 1 && < 2,
library/Hasql/TH.hs view
@@ -2,35 +2,24 @@ import Hasql.TH.Prelude import Language.Haskell.TH-import qualified Hasql.TH.Parsers as Parsers import qualified Hasql.TH.Renderers as Renderers-import qualified Data.Text.IO+import qualified Data.ByteString -- | -- Read an SQL-file, containing multiple statements,--- and produce a transaction expression.+-- and produce an expression of type `ByteString`. -- -- Allows to store plain SQL in external files and read it at compile time. -- -- E.g., -- --- >migration1 :: Transaction ()+-- >migration1 :: Hasql.Session.Session () -- >migration1 =--- > $(Hasql.TH.readFileAsTransaction "sql/migration-1.sql")+-- > Hasql.Session.sql $(Hasql.TH.readFileAsSQL "sql/migration-1.sql") -- --- Note that so far this function uses a very simple parsing algorithm--- to extract individual statements from the file.--- The algorithm simply splits the contents by the semicolon.--- So make sure that you only apply it to SQL,--- which only uses the semicolon for statement-separation.-readFileAsTransaction :: String -> Q Exp-readFileAsTransaction path =- do- contents <-- runIO $ Data.Text.IO.readFile path- statements <- - either (fail . showString ("Parsing failure: ")) return $- Parsers.run Parsers.statements contents- return $- Renderers.statementsTransactionExp statements+readFileAsSQL :: String -> Q Exp+readFileAsSQL path =+ fmap Renderers.byteStringExp $+ runIO $ Data.ByteString.readFile path+
− library/Hasql/TH/Parsers.hs
@@ -1,23 +0,0 @@-module Hasql.TH.Parsers where--import Hasql.TH.Prelude-import Data.Attoparsec.Text-import qualified Data.Text.Encoding---run :: Parser a -> Text -> Either String a-run parser input =- parseOnly parser input--statements :: Parser [ByteString]-statements =- sepBy' statement separator- where- separator =- char ';' *> skipSpace--statement :: Parser ByteString-statement =- fmap Data.Text.Encoding.encodeUtf8 $- takeWhile1 (/= ';')-
− library/Hasql/TH/Queries.hs
@@ -1,14 +0,0 @@-module Hasql.TH.Queries where--import Hasql.TH.Prelude-import Hasql.Query-import qualified Hasql.Encoders as Encoders-import qualified Hasql.Decoders as Decoders---statement :: ByteString -> Query () ()-statement sql =- Query sql Encoders.unit Decoders.unit False---
library/Hasql/TH/Renderers.hs view
@@ -2,18 +2,8 @@ import Hasql.TH.Prelude import Language.Haskell.TH-import qualified Hasql.Transaction as Transaction-import qualified Hasql.TH.Transactions as Transactions import qualified Data.ByteString as ByteString --statementsTransactionExp :: [ByteString] -> Exp-statementsTransactionExp x =- sequenceExp_ (map statementTransactionExp x)--statementTransactionExp :: ByteString -> Exp-statementTransactionExp x =- AppE (VarE 'Transactions.statement) (byteStringExp x) byteStringExp :: ByteString -> Exp byteStringExp x =
− library/Hasql/TH/Transactions.hs
@@ -1,16 +0,0 @@-module Hasql.TH.Transactions where--import Hasql.TH.Prelude-import Hasql.Transaction-import qualified Hasql.TH.Queries as Queries-import qualified Data.ByteString---statement :: ByteString -> Transaction ()-statement sql =- query () (Queries.statement sql)--statements :: ByteString -> Transaction ()-statements =- traverse_ statement .- Data.ByteString.split (fromIntegral (ord ';'))