/**
 * SQL Query Builder Utilities
 */

/**
 * Build dynamic WHERE clause from conditions
 * @param {Array} conditions - Array of SQL conditions
 * @returns {string} WHERE clause or empty string
 */
const buildWhereClause = (conditions) => {
  return conditions.length > 0 ? ` WHERE ${conditions.join(" AND ")}` : "";
};

/**
 * Build LIMIT/OFFSET clause
 * @param {number} limit - Max results
 * @param {number} offset - Results to skip
 * @param {number} paramOffset - Current parameter index
 * @returns {Object} { clause, params }
 */
const buildPagination = (limit, offset, paramOffset = 1) => {
  return {
    clause: ` LIMIT $${paramOffset} OFFSET $${paramOffset + 1}`,
    params: [parseInt(limit) || 100, parseInt(offset) || 0],
  };
};

/**
 * Build search condition for multiple fields
 * @param {string} searchTerm - Search term
 * @param {Array} fields - Fields to search in
 * @param {number} paramIndex - Parameter index
 * @returns {string} SQL condition
 */
const buildSearchCondition = (searchTerm, fields, paramIndex) => {
  const conditions = fields.map(
    (field) => `LOWER(${field}) LIKE $${paramIndex}`,
  );
  return `(${conditions.join(" OR ")})`;
};

module.exports = {
  buildWhereClause,
  buildPagination,
  buildSearchCondition,
};
