mirror of
https://github.com/knex/knex.git
synced 2025-07-10 10:31:43 +00:00
59 lines
1.6 KiB
JavaScript
59 lines
1.6 KiB
JavaScript
const { expect } = require('chai');
|
|
const {
|
|
Db,
|
|
getAllDbs,
|
|
getKnexForDb,
|
|
} = require('../../util/knex-instance-provider');
|
|
|
|
describe('Selects', () => {
|
|
describe('FTS queries', () => {
|
|
getAllDbs()
|
|
// only sqlite is currently supported
|
|
.filter((db) => db === Db.SQLite)
|
|
.forEach((db) => {
|
|
describe(db, () => {
|
|
let knex;
|
|
before(() => {
|
|
knex = getKnexForDb(db);
|
|
});
|
|
|
|
after(() => {
|
|
return knex.destroy();
|
|
});
|
|
|
|
beforeEach(async () => {
|
|
// creating fts tables is not supported
|
|
await knex.schema.raw(
|
|
'CREATE VIRTUAL TABLE fts_products USING fts5(name);'
|
|
);
|
|
});
|
|
|
|
afterEach(async () => {
|
|
await knex.schema.dropTable('fts_products');
|
|
});
|
|
|
|
it('selects rows using basic text matching', async () => {
|
|
await knex('fts_products').insert([
|
|
{ name: 'Red flannel shirt' },
|
|
{ name: 'Blue flannel shirt' },
|
|
{ name: 'Red polo shirt' },
|
|
{ name: 'Blue polo shirt' },
|
|
{ name: 'Red hooded jacket' },
|
|
{ name: 'Blue hooded jacket' },
|
|
]);
|
|
|
|
const matchingRows = await knex
|
|
.select('*')
|
|
.from('fts_products')
|
|
.where('name', 'match', 'red shirt');
|
|
|
|
expect(matchingRows).to.eql([
|
|
{ name: 'Red flannel shirt' },
|
|
{ name: 'Red polo shirt' },
|
|
]);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|