getHandler method

CommandHandler<TState>? getHandler(
  1. Command command
)

Get a handler for a command

Implementation

CommandHandler<TState>? getHandler(Command command) {
  // First try to find by command type
  final handler = _handlers[command.runtimeType];
  if (handler != null && handler.canHandle(command)) {
    return handler;
  }

  // Then try aggregate handlers
  if (command is TargetedCommand) {
    final aggregateHandler = _aggregateHandlers[command.aggregateId];
    if (aggregateHandler != null && aggregateHandler.canHandle(command)) {
      return aggregateHandler;
    }
  }

  // Finally, search all handlers
  for (final h in _handlers.values) {
    if (h.canHandle(command)) {
      return h;
    }
  }

  return null;
}