{-# LANGUAGE DataKinds #-}

module Admin.Component.Managed
  ( ManagedAPI
  , ManagedComponent
  , managed
  , serveManaged
  , module Managed
  ) where

import Admin.Components
import Data.Version (makeVersion)
import Managed
import Managed.Connectors.HTTPConnector
import Servant

type ManagedAPI = HTTPConnectorAPI

type ManagedComponent = Component "managed" ManagedAPI

managed :: Agent SR -> ManagedComponent
managed :: Agent SR -> ManagedComponent
managed Agent SR
agent =
  Component :: forall (name :: Symbol) api.
Server api -> Version -> Component name api
Component {server :: Server ManagedAPI
server = Agent SR -> Server ManagedAPI
serveManaged Agent SR
agent, version :: Version
version = [Int] -> Version
makeVersion [Int
1]}

serveManaged :: Agent SR -> Server ManagedAPI
serveManaged :: Agent SR -> Server ManagedAPI
serveManaged = Agent SR -> Server ManagedAPI
httpConnectorServer