Class VersionControlDecorator
- Namespace
- Foundation.Data.Doublets.Cli
- Assembly
- Foundation.Data.Doublets.Cli.dll
Decorator that sits above TransactionsDecorator and adds time travel (Checkout(long)), branching (Branch(string, long?), SwitchBranch(string)), and tagging (Tag(string, long?)) over the transitions log. Optional — when not instantiated the underlying transactions decorator behaves identically.
public sealed class VersionControlDecorator : LinksDecoratorBase<uint>, IVersionControlLinks, INamedTypesLinks<uint>, ILinks<uint>, ILinks<uint, LinksConstants<uint>>, INamedTypes<uint>, IDisposable
- Implements
-
ILinks<uint>
- Inherited Members
-
LinksDecoratorBase<uint>.FacadeLinksDecoratorBase<uint>.ConstantsLinksOperatorBase<uint>.Links
- Extension Methods
Constructors
VersionControlDecorator(TransactionsDecorator, INamedTypesLinks<uint>, bool)
public VersionControlDecorator(TransactionsDecorator transactions, INamedTypesLinks<uint> branchesStore, bool trace = false)
Parameters
transactionsTransactionsDecoratorbranchesStoreINamedTypesLinks<uint>tracebool
Fields
DefaultBranchName
Default name of the initial branch (analogous to git's main).
public const string DefaultBranchName = "main"
Field Value
Properties
CurrentBranch
public string CurrentBranch { get; }
Property Value
CurrentSequence
public long CurrentSequence { get; }
Property Value
Methods
BeginTransaction()
public ITransaction BeginTransaction()
Returns
BeginTransactionAsync(CancellationToken)
public Task<ITransaction> BeginTransactionAsync(CancellationToken cancellationToken = default)
Parameters
cancellationTokenCancellationToken
Returns
Branch(string, long?)
public void Branch(string name, long? from = null)
Parameters
Checkout(long)
public void Checkout(long sequence)
Parameters
sequencelong
Create(IList<uint>?, WriteHandler<uint>?)
Creates the restriction.
public override uint Create(IList<uint>? substitution, WriteHandler<uint>? handler)
Parameters
Returns
- uint
The link
Delete(IList<uint>?, WriteHandler<uint>?)
Deletes the restriction.
public override uint Delete(IList<uint>? restriction, WriteHandler<uint>? handler)
Parameters
Returns
Dispose()
Rolls back and releases the transaction that is still open, if any. The wrapped transactions decorator and branches store are owned by the caller and are deliberately left untouched.
public void Dispose()
GetByName(string)
public uint GetByName(string name)
Parameters
namestring
Returns
GetName(uint)
public string? GetName(uint link)
Parameters
linkuint
Returns
ListBranches()
public IReadOnlyList<BranchInfo> ListBranches()
Returns
ListTags()
public IReadOnlyDictionary<string, long> ListTags()
Returns
MakeVersionControlDatabaseFilename(string)
Conventional sidecar filename for the version-control store.
public static string MakeVersionControlDatabaseFilename(string databaseFilename)
Parameters
databaseFilenamestring
Returns
Recover()
public void Recover()
RemoveName(uint)
public void RemoveName(uint link)
Parameters
linkuint
SetName(uint, string)
public uint SetName(uint link, string name)
Parameters
Returns
SwitchBranch(string)
public void SwitchBranch(string name)
Parameters
namestring
Tag(string, long?)
public void Tag(string name, long? sequence = null)
Parameters
TryGetTag(string, out long)
public bool TryGetTag(string name, out long sequence)
Parameters
Returns
Update(IList<uint>?, IList<uint>?, WriteHandler<uint>?)
Updates the restriction.
public override uint Update(IList<uint>? restriction, IList<uint>? substitution, WriteHandler<uint>? handler)
Parameters
restrictionIList<uint>The restriction.
substitutionIList<uint>The substitution.
handlerWriteHandler<uint>
Returns
- uint
The link