graphql-engine/server/src-lib/Hasura/LogicalModel/Cache.hs

33 lines
1.0 KiB
Haskell
Raw Normal View History

{-# LANGUAGE UndecidableInstances #-}
module Hasura.LogicalModel.Cache
( LogicalModelInfo (..),
LogicalModelCache,
)
where
import Data.Aeson (ToJSON (..), genericToJSON)
import Data.HashMap.Strict.InsOrd qualified as InsOrdHashMap
import Hasura.LogicalModel.Types (LogicalModelField, LogicalModelName)
import Hasura.Prelude hiding (first)
import Hasura.RQL.Types.Backend (Backend (..))
import Hasura.RQL.Types.BackendType (BackendType)
import Hasura.Table.Cache (RolePermInfoMap)
type LogicalModelCache b = HashMap LogicalModelName (LogicalModelInfo b)
-- | Description of a logical model for use in metadata (after schema cache)
data LogicalModelInfo (b :: BackendType) = LogicalModelInfo
{ _lmiName :: LogicalModelName,
_lmiFields :: InsOrdHashMap.InsOrdHashMap (Column b) (LogicalModelField b),
_lmiDescription :: Maybe Text,
_lmiPermissions :: RolePermInfoMap b
}
deriving (Generic)
instance
(Backend b, ToJSON (RolePermInfoMap b)) =>
ToJSON (LogicalModelInfo b)
where
toJSON = genericToJSON hasuraJSON