emitBatch method

void emitBatch(
  1. List<TableEventSpec> specs,
  2. EventContext context
)

Implementation

void emitBatch(List<TableEventSpec> specs, EventContext context) {
  _refreshRowsNotifier();
  if (specs.isEmpty) return;

  final events = <TableEvent<T>>[];
  for (final spec in specs) {
    switch (spec.kind) {
      case TableEventKind.insert:
        events.add(TableInsertEvent<T>(context, spec.newRow as T));
      case TableEventKind.update:
        events.add(
          TableUpdateEvent<T>(context, spec.oldRow as T, spec.newRow as T),
        );
      case TableEventKind.delete:
        events.add(TableDeleteEvent<T>(context, spec.oldRow as T));
    }
  }

  for (final event in events) {
    switch (event) {
      case TableInsertEvent<T>():
        _onInsertController.add(event);
      case TableUpdateEvent<T>():
        _onUpdateController.add(event);
      case TableDeleteEvent<T>():
        _onDeleteController.add(event);
    }
  }

  lastBatch.value = TransactionBatch<T>(context, events);
}