module U.Codebase.Sqlite.Causal
  ( DbCausal,
    GDbCausal (..),
    SyncCausalFormat,
    SyncCausalFormat' (..),
  )
where

import Data.Vector (Vector)
import U.Codebase.Sqlite.DbId (BranchHashId, CausalHashId)
import Unison.Prelude

data GDbCausal causalHash valueHash = DbCausal
  { forall causalHash valueHash.
GDbCausal causalHash valueHash -> causalHash
selfHash :: causalHash,
    forall causalHash valueHash.
GDbCausal causalHash valueHash -> valueHash
valueHash :: valueHash,
    forall causalHash valueHash.
GDbCausal causalHash valueHash -> Set causalHash
parents :: Set causalHash
  }

type DbCausal = GDbCausal CausalHashId BranchHashId

data SyncCausalFormat' causalHash valueHash = SyncCausalFormat
  { forall causalHash valueHash.
SyncCausalFormat' causalHash valueHash -> valueHash
valueHash :: valueHash,
    forall causalHash valueHash.
SyncCausalFormat' causalHash valueHash -> Vector causalHash
parents :: Vector causalHash
  }
  deriving stock (SyncCausalFormat' causalHash valueHash
-> SyncCausalFormat' causalHash valueHash -> Bool
(SyncCausalFormat' causalHash valueHash
 -> SyncCausalFormat' causalHash valueHash -> Bool)
-> (SyncCausalFormat' causalHash valueHash
    -> SyncCausalFormat' causalHash valueHash -> Bool)
-> Eq (SyncCausalFormat' causalHash valueHash)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall causalHash valueHash.
(Eq valueHash, Eq causalHash) =>
SyncCausalFormat' causalHash valueHash
-> SyncCausalFormat' causalHash valueHash -> Bool
$c== :: forall causalHash valueHash.
(Eq valueHash, Eq causalHash) =>
SyncCausalFormat' causalHash valueHash
-> SyncCausalFormat' causalHash valueHash -> Bool
== :: SyncCausalFormat' causalHash valueHash
-> SyncCausalFormat' causalHash valueHash -> Bool
$c/= :: forall causalHash valueHash.
(Eq valueHash, Eq causalHash) =>
SyncCausalFormat' causalHash valueHash
-> SyncCausalFormat' causalHash valueHash -> Bool
/= :: SyncCausalFormat' causalHash valueHash
-> SyncCausalFormat' causalHash valueHash -> Bool
Eq, Int -> SyncCausalFormat' causalHash valueHash -> ShowS
[SyncCausalFormat' causalHash valueHash] -> ShowS
SyncCausalFormat' causalHash valueHash -> String
(Int -> SyncCausalFormat' causalHash valueHash -> ShowS)
-> (SyncCausalFormat' causalHash valueHash -> String)
-> ([SyncCausalFormat' causalHash valueHash] -> ShowS)
-> Show (SyncCausalFormat' causalHash valueHash)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall causalHash valueHash.
(Show valueHash, Show causalHash) =>
Int -> SyncCausalFormat' causalHash valueHash -> ShowS
forall causalHash valueHash.
(Show valueHash, Show causalHash) =>
[SyncCausalFormat' causalHash valueHash] -> ShowS
forall causalHash valueHash.
(Show valueHash, Show causalHash) =>
SyncCausalFormat' causalHash valueHash -> String
$cshowsPrec :: forall causalHash valueHash.
(Show valueHash, Show causalHash) =>
Int -> SyncCausalFormat' causalHash valueHash -> ShowS
showsPrec :: Int -> SyncCausalFormat' causalHash valueHash -> ShowS
$cshow :: forall causalHash valueHash.
(Show valueHash, Show causalHash) =>
SyncCausalFormat' causalHash valueHash -> String
show :: SyncCausalFormat' causalHash valueHash -> String
$cshowList :: forall causalHash valueHash.
(Show valueHash, Show causalHash) =>
[SyncCausalFormat' causalHash valueHash] -> ShowS
showList :: [SyncCausalFormat' causalHash valueHash] -> ShowS
Show)

type SyncCausalFormat = SyncCausalFormat' CausalHashId BranchHashId