HEX
Server: nginx/1.24.0
System: Linux nowruzgan 6.8.0-57-generic #59-Ubuntu SMP PREEMPT_DYNAMIC Sat Mar 15 17:40:59 UTC 2025 x86_64
User: babak (1000)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: /var/dev/nowruzgan/rest/node_modules/waterline-sql-builder/index.js
//  ██╗    ██╗ █████╗ ████████╗███████╗██████╗ ██╗     ██╗███╗   ██╗███████╗
//  ██║    ██║██╔══██╗╚══██╔══╝██╔════╝██╔══██╗██║     ██║████╗  ██║██╔════╝
//  ██║ █╗ ██║███████║   ██║   █████╗  ██████╔╝██║     ██║██╔██╗ ██║█████╗
//  ██║███╗██║██╔══██║   ██║   ██╔══╝  ██╔══██╗██║     ██║██║╚██╗██║██╔══╝
//  ╚███╔███╔╝██║  ██║   ██║   ███████╗██║  ██║███████╗██║██║ ╚████║███████╗
//   ╚══╝╚══╝ ╚═╝  ╚═╝   ╚═╝   ╚══════╝╚═╝  ╚═╝╚══════╝╚═╝╚═╝  ╚═══╝╚══════╝
//
//  ███████╗ ██████╗ ██╗         ██████╗ ██╗   ██╗██╗██╗     ██████╗ ███████╗██████╗
//  ██╔════╝██╔═══██╗██║         ██╔══██╗██║   ██║██║██║     ██╔══██╗██╔════╝██╔══██╗
//  ███████╗██║   ██║██║         ██████╔╝██║   ██║██║██║     ██║  ██║█████╗  ██████╔╝
//  ╚════██║██║▄▄ ██║██║         ██╔══██╗██║   ██║██║██║     ██║  ██║██╔══╝  ██╔══██╗
//  ███████║╚██████╔╝███████╗    ██████╔╝╚██████╔╝██║███████╗██████╔╝███████╗██║  ██║
//  ╚══════╝ ╚══▀▀═╝ ╚══════╝    ╚═════╝  ╚═════╝ ╚═╝╚══════╝╚═════╝ ╚══════╝╚═╝  ╚═╝
//
// Use Waterline Statements to generate a SQL query that can be used in one of
// the many supported drivers or run independently.

var Knex = require('knex');
var Utils = require('waterline-utils');
var Sequelizer = require('./lib/sequelizer');

module.exports = function sqlBuilder(options) {
  if (!options.dialect) {
    throw new Error('Missing Dialect!');
  }

  // Build up a Knex instance to use in the query builder
  var knexInstance = Knex({
    dialect: options.dialect,
    useNullAsDefault: true
  });


  return {

    //  ╔═╗╔═╗╔╗╔╔═╗╦═╗╔═╗╔╦╗╔═╗╦═╗
    //  ║ ╦║╣ ║║║║╣ ╠╦╝╠═╣ ║ ║ ║╠╦╝
    //  ╚═╝╚═╝╝╚╝╚═╝╩╚═╩ ╩ ╩ ╚═╝╩╚═
    // This the main function used by the adapters. Given a Statement, use the
    // query parser to generate a token tree and then build up a SQL string.
    generate: function generate(query) {
      // Tokenize the values
      var tokens = Utils.query.tokenizer(query);

      // Analyze the tokens
      var tree = Utils.query.analyzer(tokens);

      // Generate the SQL
      var sql = Sequelizer({
        knex: knexInstance,
        tree: tree
      });

      return sql;
    },

    //  ╔═╗╔═╗╔═╗ ╦ ╦╔═╗╦  ╦╔═╗╔═╗╦═╗
    //  ╚═╗║╣ ║═╬╗║ ║║╣ ║  ║╔═╝║╣ ╠╦╝
    //  ╚═╝╚═╝╚═╝╚╚═╝╚═╝╩═╝╩╚═╝╚═╝╩╚═
    // Given a token tree from the query parser, build up a SQL string.
    sequelizer: function sequelizer(tree) {
      return Sequelizer({
        knex: knexInstance,
        tree: tree
      });
    }
  };
};