module Hix.Managed.Data.QueryDep where

import Hix.Data.Version (Version)
import Hix.Data.VersionBounds (VersionBounds)
import Hix.Managed.Data.Mutable (MutableDep)

-- | A dep that is eligible for being processed, which requires that it is not referring to a project-local package,
-- that it wasn't excluded by CLI options and arbitrary other conditions specific to individual stages.
data QueryDep =
  QueryDep {
    QueryDep -> MutableDep
package :: MutableDep,
    -- | Used to constrain the spectrum of candidate versions in some modes.
    QueryDep -> VersionBounds
bounds :: VersionBounds,
    QueryDep -> Maybe Version
current :: Maybe Version,
    QueryDep -> Maybe Version
installed :: Maybe Version,
    QueryDep -> Maybe Version
override :: Maybe Version
  }
  deriving stock (QueryDep -> QueryDep -> Bool
(QueryDep -> QueryDep -> Bool)
-> (QueryDep -> QueryDep -> Bool) -> Eq QueryDep
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: QueryDep -> QueryDep -> Bool
== :: QueryDep -> QueryDep -> Bool
$c/= :: QueryDep -> QueryDep -> Bool
/= :: QueryDep -> QueryDep -> Bool
Eq, Int -> QueryDep -> ShowS
[QueryDep] -> ShowS
QueryDep -> String
(Int -> QueryDep -> ShowS)
-> (QueryDep -> String) -> ([QueryDep] -> ShowS) -> Show QueryDep
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> QueryDep -> ShowS
showsPrec :: Int -> QueryDep -> ShowS
$cshow :: QueryDep -> String
show :: QueryDep -> String
$cshowList :: [QueryDep] -> ShowS
showList :: [QueryDep] -> ShowS
Show, (forall x. QueryDep -> Rep QueryDep x)
-> (forall x. Rep QueryDep x -> QueryDep) -> Generic QueryDep
forall x. Rep QueryDep x -> QueryDep
forall x. QueryDep -> Rep QueryDep x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. QueryDep -> Rep QueryDep x
from :: forall x. QueryDep -> Rep QueryDep x
$cto :: forall x. Rep QueryDep x -> QueryDep
to :: forall x. Rep QueryDep x -> QueryDep
Generic)