neuron-0.6.0.0: src/lib/Neuron/Zettelkasten/Query/Graph.hs
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE NoImplicitPrelude #-}
module Neuron.Zettelkasten.Query.Graph where
import Data.Aeson
import Data.Aeson.GADT.TH
import Data.Dependent.Sum.Orphans ()
import Data.GADT.Compare.TH
import Data.GADT.Show.TH
import Neuron.Zettelkasten.Connection
import Neuron.Zettelkasten.Graph.Type
import Neuron.Zettelkasten.ID
import Neuron.Zettelkasten.Zettel
import Relude
-- | Like `GraphQuery` but focused on the relationship between zettels.
data GraphQuery r where
-- | Query the entire graph.
GraphQuery_Id :: GraphQuery ZettelGraph
-- | Query backlinks.
GraphQuery_BacklinksOf ::
Maybe Connection ->
ZettelID ->
GraphQuery [(Connection, Zettel)]
deriveJSONGADT ''GraphQuery
deriveGEq ''GraphQuery
deriveGShow ''GraphQuery
deriving instance Show (GraphQuery ZettelGraph)
deriving instance Eq (GraphQuery ZettelGraph)