var _ = require('lodash'), db = require('../../../data/db'), // private doRaw, // public getTables, getIndexes, getColumns; doRaw = function doRaw(query, transaction, fn) { if (!fn) { fn = transaction; transaction = null; } return (transaction || db.knex).raw(query).then(function (response) { return fn(response); }); }; getTables = function getTables(transaction) { return doRaw('select * from sqlite_master where type = "table"', transaction, function (response) { return _.reject(_.map(response, 'tbl_name'), function (name) { return name === 'sqlite_sequence'; }); }); }; getIndexes = function getIndexes(table, transaction) { return doRaw('pragma index_list("' + table + '")', transaction, function (response) { return _.flatten(_.map(response, 'name')); }); }; getColumns = function getColumns(table, transaction) { return doRaw('pragma table_info("' + table + '")', transaction, function (response) { return _.flatten(_.map(response, 'name')); }); }; module.exports = { getTables: getTables, getIndexes: getIndexes, getColumns: getColumns };