content: {-# LANGUAGE OverloadedStrings #-}
  {-# LANGUAGE NoImplicitPrelude #-}
  
  module Feature.NamedResolvers.DB where
  
  import Data.Morpheus.Server.Types (ID (..))
  import Relude
  
  allDeities :: [ID]
  allDeities = ["zeus", "morpheus"]
  
  allRealms :: [ID]
  allRealms = ["olympus", "dreams"]
  
  allEntities :: [ID]
  allEntities = ["zeus", "morpheus", "olympus", "dreams"]
  
  getPowers :: (Monad m) => ID -> m [ID]
  getPowers "zeus" = pure ["tb"]
  getPowers "morpheus" = pure ["sp"]
  getPowers _ = pure []
  
  getDeityName :: (Monad m) => ID -> m Text
  getDeityName "zeus" = pure "Zeus"
  getDeityName "morpheus" = pure "Morpheus"
  getDeityName _ = pure ""
  
  getRealmName :: (Monad m) => ID -> m Text
  getRealmName "olympus" = pure "Mount Olympus"
  getRealmName "dreams" = pure "Fictional world of dreams"
  getRealmName _ = pure ""
  
  getOwner :: (Monad m) => ID -> m ID
  getOwner "olympus" = pure "zeus"
  getOwner "dreams" = pure "morpheus"
  getOwner _ = pure ""
  
  getPlace :: (Monad m) => ID -> m ID
  getPlace "zeus" = pure "olympus"
  getPlace "morpheus" = pure "dreams"
  getPlace x = pure x
  
  getDocsById :: (Monad m) => ID -> m (Maybe Text)
  getDocsById "morpheus" = pure $ Just "the god of dreams"
  getDocsById "zeus" = pure $ Just "the king of the gods"
  getDocsById "olympus" = pure $ Just "Mountain"
  getDocsById "dreams" = pure $ Just "Dreams"
  getDocsById _ = pure Nothing
  