UNPKG

@opengis/fastify-table

Version:

core-plugins

46 lines (45 loc) 1.33 kB
/* eslint-disable no-console */ function init(client) { if (!client) { return; } const rows = client.prepare(`WITH tables AS ( SELECT name AS table_name FROM sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%' ), pk_columns AS ( SELECT m.name AS table_name, ti.name AS column_name, ti.pk FROM sqlite_master m JOIN pragma_table_info(m.name) AS ti WHERE ti.pk = 1 ) SELECT table_name, column_name FROM pk_columns WHERE table_name IN ( SELECT table_name FROM pk_columns GROUP BY table_name HAVING COUNT(*) = 1 ) ORDER BY table_name;`).all(); const pk = Object.fromEntries(rows.map((row) => [row.table_name, row.column_name])); const tlist = client.prepare('SELECT name FROM sqlite_master WHERE type=\'table\' AND name NOT LIKE \'sqlite_%\';').all().reduce((acc, curr) => { acc.push(curr.name); return acc; }, []); async function query(q, args = []) { const data = client.prepare(q.replace(/\$\d+/g, '?')).all(...args); return Promise.resolve({ rows: data, rowCount: data.length }); } Object.assign(client, { query, pk, tlist, }); console.log('sqlite db connected', client.name || ':memory:'); } export default init;