Struct BulkWriteResult
- Namespace
- FishMMO.Database
- Assembly
- FishMMO-DB.dll
What a bulk write actually did, as distinct from whether it errored.
public readonly struct BulkWriteResult
- Inherited Members
Remarks
A batched, version-gated write has a richer outcome than success or failure, and collapsing it to a boolean loses the part callers need. Rows go missing between the caller's list and the database for two entirely different reasons, and only one of them is benign:
- Filtered — the service refused to attempt the row at all: the character is deleted, the template is unresolvable, or two rows in the batch collided on the same key. The caller asked for something that could not be done, and nothing about the database's state explains it. This is worth surfacing.
- Superseded — the row was attempted and lost the version race, because the database already holds a version at least as new. Nothing is lost: the stored value is the more recent of the two. Routine under concurrency, and not a failure.
The distinction matters because the caller cannot recover it on its own. The service deduplicates and filters before writing, so comparing Applied against the length of the list the caller passed in would attribute both causes to whichever the caller happened to assume.
Constructors
BulkWriteResult(int, int, int)
Initializes a new instance of the BulkWriteResult struct.
public BulkWriteResult(int supplied, int attempted, int applied)
Parameters
suppliedintRows the caller handed over.
attemptedintRows the statement tried.
appliedintRows written.
Properties
Applied
Rows inserted or updated.
public int Applied { get; }
Property Value
Attempted
Rows the statement actually tried, after the service dropped duplicates and anything belonging to a character or template it could not resolve.
public int Attempted { get; }
Property Value
Empty
An outcome with nothing to do — an empty or fully filtered batch.
public static BulkWriteResult Empty { get; }
Property Value
Filtered
Rows the service declined to attempt. Non-zero means the caller's batch contained something it could not act on — see the remarks on BulkWriteResult.
public int Filtered { get; }
Property Value
IsComplete
True when every supplied row was written.
public bool IsComplete { get; }
Property Value
Superseded
Rows attempted but not written, because the database already held a version at least as new. Benign.
public int Superseded { get; }
Property Value
Supplied
Rows the caller handed to the service.
public int Supplied { get; }
Property Value
Methods
ToString()
Returns a short description of the outcome, suitable for a log line.
public override string ToString()
Returns
- string
Formatted counts.
Operators
operator +(BulkWriteResult, BulkWriteResult)
Adds two outcomes, for a service that writes its batch in more than one statement.
public static BulkWriteResult operator +(BulkWriteResult left, BulkWriteResult right)
Parameters
leftBulkWriteResultFirst outcome.
rightBulkWriteResultSecond outcome.
Returns
- BulkWriteResult
The combined outcome.