better-sqlite3/benchmark/types/insert.js

17 lines
747 B
JavaScript

'use strict';
exports.readonly = false; // Inserting rows individually (`.run()`)
exports['better-sqlite3'] = (db, { table, columns }) => {
const stmt = db.prepare(`INSERT INTO ${table} (${columns.join(', ')}) VALUES (${columns.map(x => '@' + x).join(', ')})`);
const row = db.prepare(`SELECT * FROM ${table} LIMIT 1`).get();
return () => stmt.run(row);
};
exports['node-sqlite3'] = async (db, { table, columns }) => {
const sql = `INSERT INTO ${table} (${columns.join(', ')}) VALUES (${columns.map(x => '@' + x).join(', ')})`;
const row = Object.assign({}, ...Object.entries(await db.get(`SELECT * FROM ${table} LIMIT 1`))
.filter(([k]) => columns.includes(k))
.map(([k, v]) => ({ ['@' + k]: v })));
return () => db.run(sql, row);
};