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 sealed 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>.Facade
LinksDecoratorBase<uint>.Constants
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 string CurrentBranch { get; }

Property Value

string

CurrentSequence

public long CurrentSequence { get; }

Property Value

long

Methods

BeginTransaction()

public ITransaction BeginTransaction()

Returns

ITransaction

BeginTransactionAsync(CancellationToken)

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

Parameters

cancellationToken CancellationToken

Returns

Task<ITransaction>

Branch(string, long?)

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

Parameters

name string
from long?

Checkout(long)

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

GetByName(string)

public uint GetByName(string name)

Parameters

name string

Returns

uint

GetName(uint)

public string? GetName(uint link)

Parameters

link uint

Returns

string

ListBranches()

public IReadOnlyList<BranchInfo> ListBranches()

Returns

IReadOnlyList<BranchInfo>

ListTags()

public 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 void Recover()

RemoveName(uint)

public void RemoveName(uint link)

Parameters

link uint

SetName(uint, string)

public uint SetName(uint link, string name)

Parameters

link uint
name string

Returns

uint

SwitchBranch(string)

public void SwitchBranch(string name)

Parameters

name string

Tag(string, long?)

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

Parameters

name string
sequence long?

TryGetTag(string, out long)

public 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