Source: sql/Encoders.js

/*
 * Copyright 2016 IBM Corp.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

module.exports = function(kernelP) {
  return (function() {
    var Utils = require('../utils.js');

    var gKernelP = kernelP;

    /**
     * @returns {Promise.<Void>} A Promise that resolves to nothing.
     * @constructor
     * @class
     * @memberof module:eclairjs/sql
     */
    function Encoders() {
    }

    /**
     * An encoder for nullable boolean type.
     * The Scala primitive encoder is available as {@link scalaBoolean}.
     * @since EclairJS 0.7 Spark  1.6.0
     * @returns {module:eclairjs/sql.Encoder}
     */
    Encoders.BOOLEAN = function() {
      var Encoder = require('./Encoder')(gKernelP);

      var args = {
        target: Encoders,
        method: 'BOOLEAN',
        static: true,
        kernelP: gKernelP,
        returnType: Encoder
      };

      return Utils.generate(args);
    };

    /**
     * An encoder for nullable int type.
     * The Scala primitive encoder is available as {@link scalaInt}.
     * @since EclairJS 0.7 Spark  1.6.0
     * @returns {module:eclairjs/sql.Encoder}
     */
    Encoders.INT = function() {
      var Encoder = require('./Encoder')(gKernelP);

      var args = {
        target: Encoders,
        method: 'INT',
        static: true,
        kernelP: gKernelP,
        returnType: Encoder
      };

      return Utils.generate(args);
    };

    /**
     * An encoder for nullable float type.
     * The Scala primitive encoder is available as {@link scalaFloat}.
     * @since EclairJS 0.7 Spark  1.6.0
     * @returns {module:eclairjs/sql.Encoder}
     */
    Encoders.FLOAT = function() {
      var Encoder = require('./Encoder')(gKernelP);

      var args = {
        target: Encoders,
        method: 'FLOAT',
        static: true,
        kernelP: gKernelP,
        returnType: Encoder
      };

      return Utils.generate(args);
    };

    /**
     * An encoder for nullable double type.
     * The Scala primitive encoder is available as {@link scalaDouble}.
     * @since EclairJS 0.7 Spark  1.6.0
     * @returns {module:eclairjs/sql.Encoder}
     */
    Encoders.DOUBLE = function() {
      var Encoder = require('./Encoder')(gKernelP);

      var args = {
        target: Encoders,
        method: 'DOUBLE',
        static: true,
        kernelP: gKernelP,
        returnType: Encoder
      };

      return Utils.generate(args);
    };

    /**
     * An encoder for nullable string type.
     *
     * @since EclairJS 0.7 Spark  1.6.0
     * @returns {module:eclairjs/sql.Encoder}
     */
    Encoders.STRING = function() {
      var Encoder = require('./Encoder')(gKernelP);

      var args = {
        target: Encoders,
        method: 'STRING',
        static: true,
        kernelP: gKernelP,
        returnType: Encoder
      };

      return Utils.generate(args);
    };

    /**
     * An encoder for nullable date type.
     *
     * @since EclairJS 0.7 Spark  1.6.0
     * @returns {module:eclairjs/sql.Encoder}
     */
    Encoders.DATE = function() {
      var Encoder = require('./Encoder')(gKernelP);

      var args = {
        target: Encoders,
        method: 'DATE',
        static: true,
        kernelP: gKernelP,
        returnType: Encoder
      };

      return Utils.generate(args);
    };

    /**
     * An encoder for nullable timestamp type.
     *
     * @since EclairJS 0.7 Spark  1.6.0
     * @returns {module:eclairjs/sql.Encoder}
     */
    Encoders.TIMESTAMP = function() {
      var Encoder = require('./Encoder')(gKernelP);

      var args = {
        target: Encoders,
        method: 'TIMESTAMP',
        static: true,
        kernelP: gKernelP,
        returnType: Encoder
      };

      return Utils.generate(args);
    };

    /**
     * An encoder for 2-ary tuples.
     *
     * @since EclairJS 0.7 Spark  1.6.0
     * @param {module:eclairjs/sql.Encoder} e1
     * @param {module:eclairjs/sql.Encoder} e2
     * @returns {module:eclairjs/sql.Encoder}
     */
    Encoders.tuple2 = function(e1,e2) {
      var Encoder = require('./Encoder')(gKernelP);

      var args = {
        target: Encoders,
        method: 'tuple2',
        args: Utils.wrapArguments(arguments),
        static: true,
        kernelP: gKernelP,
        returnType: Encoder
      };

      return Utils.generate(args);
    };

    /**
     * An encoder for 3-ary tuples.
     *
     * @since EclairJS 0.7 Spark  1.6.0
     * @param {module:eclairjs/sql.Encoder} e1
     * @param {module:eclairjs/sql.Encoder} e2
     * @param {module:eclairjs/sql.Encoder} e3
     * @returns {module:eclairjs/sql.Encoder}
     */
    Encoders.tuple3 = function(e1,e2,e3) {
      var Encoder = require('./Encoder')(gKernelP);

      var args = {
        target: Encoders,
        method: 'tuple3',
        args: Utils.wrapArguments(arguments),
        static: true,
        kernelP: gKernelP,
        returnType: Encoder
      };

      return Utils.generate(args);
    };

    /**
     * An encoder for 4-ary tuples.
     *
     * @since EclairJS 0.7 Spark  1.6.0
     * @param {module:eclairjs/sql.Encoder} e1
     * @param {module:eclairjs/sql.Encoder} e2
     * @param {module:eclairjs/sql.Encoder} e3
     * @param {module:eclairjs/sql.Encoder} e4
     * @returns {module:eclairjs/sql.Encoder}
     */
    Encoders.tuple4 = function(e1,e2,e3,e4) {
      var Encoder = require('./Encoder')(gKernelP);

      var args = {
        target: Encoders,
        method: 'tuple4',
        args: Utils.wrapArguments(arguments),
        static: true,
        kernelP: gKernelP,
        returnType: Encoder
      };

      return Utils.generate(args);
    };

    /**
     * An encoder for 5-ary tuples.
     *
     * @since EclairJS 0.7 Spark  1.6.0
     * @param {module:eclairjs/sql.Encoder} e1
     * @param {module:eclairjs/sql.Encoder} e2
     * @param {module:eclairjs/sql.Encoder} e3
     * @param {module:eclairjs/sql.Encoder} e4
     * @param {module:eclairjs/sql.Encoder} e5
     * @returns {module:eclairjs/sql.Encoder}
     */
    Encoders.tuple5 = function(e1,e2,e3,e4,e5) {
      var Encoder = require('./Encoder')(gKernelP);

      var args = {
        target: Encoders,
        method: 'tuple5',
        args: Utils.wrapArguments(arguments),
        static: true,
        kernelP: gKernelP,
        returnType: Encoder
      };

      return Utils.generate(args);
    };

    /**
     * An encoder for 4-ary tuples.
     *
     * @since EclairJS 0.7 Spark  1.6.0
     * @param {object} schema - object with keys corresponding to JSON field names (or getter functions), and values indicating Datatype
     * @returns {module:eclairjs/sql.Encoder}
     */
    Encoders.json = function() {
      var Encoder = require('./Encoder')(gKernelP);

      var args = {
        target: Encoders,
        method: 'json',
        args: Utils.wrapArguments(arguments),
        static: true,
        kernelP: gKernelP,
        returnType: Encoder
      };

      return Utils.generate(args);
    };

    Encoders.moduleLocation = '/sql/Encoders';

    return Encoders;
  })();
};