MssqlWriteEngine<TRow> class

The one place insert, update, delete and upsert are executed.

Every write path funnels through here so three questions have one answer each rather than one per call site: which readback SQL the target table accepts, how many of the caller's rows actually changed, and what happens to a write whose guard fails.

Immutable and cheap: withSession makes the transaction-scoped copy a guard needs, so nothing here holds mutable state between calls.

Annotations
  • @immutable

Constructors

MssqlWriteEngine(MssqlSession session, {required MssqlTableBinding<TRow> binding, required MssqlDialect dialect, MssqlTriggerKind? triggers, MssqlWriteReadback? readback, MssqlChangeHub? changes})

Properties

binding → MssqlTableBinding<TRow>
final
changes → MssqlChangeHub?
final
dialect → MssqlDialect
final
hashCode → int
The hash code for this object.
no setterinherited
insertReadback → MssqlWriteReadback
Which readback an insert into this table will use.
no setter
readback → MssqlWriteReadback?
The caller's declared strategy, overriding what the table implies.
final
runtimeType → Type
A representation of the runtime type of the object.
no setterinherited
session → MssqlSession
final
triggers → MssqlTriggerKind
What the target table carries, as generated code described it.
final

Methods

deleteWhere({required List<MssqlCondition> where, required String operation, bool allRows = false, List<MssqlCondition> scopes = const <MssqlCondition>[], bool readRows = false}) → Future<MssqlWriteOutcome>
Removes every row matching where.
guard({required String operation, required int expected, required Future<MssqlWriteOutcome> write(MssqlWriteEngine<TRow> engine)}) → Future<MssqlWriteOutcome>
Runs write and insists it affected exactly expected rows.
insertRow(MssqlWriteAssignments values, {bool readRow = true}) → Future<MssqlWriteOutcome>
Inserts one row and reads back what the server stored.
insertSelect({required List<String> columns, required MssqlSelectQuery query, List<MssqlCte> ctes = const <MssqlCte>[]}) → Future<MssqlWriteOutcome>
INSERT … SELECT, with the statement's WITH clause where T-SQL wants it: at the very start, before INSERT.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() → String
A string representation of this object.
inherited
updateWhere({required MssqlWriteAssignments values, required List<MssqlCondition> where, required String operation, bool allRows = false, List<MssqlCondition> scopes = const <MssqlCondition>[], bool readRows = false}) → Future<MssqlWriteOutcome>
Writes values to every row matching where.
upsertRow({required MssqlWriteAssignments matching, required MssqlWriteAssignments insertValues, required MssqlWriteAssignments updateValues, bool readRow = true}) → Future<MssqlWriteOutcome>
Updates the row matching identifies or inserts it, then reads it back.
withSession(MssqlSession other) → MssqlWriteEngine<TRow>
The same engine against another session, which a guard needs when it has to open a transaction of its own.

Operators

operator ==(Object other) → bool
The equality operator.
inherited