All files query.builder.ts

90.91% Statements 10/11
50% Branches 2/4
100% Functions 2/2
90.91% Lines 10/11

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 576x           6x                         6x 6x         6x           6x                       6x 81x             6x 4x        
const knex = require('knex');
import {db} from "./database";
 
 
let queryBuilder: any;
 
Iif (process.env.NODE_ENV !== 'test') {
  /**
   * Query-Builder: creates sql query strings using functions
   * @type {Knex}
   */
  queryBuilder = knex({
    client: 'sqlite',
    connection: {filename: ':memory:'},
    useNullAsDefault: true,
    database : 'metaphase_db'
  });
}
 
Eif (process.env.NODE_ENV === 'test') {
  const mockKnex = require('mock-knex');
  /**
   * Mocked query-builder for tests
   * @type {Knex}
   */
  queryBuilder = knex({
    client: 'sqlite',
    debug: false,
    useNullAsDefault: true,
    database: 'test_db'
  });
  mockKnex.mock(queryBuilder);
}
 
//todo: testar la funcion run() y getOne()
//todo: emitir un evento personalizado para saber cuando se ha ejecutado una consulta
//todo: renombrar getOne() a getFirst()
 
/**
 * Execute database query using query-builder
 * Do not use arrow function because "this" type is incorrectly infered by typescript
 * @return {Object[]} list with query results
 */
queryBuilder().__proto__.run = function() {
  return db.execQuery(this);
};
 
/**
 * Execute database query using query-builder and return only first row
 * @return {Object} query result
 */
queryBuilder().__proto__.getOne = function() {
  return db.execQuery(this)[0];
};
 
export {queryBuilder as query};