Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
This module defines operations on the Inferno VC store. The store structure is as follows:
- `storePath` stores the JSON serialised `VCMeta VCObject`s, where the filename is the cryptographic hash (
VCOBjectHash
) of the object's contents - `storePath/heads` is a set of current HEAD objects of the store, which can be seen as the roots of the VC tree
- `storePath/to_head` is a map from every
VCOBjectHash
to its current HEAD, where the file name is the source hash and the contents of the file are the HEAD hash - `storePathdeps` is a map from every
VCOBjectHash
to its (transitive) dependencies, i.e. the file `storePathdeps/hash` describes the closure of `hash`
Synopsis
- newtype VCStorePath = VCStorePath FilePath
- type VCStoreErrM err m = (AsType VCStoreError err, MonadError err m, MonadIO m)
- type VCStoreLogM env m = (HasType (IOTracer VCServerTrace) env, MonadReader env m, MonadIO m)
- type VCStoreEnvM env m = (HasType VCStorePath env, MonadReader env m, MonadIO m)
- trace :: VCStoreLogM env m => VCServerTrace -> m ()
- throwError :: (VCStoreLogM env m, VCStoreErrM err m) => VCStoreError -> m a
- initVCStore :: VCStoreEnvM env m => m ()
- initVCCachedClient :: VCStoreEnvM env m => m ()
- checkPathExists :: (VCStoreLogM env m, VCStoreErrM err m) => FilePath -> m ()
- getDepsFromStore :: (VCStoreLogM env m, VCStoreErrM err m) => FilePath -> VCObjectHash -> m ByteString
- appendBS :: VCStoreLogM env m => FilePath -> ByteString -> m ()
- writeBS :: VCStoreLogM env m => FilePath -> ByteString -> m ()
- writeHashedJSON :: (VCStoreLogM env m, VCHashUpdate obj, ToJSON obj) => FilePath -> obj -> m VCObjectHash
- readVCObjectHashTxt :: (VCStoreLogM env m, VCStoreErrM err m) => FilePath -> m [VCObjectHash]
- storeVCObject :: (VCStoreLogM env m, VCStoreErrM err m, VCStoreEnvM env m, VCHashUpdate a, VCHashUpdate g, ToJSON a, ToJSON g) => VCMeta a g VCObject -> m VCObjectHash
- deleteAutosavedVCObject :: (VCStoreLogM env m, VCStoreErrM err m, VCStoreEnvM env m) => VCObjectHash -> m ()
- deleteStaleAutosavedVCObjects :: (VCStoreLogM env m, VCStoreErrM err m, VCStoreEnvM env m) => m ()
- deleteVCObjects :: (VCStoreLogM env m, VCStoreErrM err m, VCStoreEnvM env m) => VCObjectHash -> m ()
- fetchVCObject :: (VCStoreLogM env m, VCStoreErrM err m, VCStoreEnvM env m, FromJSON a, FromJSON g) => VCObjectHash -> m (VCMeta a g VCObject)
- fetchRemovedVCObject :: (VCStoreLogM env m, VCStoreErrM err m, VCStoreEnvM env m, FromJSON a, FromJSON g) => VCObjectHash -> m (VCMeta a g VCObject)
- fetchVCObject' :: (VCStoreLogM env m, VCStoreErrM err m, VCStoreEnvM env m, FromJSON a, FromJSON g) => Maybe FilePath -> VCObjectHash -> m (VCMeta a g VCObject)
- fetchVCObjects :: (VCStoreLogM env m, VCStoreErrM err m, VCStoreEnvM env m, FromJSON a, FromJSON g) => [VCObjectHash] -> m (Map VCObjectHash (VCMeta a g VCObject))
- fetchVCObjectClosureHashes :: (VCStoreLogM env m, VCStoreErrM err m, VCStoreEnvM env m) => VCObjectHash -> m [VCObjectHash]
- fetchVCObjectWithClosure :: (VCStoreLogM env m, VCStoreErrM err m, VCStoreEnvM env m, FromJSON a, FromJSON g) => VCObjectHash -> m (Map VCObjectHash (VCMeta a g VCObject))
- calculateMissingVCObjects :: VCStoreEnvM env m => [VCObjectHash] -> m [VCObjectHash]
- fetchCurrentHead :: (VCStoreLogM env m, VCStoreErrM err m, VCStoreEnvM env m) => VCObjectHash -> m VCObjectHash
- fetchVCObjectHistory :: (VCStoreLogM env m, VCStoreErrM err m, VCStoreEnvM env m, FromJSON a, FromJSON g) => VCObjectHash -> m [VCMeta a g VCObjectHash]
- getAllHeads :: (VCStoreLogM env m, VCStoreEnvM env m) => m [VCObjectHash]
- fetchFunctionsForGroups :: (VCStoreLogM env m, VCStoreErrM err m, VCStoreEnvM env m, Ord g, FromJSON a, FromJSON g) => Set g -> m [VCMeta a g VCObjectHash]
Documentation
newtype VCStorePath Source #
Instances
Generic VCStorePath Source # | |
Defined in Inferno.VersionControl.Operations type Rep VCStorePath :: Type -> Type # from :: VCStorePath -> Rep VCStorePath x # to :: Rep VCStorePath x -> VCStorePath # | |
type Rep VCStorePath Source # | |
Defined in Inferno.VersionControl.Operations type Rep VCStorePath = D1 ('MetaData "VCStorePath" "Inferno.VersionControl.Operations" "inferno-vc-0.1.0-KyAO1GZuiEv4oyOIVKzzQ6" 'True) (C1 ('MetaCons "VCStorePath" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 FilePath))) |
type VCStoreErrM err m = (AsType VCStoreError err, MonadError err m, MonadIO m) Source #
type VCStoreLogM env m = (HasType (IOTracer VCServerTrace) env, MonadReader env m, MonadIO m) Source #
type VCStoreEnvM env m = (HasType VCStorePath env, MonadReader env m, MonadIO m) Source #
trace :: VCStoreLogM env m => VCServerTrace -> m () Source #
throwError :: (VCStoreLogM env m, VCStoreErrM err m) => VCStoreError -> m a Source #
initVCStore :: VCStoreEnvM env m => m () Source #
initVCCachedClient :: VCStoreEnvM env m => m () Source #
checkPathExists :: (VCStoreLogM env m, VCStoreErrM err m) => FilePath -> m () Source #
getDepsFromStore :: (VCStoreLogM env m, VCStoreErrM err m) => FilePath -> VCObjectHash -> m ByteString Source #
appendBS :: VCStoreLogM env m => FilePath -> ByteString -> m () Source #
writeBS :: VCStoreLogM env m => FilePath -> ByteString -> m () Source #
writeHashedJSON :: (VCStoreLogM env m, VCHashUpdate obj, ToJSON obj) => FilePath -> obj -> m VCObjectHash Source #
readVCObjectHashTxt :: (VCStoreLogM env m, VCStoreErrM err m) => FilePath -> m [VCObjectHash] Source #
storeVCObject :: (VCStoreLogM env m, VCStoreErrM err m, VCStoreEnvM env m, VCHashUpdate a, VCHashUpdate g, ToJSON a, ToJSON g) => VCMeta a g VCObject -> m VCObjectHash Source #
deleteAutosavedVCObject :: (VCStoreLogM env m, VCStoreErrM err m, VCStoreEnvM env m) => VCObjectHash -> m () Source #
Delete a temporary object from the VC. This is used for autosaved scripts and to run tests against unsaved scripts
deleteStaleAutosavedVCObjects :: (VCStoreLogM env m, VCStoreErrM err m, VCStoreEnvM env m) => m () Source #
Deletes all stale autosaved objects from the VC.
deleteVCObjects :: (VCStoreLogM env m, VCStoreErrM err m, VCStoreEnvM env m) => VCObjectHash -> m () Source #
Soft delete script and its predecessors All scripts and their references are moved to "removed" directory
fetchVCObject :: (VCStoreLogM env m, VCStoreErrM err m, VCStoreEnvM env m, FromJSON a, FromJSON g) => VCObjectHash -> m (VCMeta a g VCObject) Source #
fetchRemovedVCObject :: (VCStoreLogM env m, VCStoreErrM err m, VCStoreEnvM env m, FromJSON a, FromJSON g) => VCObjectHash -> m (VCMeta a g VCObject) Source #
Fetch object from removed directory
fetchVCObject' :: (VCStoreLogM env m, VCStoreErrM err m, VCStoreEnvM env m, FromJSON a, FromJSON g) => Maybe FilePath -> VCObjectHash -> m (VCMeta a g VCObject) Source #
fetchVCObjects :: (VCStoreLogM env m, VCStoreErrM err m, VCStoreEnvM env m, FromJSON a, FromJSON g) => [VCObjectHash] -> m (Map VCObjectHash (VCMeta a g VCObject)) Source #
fetchVCObjectClosureHashes :: (VCStoreLogM env m, VCStoreErrM err m, VCStoreEnvM env m) => VCObjectHash -> m [VCObjectHash] Source #
fetchVCObjectWithClosure :: (VCStoreLogM env m, VCStoreErrM err m, VCStoreEnvM env m, FromJSON a, FromJSON g) => VCObjectHash -> m (Map VCObjectHash (VCMeta a g VCObject)) Source #
calculateMissingVCObjects :: VCStoreEnvM env m => [VCObjectHash] -> m [VCObjectHash] Source #
fetchCurrentHead :: (VCStoreLogM env m, VCStoreErrM err m, VCStoreEnvM env m) => VCObjectHash -> m VCObjectHash Source #
fetchVCObjectHistory :: (VCStoreLogM env m, VCStoreErrM err m, VCStoreEnvM env m, FromJSON a, FromJSON g) => VCObjectHash -> m [VCMeta a g VCObjectHash] Source #
getAllHeads :: (VCStoreLogM env m, VCStoreEnvM env m) => m [VCObjectHash] Source #
fetchFunctionsForGroups :: (VCStoreLogM env m, VCStoreErrM err m, VCStoreEnvM env m, Ord g, FromJSON a, FromJSON g) => Set g -> m [VCMeta a g VCObjectHash] Source #