module Orville.PostgreSQL.Schema.TableIdentifier
( TableIdentifier
, unqualifiedNameToTableId
, setTableIdSchema
, tableIdQualifiedName
, tableIdUnqualifiedName
, tableIdSchemaName
, tableIdToString
, tableIdUnqualifiedNameString
, tableIdSchemaNameString
)
where
import qualified Orville.PostgreSQL.Expr as Expr
data TableIdentifier = TableIdentifier
{ TableIdentifier -> String
i_tableIdName :: String
, TableIdentifier -> Maybe String
i_tableIdSchema :: Maybe String
}
deriving (TableIdentifier -> TableIdentifier -> Bool
(TableIdentifier -> TableIdentifier -> Bool)
-> (TableIdentifier -> TableIdentifier -> Bool)
-> Eq TableIdentifier
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TableIdentifier -> TableIdentifier -> Bool
== :: TableIdentifier -> TableIdentifier -> Bool
$c/= :: TableIdentifier -> TableIdentifier -> Bool
/= :: TableIdentifier -> TableIdentifier -> Bool
Eq, Eq TableIdentifier
Eq TableIdentifier
-> (TableIdentifier -> TableIdentifier -> Ordering)
-> (TableIdentifier -> TableIdentifier -> Bool)
-> (TableIdentifier -> TableIdentifier -> Bool)
-> (TableIdentifier -> TableIdentifier -> Bool)
-> (TableIdentifier -> TableIdentifier -> Bool)
-> (TableIdentifier -> TableIdentifier -> TableIdentifier)
-> (TableIdentifier -> TableIdentifier -> TableIdentifier)
-> Ord TableIdentifier
TableIdentifier -> TableIdentifier -> Bool
TableIdentifier -> TableIdentifier -> Ordering
TableIdentifier -> TableIdentifier -> TableIdentifier
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: TableIdentifier -> TableIdentifier -> Ordering
compare :: TableIdentifier -> TableIdentifier -> Ordering
$c< :: TableIdentifier -> TableIdentifier -> Bool
< :: TableIdentifier -> TableIdentifier -> Bool
$c<= :: TableIdentifier -> TableIdentifier -> Bool
<= :: TableIdentifier -> TableIdentifier -> Bool
$c> :: TableIdentifier -> TableIdentifier -> Bool
> :: TableIdentifier -> TableIdentifier -> Bool
$c>= :: TableIdentifier -> TableIdentifier -> Bool
>= :: TableIdentifier -> TableIdentifier -> Bool
$cmax :: TableIdentifier -> TableIdentifier -> TableIdentifier
max :: TableIdentifier -> TableIdentifier -> TableIdentifier
$cmin :: TableIdentifier -> TableIdentifier -> TableIdentifier
min :: TableIdentifier -> TableIdentifier -> TableIdentifier
Ord, Int -> TableIdentifier -> ShowS
[TableIdentifier] -> ShowS
TableIdentifier -> String
(Int -> TableIdentifier -> ShowS)
-> (TableIdentifier -> String)
-> ([TableIdentifier] -> ShowS)
-> Show TableIdentifier
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TableIdentifier -> ShowS
showsPrec :: Int -> TableIdentifier -> ShowS
$cshow :: TableIdentifier -> String
show :: TableIdentifier -> String
$cshowList :: [TableIdentifier] -> ShowS
showList :: [TableIdentifier] -> ShowS
Show)
unqualifiedNameToTableId :: String -> TableIdentifier
unqualifiedNameToTableId :: String -> TableIdentifier
unqualifiedNameToTableId String
name =
TableIdentifier
{ i_tableIdName :: String
i_tableIdName = String
name
, i_tableIdSchema :: Maybe String
i_tableIdSchema = Maybe String
forall a. Maybe a
Nothing
}
setTableIdSchema :: String -> TableIdentifier -> TableIdentifier
setTableIdSchema :: String -> TableIdentifier -> TableIdentifier
setTableIdSchema String
schema TableIdentifier
tableId =
TableIdentifier
tableId
{ i_tableIdSchema :: Maybe String
i_tableIdSchema = String -> Maybe String
forall a. a -> Maybe a
Just String
schema
}
tableIdQualifiedName :: TableIdentifier -> Expr.Qualified Expr.TableName
tableIdQualifiedName :: TableIdentifier -> Qualified TableName
tableIdQualifiedName TableIdentifier
tableId =
Maybe SchemaName -> TableName -> Qualified TableName
Expr.qualifyTable
(TableIdentifier -> Maybe SchemaName
tableIdSchemaName TableIdentifier
tableId)
(TableIdentifier -> TableName
tableIdUnqualifiedName TableIdentifier
tableId)
tableIdUnqualifiedName :: TableIdentifier -> Expr.TableName
tableIdUnqualifiedName :: TableIdentifier -> TableName
tableIdUnqualifiedName =
String -> TableName
Expr.tableName (String -> TableName)
-> (TableIdentifier -> String) -> TableIdentifier -> TableName
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TableIdentifier -> String
i_tableIdName
tableIdSchemaName :: TableIdentifier -> Maybe Expr.SchemaName
tableIdSchemaName :: TableIdentifier -> Maybe SchemaName
tableIdSchemaName =
(String -> SchemaName) -> Maybe String -> Maybe SchemaName
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap String -> SchemaName
Expr.schemaName (Maybe String -> Maybe SchemaName)
-> (TableIdentifier -> Maybe String)
-> TableIdentifier
-> Maybe SchemaName
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TableIdentifier -> Maybe String
i_tableIdSchema
tableIdUnqualifiedNameString :: TableIdentifier -> String
tableIdUnqualifiedNameString :: TableIdentifier -> String
tableIdUnqualifiedNameString =
TableIdentifier -> String
i_tableIdName
tableIdSchemaNameString :: TableIdentifier -> Maybe String
tableIdSchemaNameString :: TableIdentifier -> Maybe String
tableIdSchemaNameString =
TableIdentifier -> Maybe String
i_tableIdSchema
tableIdToString :: TableIdentifier -> String
tableIdToString :: TableIdentifier -> String
tableIdToString TableIdentifier
tableId =
case TableIdentifier -> Maybe String
i_tableIdSchema TableIdentifier
tableId of
Maybe String
Nothing ->
TableIdentifier -> String
i_tableIdName TableIdentifier
tableId
Just String
schema ->
String
schema String -> ShowS
forall a. Semigroup a => a -> a -> a
<> String
"." String -> ShowS
forall a. Semigroup a => a -> a -> a
<> TableIdentifier -> String
i_tableIdName TableIdentifier
tableId