Table of Contents

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 class VersionControlDecorator : LinksDecoratorBase<uint>, IVersionControlLinks, INamedTypesLinks<uint>, ILinks<uint>, ILinks<uint, LinksConstants<uint>>, INamedTypes<uint>, IDisposable
Inheritance
LinksOperatorBase<uint>
LinksDecoratorBase<uint>
VersionControlDecorator
Implements
ILinks<uint>
ILinks<uint, LinksConstants<uint>>
Inherited Members
LinksDecoratorBase<uint>._constants
LinksDecoratorBase<uint>._facade
LinksDecoratorBase<uint>.Facade
LinksDecoratorBase<uint>.Constants
LinksOperatorBase<uint>._links
LinksOperatorBase<uint>.Links
Extension Methods

Constructors

public VersionControlDecorator(TransactionsDecorator transactions, INamedTypesLinks<uint> branchesStore, bool trace = false)

Parameters

transactions TransactionsDecorator
branchesStore INamedTypesLinks<uint>
trace bool

Fields

DefaultBranchName

Default name of the initial branch (analogous to git's main).

public const string DefaultBranchName = "main"

Field Value

string

Properties

CurrentBranch

public virtual string CurrentBranch { get; }

Property Value

string

CurrentSequence

public virtual long CurrentSequence { get; }

Property Value

long

Methods

BeginTransaction()

public virtual ITransaction<uint> BeginTransaction()

Returns

ITransaction<uint>

BeginTransactionAsync(CancellationToken)

public virtual Task<ITransaction<uint>> BeginTransactionAsync(CancellationToken cancellationToken = default)

Parameters

cancellationToken CancellationToken

Returns

Task<ITransaction<uint>>

Branch(string, long?)

public virtual void Branch(string name, long? from = null)

Parameters

name string
from long?

Checkout(long)

public virtual void Checkout(long sequence)

Parameters

sequence long

Create(IList<uint>?, WriteHandler<uint>?)

Creates the restriction.

public override uint Create(IList<uint>? substitution, WriteHandler<uint>? handler)

Parameters

substitution IList<uint>
handler WriteHandler<uint>

Returns

uint

The link

Delete(IList<uint>?, WriteHandler<uint>?)

Deletes the restriction.

public override uint Delete(IList<uint>? restriction, WriteHandler<uint>? handler)

Parameters

restriction IList<uint>

The restriction.

handler WriteHandler<uint>

Returns

uint

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()

Dispose(bool)

Rolls back and releases the open transaction. Derived decorators that own extra resources override this and call base.Dispose(disposing).

protected virtual void Dispose(bool disposing)

Parameters

disposing bool

GetByName(string)

public virtual uint GetByName(string name)

Parameters

name string

Returns

uint

GetName(uint)

public virtual string? GetName(uint link)

Parameters

link uint

Returns

string

ListBranches()

public virtual IReadOnlyList<BranchInfo> ListBranches()

Returns

IReadOnlyList<BranchInfo>

ListTags()

public virtual IReadOnlyDictionary<string, long> ListTags()

Returns

IReadOnlyDictionary<string, long>

MakeVersionControlDatabaseFilename(string)

Conventional sidecar filename for the version-control store.

public static string MakeVersionControlDatabaseFilename(string databaseFilename)

Parameters

databaseFilename string

Returns

string

Recover()

public virtual void Recover()

RemoveName(uint)

public virtual void RemoveName(uint link)

Parameters

link uint

SetName(uint, string)

public virtual uint SetName(uint link, string name)

Parameters

link uint
name string

Returns

uint

SwitchBranch(string)

public virtual void SwitchBranch(string name)

Parameters

name string

Tag(string, long?)

public virtual void Tag(string name, long? sequence = null)

Parameters

name string
sequence long?

TryGetTag(string, out long)

public virtual bool TryGetTag(string name, out long sequence)

Parameters

name string
sequence long

Returns

bool

Update(IList<uint>?, IList<uint>?, WriteHandler<uint>?)

Updates the restriction.

public override uint Update(IList<uint>? restriction, IList<uint>? substitution, WriteHandler<uint>? handler)

Parameters

restriction IList<uint>

The restriction.

substitution IList<uint>

The substitution.

handler WriteHandler<uint>

Returns

uint

The link