psql-utils 0.2.0.0 → 0.2.0.1
raw patch · 2 files changed
+49/−19 lines, 2 filesPVP: minor bump suggested
API additions: PVP suggests at least a minor version bump
API changes (from Hackage documentation)
+ Database.PSQL.Types: From :: Int64 -> From
+ Database.PSQL.Types: Size :: Int64 -> Size
+ Database.PSQL.Types: [unFrom] :: From -> Int64
+ Database.PSQL.Types: [unSize] :: Size -> Int64
+ Database.PSQL.Types: as :: TableName -> String -> TableName
+ Database.PSQL.Types: instance Data.Hashable.Class.Hashable Database.PSQL.Types.From
+ Database.PSQL.Types: instance Data.Hashable.Class.Hashable Database.PSQL.Types.Size
+ Database.PSQL.Types: instance GHC.Classes.Eq Database.PSQL.Types.From
+ Database.PSQL.Types: instance GHC.Classes.Eq Database.PSQL.Types.Size
+ Database.PSQL.Types: instance GHC.Classes.Ord Database.PSQL.Types.From
+ Database.PSQL.Types: instance GHC.Classes.Ord Database.PSQL.Types.Size
+ Database.PSQL.Types: instance GHC.Enum.Enum Database.PSQL.Types.From
+ Database.PSQL.Types: instance GHC.Enum.Enum Database.PSQL.Types.Size
+ Database.PSQL.Types: instance GHC.Generics.Generic Database.PSQL.Types.From
+ Database.PSQL.Types: instance GHC.Generics.Generic Database.PSQL.Types.Size
+ Database.PSQL.Types: instance GHC.Num.Num Database.PSQL.Types.From
+ Database.PSQL.Types: instance GHC.Num.Num Database.PSQL.Types.Size
+ Database.PSQL.Types: instance GHC.Real.Integral Database.PSQL.Types.From
+ Database.PSQL.Types: instance GHC.Real.Integral Database.PSQL.Types.Size
+ Database.PSQL.Types: instance GHC.Real.Real Database.PSQL.Types.From
+ Database.PSQL.Types: instance GHC.Real.Real Database.PSQL.Types.Size
+ Database.PSQL.Types: instance GHC.Show.Show Database.PSQL.Types.From
+ Database.PSQL.Types: instance GHC.Show.Show Database.PSQL.Types.Size
+ Database.PSQL.Types: join :: TableName -> TableName -> TableName
+ Database.PSQL.Types: newtype From
+ Database.PSQL.Types: newtype Size
Files
- psql-utils.cabal +1/−1
- src/Database/PSQL/Types.hs +48/−18
psql-utils.cabal view
@@ -1,5 +1,5 @@ name: psql-utils-version: 0.2.0.0+version: 0.2.0.1 synopsis: PostgreSQL Simple util tools. description: An easy way to use postgresql-simple library. homepage: https://github.com/Lupino/yuntan-common/tree/master/psql-utils#readme
src/Database/PSQL/Types.hs view
@@ -1,10 +1,11 @@-{-# LANGUAGE DeriveGeneric #-}-{-# LANGUAGE FlexibleContexts #-}-{-# LANGUAGE FlexibleInstances #-}-{-# LANGUAGE GADTs #-}-{-# LANGUAGE MultiParamTypeClasses #-}-{-# LANGUAGE OverloadedStrings #-}-{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE DeriveGeneric #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE GADTs #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE TypeFamilies #-} module Database.PSQL.Types ( TablePrefix@@ -26,6 +27,8 @@ , otherEnv , TableName+ , as+ , join , getTableName , Columns , createTable@@ -62,6 +65,8 @@ , Only (..) , SqlError (..) + , From (..)+ , Size (..) , OrderBy , asc , desc@@ -84,16 +89,31 @@ import Database.PostgreSQL.Simple.FromRow (FromRow (..), field) import GHC.Generics (Generic) -type From = Int64-type Size = Int64+newtype From = From { unFrom :: Int64 }+ deriving (Generic, Eq, Num, Integral, Real, Ord, Enum)+instance Show From where+ show = show . unFrom +instance Hashable From +newtype Size = Size {unSize :: Int64}+ deriving (Generic, Eq, Num, Integral, Real, Ord, Enum)++instance Show Size where+ show = show . unSize++instance Hashable Size+ newtype TablePrefix = TablePrefix String deriving (Show) instance IsString TablePrefix where fromString = TablePrefix +getPrefix :: TablePrefix -> String+getPrefix (TablePrefix "") = ""+getPrefix (TablePrefix x) = x ++ "_"+ type PSQLPool = Pool Connection newtype PSQL a = PSQL {unPSQL :: TablePrefix -> Connection -> IO a}@@ -159,17 +179,28 @@ simpleEnv :: Pool Connection -> TablePrefix -> u -> SimpleEnv u simpleEnv pool prefix env0 = SimpleEnv{pc=pool, pf = prefix, pu = env0} -newtype TableName = TableName String+data TableName =+ TableName String+ | TableNameAs TableName String+ | TableNameJoin TableName TableName deriving (Show) instance IsString TableName where fromString = TableName +as :: TableName -> String -> TableName+tn `as` asName = TableNameAs tn asName++join :: TableName -> TableName -> TableName+name1 `join` name2 = TableNameJoin name1 name2+ getTableName :: TablePrefix -> TableName -> String-getTableName (TablePrefix "") (TableName name) =- concat ["\"", name, "\"" ]-getTableName (TablePrefix prefix) (TableName name) =- concat ["\"", prefix, "_", name, "\"" ]+getTableName prefix (TableName name) =+ concat ["\"", getPrefix prefix, name, "\"" ]+getTableName prefix (TableNameAs name asName) =+ concat [ getTableName prefix name, " AS ", asName ]+getTableName prefix (TableNameJoin name1 name2) =+ concat [ getTableName prefix name1, ", ", getTableName prefix name2 ] newtype Column = Column { unColumn :: String } deriving (Show)@@ -204,10 +235,9 @@ fromString = IndexName getIndexName :: TablePrefix -> TableName -> IndexName -> String-getIndexName (TablePrefix "") (TableName tn) (IndexName name) =- concat [ "\"", tn, "_", name, "\"" ]-getIndexName (TablePrefix prefix) (TableName tn) (IndexName name) =- concat [ "\"", prefix, "_", tn , "_", name, "\"" ]+getIndexName prefix (TableName tn) (IndexName name) =+ concat [ "\"", getPrefix prefix, tn , "_", name, "\"" ]+getIndexName _ _ _ = error "no implement" createIndex :: Bool -> TableName -> IndexName -> Columns -> PSQL Int64