JoinOperator.fromJson constructor

JoinOperator.fromJson(
  1. Object? json_
)

Returns a new instance from a JSON value. May throw if the value does not have the expected structure.

Implementation

factory JoinOperator.fromJson(Object? json_) {
  Object? json = json_;
  if (json is Map) {
    final MapEntry(:key, :value) =
        json.entries.firstWhere((e) => e.key != 'runtimeType');
    json = (
      key is int ? key : _spec.cases.indexWhere((c) => c.label == key),
      value,
    );
  }
  return switch (json) {
    (0, final value) ||
    [0, final value] =>
      JoinOperatorInner(JoinConstraint.fromJson(value)),
    (1, final value) ||
    [1, final value] =>
      JoinOperatorLeftOuter(JoinConstraint.fromJson(value)),
    (2, final value) ||
    [2, final value] =>
      JoinOperatorRightOuter(JoinConstraint.fromJson(value)),
    (3, final value) ||
    [3, final value] =>
      JoinOperatorFullOuter(JoinConstraint.fromJson(value)),
    (4, null) || [4, null] => const JoinOperatorCrossJoin(),
    (5, final value) ||
    [5, final value] =>
      JoinOperatorLeftSemi(JoinConstraint.fromJson(value)),
    (6, final value) ||
    [6, final value] =>
      JoinOperatorRightSemi(JoinConstraint.fromJson(value)),
    (7, final value) ||
    [7, final value] =>
      JoinOperatorLeftAnti(JoinConstraint.fromJson(value)),
    (8, final value) ||
    [8, final value] =>
      JoinOperatorRightAnti(JoinConstraint.fromJson(value)),
    (9, null) || [9, null] => const JoinOperatorCrossApply(),
    (10, null) || [10, null] => const JoinOperatorOuterApply(),
    _ => throw Exception('Invalid JSON $json_'),
  };
}