'use strict';

let helpers = require('../helpers');

/**
 * Driver for Firebird databases
 *
 * @module drivers/firebird
 */
module.exports = (() => {
	delete require.cache[require.resolve('../Driver')];
	let driver = require('../Driver');

	driver.hasTruncate = false;

	/**
	 * Set the limit clause

	 * @param {String} origSql - SQL statement to modify
	 * @param {Number} limit - Maximum number of rows to fetch
	 * @param {Number|null} offset - Number of rows to skip
	 * @return {String} - Modified SQL statement
	 */
	driver.limit = (origSql, limit, offset) => {
		let sql = `FIRST ${limit}`;

		if (helpers.isNumber(offset)) {
			sql += ` SKIP ${offset}`;
		}

		return origSql.replace(/SELECT/i, `SELECT ${sql}`);
	};

	/**
	 * SQL to insert a group of rows
	 *
	 * @return {void}
	 * @throws {Error}
	 */
	driver.insertBatch = () => {
		throw new Error('Not Implemented');
	};

	return driver;
})();
