Source: requests/merge-users.js

/*
 This file is auto-generated, do not edit
*/

'use strict';
const rqs = require("./request");

/**
 * Merges interactions (purchases, ratings, bookmarks, detail views ...) of two different users under a single user ID. This is especially useful for online e-commerce applications working with anonymous users identified by unique tokens such as the session ID. In such applications, it may often happen that a user owns a persistent account, yet accesses the system anonymously while, e.g., putting items into a shopping cart. At some point in time, such as when the user wishes to confirm the purchase, (s)he logs into the system using his/her username and password. The interactions made under anonymous session ID then become connected with the persistent account, and merging these two together becomes desirable.
 * Merging happens between two users referred to as the *target* and the *source*. After the merge, all the interactions of the source user are attributed to the target user, and the source user is **deleted**.
 */
class MergeUsers extends rqs.Request {

  /**
   * Construct the request
   * @param {string} targetUserId - ID of the targer user.
   * @param {string} sourceUserId - ID of the source user.
   * @param {Object} optional - Optional parameters given as an object with structure name of the parameter: value
   * - Allowed parameters:
   *     - *cascadeCreate*
   *         - Type: boolean
   *         - Description: Sets whether the user *targetUserId* should be created if not present in the database.
   */
  constructor(targetUserId, sourceUserId, optional) {
    super('PUT', `/users/${targetUserId}/merge/${sourceUserId}`, 10000, false);
    this.targetUserId = targetUserId;
    this.sourceUserId = sourceUserId;
    optional = optional || {};
    this.cascadeCreate = optional.cascadeCreate;
  }

  /**
   * Get body parameters
   * @return {Object} The values of body parameters (name of parameter: value of the parameter)
   */
  bodyParameters() {
    let params = {};

    return params;
  }

  /**
   * Get query parameters
   * @return {Object} The values of query parameters (name of parameter: value of the parameter)
   */
  queryParameters() {
    let params = {};
    if (this.cascadeCreate !== undefined)
      params.cascadeCreate = this.cascadeCreate;
    return params;
  }
}

exports.MergeUsers = MergeUsers