project-m36-0.9.9: Relational Algebra Engine
Safe HaskellSafe-Inferred
LanguageHaskell2010

ProjectM36.HashSecurely

Description

A unified class for walking the database structure to produce a hash used for Merkle trees and validation.

Synopsis

Documentation

class HashBytes a where Source #

Methods

hashBytes :: a -> Ctx -> Ctx Source #

Instances

Instances details
HashBytes Atom Source # 
Instance details

Defined in ProjectM36.HashSecurely

Methods

hashBytes :: Atom -> Ctx -> Ctx Source #

HashBytes AtomFunction Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes AtomFunctions Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes AtomType Source # 
Instance details

Defined in ProjectM36.HashSecurely

Methods

hashBytes :: AtomType -> Ctx -> Ctx Source #

HashBytes Attribute Source # 
Instance details

Defined in ProjectM36.HashSecurely

Methods

hashBytes :: Attribute -> Ctx -> Ctx Source #

HashBytes Attributes Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes DataConstructorDef Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes DataConstructorDefArg Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes DatabaseContext Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes DatabaseContextFunction Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes DatabaseContextFunctions Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes GraphRefTransactionMarker Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes InclusionDependencies Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes InclusionDependency Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes Notification Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes Notifications Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes Relation Source # 
Instance details

Defined in ProjectM36.HashSecurely

Methods

hashBytes :: Relation -> Ctx -> Ctx Source #

HashBytes RelationTuple Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes RelationTupleSet Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes RelationVariables Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes Schema Source # 
Instance details

Defined in ProjectM36.HashSecurely

Methods

hashBytes :: Schema -> Ctx -> Ctx Source #

HashBytes SchemaIsomorph Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes TransactionId Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes TypeConstructor Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes TypeConstructorDef Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes TypeConstructorMapping Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes MerkleHash Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes Text Source # 
Instance details

Defined in ProjectM36.HashSecurely

Methods

hashBytes :: Text -> Ctx -> Ctx Source #

HashBytes UTCTime Source # 
Instance details

Defined in ProjectM36.HashSecurely

Methods

hashBytes :: UTCTime -> Ctx -> Ctx Source #

HashBytes () Source # 
Instance details

Defined in ProjectM36.HashSecurely

Methods

hashBytes :: () -> Ctx -> Ctx Source #

HashBytes a => HashBytes (AtomExprBase a) Source # 
Instance details

Defined in ProjectM36.HashSecurely

Methods

hashBytes :: AtomExprBase a -> Ctx -> Ctx Source #

HashBytes a => HashBytes (AttributeExprBase a) Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes a => HashBytes (AttributeNamesBase a) Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes a => HashBytes (ExtendTupleExprBase a) Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes (FunctionBody a) Source # 
Instance details

Defined in ProjectM36.HashSecurely

Methods

hashBytes :: FunctionBody a -> Ctx -> Ctx Source #

HashBytes a => HashBytes (RelationalExprBase a) Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes a => HashBytes (RestrictionPredicateExprBase a) Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes a => HashBytes (TupleExprBase a) Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes a => HashBytes (TupleExprsBase a) Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes a => HashBytes (WithNameExprBase a) Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes a => HashBytes (Maybe [AttributeExprBase a]) Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes [DataConstructorDef] Source # 
Instance details

Defined in ProjectM36.HashSecurely

HashBytes (Map RelVarName Relation) Source # 
Instance details

Defined in ProjectM36.HashSecurely

(HashBytes a, HashBytes b) => HashBytes (a, b) Source # 
Instance details

Defined in ProjectM36.HashSecurely

Methods

hashBytes :: (a, b) -> Ctx -> Ctx Source #

data SHash Source #

Constructors

forall a.HashBytes a => SHash !a 

hashTransaction :: Transaction -> Set Transaction -> MerkleHash Source #

Hash a transaction within its graph context to create a Merkle hash for it.

mkDDLHash :: DatabaseContext -> Map RelVarName Relation -> SecureHash Source #

Return a hash of just DDL-specific (schema) attributes. This is useful for determining if a client has the appropriate updates needed to work with the current schema.