module ProjectM36.DisconnectedTransaction where
import ProjectM36.Base
import Data.Map

concreteDatabaseContext :: DisconnectedTransaction -> DatabaseContext
concreteDatabaseContext :: DisconnectedTransaction -> DatabaseContext
concreteDatabaseContext (DisconnectedTransaction TransactionId
_ (Schemas DatabaseContext
context Subschemas
_) DirtyFlag
_) = DatabaseContext
context

schemas :: DisconnectedTransaction -> Schemas
schemas :: DisconnectedTransaction -> Schemas
schemas (DisconnectedTransaction TransactionId
_ Schemas
s DirtyFlag
_) = Schemas
s

loadGraphRefRelVarsOnly :: TransactionId -> Schemas -> Schemas
loadGraphRefRelVarsOnly :: TransactionId -> Schemas -> Schemas
loadGraphRefRelVarsOnly TransactionId
commitId (Schemas DatabaseContext
concreteCtx Subschemas
subschemas) = 
  let f :: RelVarName -> p -> RelationalExprBase GraphRefTransactionMarker
f RelVarName
k p
_ = forall a. RelVarName -> a -> RelationalExprBase a
RelationVariable RelVarName
k (TransactionId -> GraphRefTransactionMarker
TransactionMarker TransactionId
commitId)
      ctx' :: DatabaseContext
ctx' = DatabaseContext
concreteCtx { relationVariables :: RelationVariables
relationVariables = forall k a b. (k -> a -> b) -> Map k a -> Map k b
mapWithKey forall {p}.
RelVarName -> p -> RelationalExprBase GraphRefTransactionMarker
f (DatabaseContext -> RelationVariables
relationVariables DatabaseContext
concreteCtx)}
  in DatabaseContext -> Subschemas -> Schemas
Schemas DatabaseContext
ctx' Subschemas
subschemas



parentId :: DisconnectedTransaction -> TransactionId
parentId :: DisconnectedTransaction -> TransactionId
parentId (DisconnectedTransaction TransactionId
pid Schemas
_ DirtyFlag
_) = TransactionId
pid

isDirty :: DisconnectedTransaction -> Bool
isDirty :: DisconnectedTransaction -> DirtyFlag
isDirty (DisconnectedTransaction TransactionId
_ Schemas
_ DirtyFlag
flag) = DirtyFlag
flag

freshTransaction :: TransactionId -> Schemas -> DisconnectedTransaction
freshTransaction :: TransactionId -> Schemas -> DisconnectedTransaction
freshTransaction TransactionId
tid Schemas
schemas' = TransactionId -> Schemas -> DirtyFlag -> DisconnectedTransaction
DisconnectedTransaction TransactionId
tid Schemas
schemas' DirtyFlag
False