SqlFunction.fromJson constructor

SqlFunction.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 SqlFunction.fromJson(Object? json_) {
  final json = json_ is Map
      ? _spec.fields.map((f) => json_[f.label]).toList(growable: false)
      : json_;
  return switch (json) {
    [
      final name,
      final args,
      final over,
      final distinct,
      final special,
      final orderBy
    ] ||
    (
      final name,
      final args,
      final over,
      final distinct,
      final special,
      final orderBy
    ) =>
      SqlFunction(
        name: (name! as Iterable).map(Ident.fromJson).toList(),
        args: (args! as Iterable).map(FunctionArg.fromJson).toList(),
        over:
            Option.fromJson(over, (some) => WindowType.fromJson(some)).value,
        distinct: distinct! as bool,
        special: special! as bool,
        orderBy: (orderBy! as Iterable).map(OrderByExpr.fromJson).toList(),
      ),
    _ => throw Exception('Invalid JSON $json_')
  };
}