All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.faunadb.client.query.Fn Maven / Gradle / Ivy

package com.faunadb.client.query;

import com.fasterxml.jackson.annotation.JsonValue;

import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

final class Fn {

  private static abstract class Unescaped extends Expr {
    final T body;

    private Unescaped(T body) {
      this.body = body;
    }

    @Override
    @JsonValue
    protected T toJson() {
      return body;
    }
  }

  private static final class UnescapedObject extends Unescaped> {
    private UnescapedObject(Map body) {
      super(Collections.unmodifiableMap(body));
    }
  }

  private static final class UnescapedArray extends Unescaped> {
    private UnescapedArray(List body) {
      super(Collections.unmodifiableList(body));
    }
  }

  static Expr apply(List args) {
    return new UnescapedArray(args);
  }

  static Expr apply(Map args) {
    return new UnescapedObject(args);
  }

  static Expr apply(String k1, Expr p1) {
    Map kvs = new LinkedHashMap<>();
    kvs.put(k1, p1);
    return apply(kvs);
  }

  static Expr apply(String k1, Expr p1, String k2, Expr p2) {
    Map kvs = new LinkedHashMap<>();
    kvs.put(k1, p1);
    kvs.put(k2, p2);
    return apply(kvs);
  }

  static Expr apply(String k1, Expr p1, String k2, Expr p2, String k3, Expr p3) {
    Map kvs = new LinkedHashMap<>();
    kvs.put(k1, p1);
    kvs.put(k2, p2);
    kvs.put(k3, p3);
    return apply(kvs);
  }

  static Expr apply(String k1, Expr p1, String k2, Expr p2, String k3, Expr p3, String k4, Expr p4) {
    Map kvs = new LinkedHashMap<>();
    kvs.put(k1, p1);
    kvs.put(k2, p2);
    kvs.put(k3, p3);
    kvs.put(k4, p4);
    return apply(kvs);
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy