rethinkdb-1.8.0.0: Database/RethinkDB/Objects.hs
module Database.RethinkDB.Objects (
Database(..),
TableCreateOptions(..),
Table(..),
Datum,
Key
) where
import Data.Default (def, Default)
import Data.Int (Int64)
import Data.Text as Text
import Data.Aeson (Value)
type Key = Text
-- | A database, referenced by name
data Database = Database {
databaseName :: Text
} deriving (Eq, Ord)
instance Show Database where
show (Database d) = show d
-- | Options used to create a table
data TableCreateOptions = TableCreateOptions {
tableDataCenter :: Maybe Text,
tableCacheSize :: Maybe Int64
}
instance Default TableCreateOptions where
def = TableCreateOptions Nothing Nothing
-- | A table description
data Table = Table {
tableDatabase :: Maybe Database, -- ^ when Nothing, use the connection's database
tableName :: Text,
tablePrimaryKey :: Maybe Key
} deriving (Eq, Ord)
instance Show Table where
show (Table db' nam mkey) =
maybe "" (\(Database d) -> Text.unpack d++".") db' ++ Text.unpack nam ++
maybe "" (\k -> "[" ++ show k ++ "]") mkey
type Datum = Value