mirror of
https://github.com/smogon/pokemon-showdown.git
synced 2026-09-13 11:45:40 -05:00
Add a library for running SQLite databases in threads (#7350)
This commit is contained in:
30
test/lib/sql.js
Normal file
30
test/lib/sql.js
Normal file
@@ -0,0 +1,30 @@
|
||||
"use strict";
|
||||
const {SQL} = require('../../lib/sql');
|
||||
const assert = require('../assert').strict;
|
||||
|
||||
const database = SQL(`:memory:`);
|
||||
|
||||
describe(`SQLite worker wrapper`, async () => {
|
||||
// prepare statements and set up table
|
||||
await database.exec(`CREATE TABLE IF NOT EXISTS test (col TEXT, col2 TEXT)`);
|
||||
const select = await database.prepare(`SELECT * FROM test`); // 0
|
||||
const insert = await database.prepare(`INSERT INTO test (col, col2) VALUES (?, ?)`); // 1
|
||||
it(`should require you to prepare a statement before running`, async () => {
|
||||
assert.throws(async () => {
|
||||
await database.get('SELECT col FROM test');
|
||||
}, /Prepare a statement before using another database function with SQLDatabase.prepare/);
|
||||
});
|
||||
it(`should retrieve one line from Database.get`, async () => {
|
||||
const result = await database.get(select);
|
||||
assert(result.length, 1);
|
||||
});
|
||||
it(`should support both statement strings and corresponding numbers`, async () => {
|
||||
await database.run(`INSERT INTO test (col, col2) VALUES(?, ?)`, ['a', 'b']);
|
||||
await database.run(insert, ['a', 'b']);
|
||||
});
|
||||
it(`should support both inline and object params`, async () => {
|
||||
const num = await database.prepare(`INSERT INTO test (col, col2) VALUES($col, $col2)`);
|
||||
await database.run(insert, ['a', 'b']);
|
||||
await database.run(num, {col: 'a', col1: 'b'});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user