
module Gargantext.API.Server.Named.Viz (
  graphAPI
  ) where

import Gargantext.API.Admin.Auth (withNamedAccess)
import Gargantext.API.Admin.Auth.Types
import Gargantext.API.Admin.EnvTypes (Env)
import Gargantext.API.Errors.Types ( BackendInternalError )
import Gargantext.API.Prelude (GargM)
import Gargantext.API.Routes.Named.Viz qualified as Named
import Gargantext.Core.Viz.Graph.API
import Gargantext.Core.Viz.Graph.GEXF ()
 -- (cooc2graph)
import Gargantext.Database.Admin.Types.Node
import Gargantext.Prelude
import Servant.Server.Generic (AsServerT)


graphAPI :: AuthenticatedUser -> UserId -> NodeId -> Named.GraphAPI (AsServerT (GargM Env BackendInternalError))
graphAPI authenticatedUser userId n = withNamedAccess authenticatedUser (PathNode n) $ Named.GraphAPI
  { getGraphEp          = getGraph n
  , getGraphAsyncEp     = graphAsync n
  , cloneGraphEp        = graphClone userId n
  , gexfEp              = getGraphGexf      n
  , graphVersionsAPI    = graphVersionsAPI  userId n
  , updateGraphLegendEp = updateGraphLegend n
  }


graphVersionsAPI :: UserId -> NodeId -> Named.GraphVersionsAPI (AsServerT (GargM Env BackendInternalError))
graphVersionsAPI u n = Named.GraphVersionsAPI
  { getGraphVersionsEp      = graphVersions u n
  , recomputeGraphVersionEp = recomputeVersions n
  }
