tiny-essentials
Version:
Collection of small, essential scripts designed to be used across various projects. These simple utilities are crafted for speed, ease of use, and versatility.
34 lines • 1.88 kB
text/typescript
/**
* Executes a paginated query on the database, returning the result set along with pagination metadata.
*
* @async
* @param {Record<string, any>} db - Database instance with a `.query(sql, params)` method.
* @param {Object} data - Query configuration options.
* @param {string} data.from - The table or view name to query from.
* @param {string} [data.where] - Optional WHERE clause without the keyword (e.g., `"status = 'active'"`).
* @param {Array<*>} [data.params] - Optional parameters for the SQL query placeholders.
* @param {string} [data.select="*"] - Fields to select in the query.
* @param {string} data.order - SQL ORDER BY clause (e.g., `"created_at DESC"`).
* @param {number} [data.limit] - Number of rows per page.
* @param {number|string} [data.page] - Current page number or `'last'` to get the last page.
* @param {number} [data.count] - Optional total count override (skip count query if provided).
* @param {boolean} [data.count_rows=false] - Whether to include a row number for each result.
* @returns {Promise<Record<string, any>>} Resolves with pagination metadata and result set.
* @returns {number} return.count - Total number of matched rows.
* @returns {Array<*>} return.data - The paginated data from the query.
* @returns {number} return.pages - Total number of pages.
* @returns {number} return.page - Current page number after validation.
* @returns {number} return.start - Row offset used in the query.
*/
export default function pagination(db: Record<string, any>, data: {
from: string;
where?: string | undefined;
params?: any[] | undefined;
select?: string | undefined;
order: string;
limit?: number | undefined;
page?: string | number | undefined;
count?: number | undefined;
count_rows?: boolean | undefined;
}): Promise<Record<string, any>>;
//# sourceMappingURL=pagination.d.mts.map