<?php
/**
 * @package     woobooking.Platform
 * @subpackage  Database
 *
 *  Copyright (C) 2005 - 2016 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE
 */

namespace WpBookingHotel\Database\query;
defined('_WPBOOKINGHOTEL_EXEC') or die;

/**
 * woobooking Database Query Limitable Interface.
 * Adds bind/unbind methods as well as a getBounded() method
 * to retrieve the stored bounded variables on demand prior to
 * query execution.
 *
 * @since  12.1
 */
interface DatabaseQueryLimitable
{
    /**
     * Method to modify a query already in string format with the needed
     * additions to make the query limited to a particular number of
     * results, or start at a particular offset. This method is used
     * automatically by the __toString() method if it detects that the
     * query implements the DatabaseQueryLimitable interface.
     *
     * @param string $query The query in string format
     * @param integer $limit The limit for the result set
     * @param integer $offset The offset for the result set
     *
     * @return  string
     *
     * @since   12.1
     */
    public function processLimit($query, $limit, $offset = 0);

    /**
     * Sets the offset and limit for the result set, if the database driver supports it.
     *
     * Usage:
     * $query->setLimit(100, 0); (retrieve 100 rows, starting at first record)
     * $query->setLimit(50, 50); (retrieve 50 rows, starting at 50th record)
     *
     * @param integer $limit The limit for the result set
     * @param integer $offset The offset for the result set
     *
     * @return  DatabaseQuery  Returns this object to allow chaining.
     *
     * @since   12.1
     */
    public function setLimit($limit = 0, $offset = 0);
}
