@juadz/knex 0.3.2 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +0,0 @@
1
- import { SimpleKnexConnection } from './basic';
2
- export default SimpleKnexConnection;
3
- export * from './list';
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mCAA6C;AAE7C,kBAAe,4BAAoB,CAAC;AACpC,yCAAuB"}
@@ -1,10 +0,0 @@
1
- import { IQueryListFunction } from '@juadz/core';
2
- import { Knex } from 'knex';
3
- export interface KnexQueryListOptions {
4
- searchFields?: Array<string>;
5
- debug?: boolean;
6
- }
7
- export interface KnexQueryBuilder {
8
- clone: () => Knex;
9
- }
10
- export declare function KnexQueryList(options: KnexQueryListOptions, getKnex: Function): IQueryListFunction;
package/build/src/list.js DELETED
@@ -1,91 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.KnexQueryList = void 0;
4
- const knexCloneIQuery = (query) => {
5
- const q = query;
6
- return q.clone();
7
- };
8
- function KnexQueryList(options, getKnex) {
9
- const func = async (params) => {
10
- const query = getKnex('list');
11
- query.where((query) => {
12
- params.filter.forEach((f) => {
13
- const { field, op, value } = f;
14
- if ((field === 'q' || field === 'search') && op === '=') {
15
- query.andWhere((query) => {
16
- (options.searchFields || []).forEach(k => {
17
- query.orWhere(k, 'LIKE', `%${`${value}`.replace(/(["'$%]+)/, '')}%`);
18
- });
19
- });
20
- return;
21
- }
22
- let values = [];
23
- if (Array.isArray(value)) {
24
- values = value;
25
- }
26
- switch (op) {
27
- case '=':
28
- query.where(field, value);
29
- return;
30
- case '!=':
31
- query.whereNot(field, value);
32
- return;
33
- case '>':
34
- case '>=':
35
- case '<':
36
- case '<=':
37
- query.where(field, op, value);
38
- return;
39
- case 'in':
40
- query.whereIn(field, values);
41
- return;
42
- case '!in':
43
- query.whereNotIn(field, values);
44
- return;
45
- case 'contains':
46
- query.whereILike(field, `%${value}%`);
47
- return;
48
- case '!contains':
49
- query.whereRaw(`\`${field}\` NOT LIKE ?`, [`%${value}%`]);
50
- return;
51
- case 'between':
52
- query.whereBetween(field, [values[0], values[1]]);
53
- return;
54
- case '!between':
55
- query.whereNotBetween(field, [values[0], values[1]]);
56
- return;
57
- case 'null':
58
- query.whereNull(field);
59
- return;
60
- case '!null':
61
- query.whereNotNull(field);
62
- return;
63
- }
64
- });
65
- });
66
- const data = await knexCloneIQuery(query)
67
- .offset(params.range.offset)
68
- .limit(params.range.limit)
69
- .orderBy(params.sort.map(s => ({ column: s.field, order: s.direction })));
70
- const totalRow = await knexCloneIQuery(query)
71
- .clear('select')
72
- .count('* AS T');
73
- const total = totalRow && totalRow.length ? totalRow[0].T : 0;
74
- let debug = null;
75
- if (options.debug) {
76
- debug = await knexCloneIQuery(query)
77
- .offset(params.range.offset)
78
- .limit(params.range.limit)
79
- .orderBy(params.sort.map(s => ({ column: s.field, order: s.direction })))
80
- .toString();
81
- }
82
- return {
83
- total,
84
- data,
85
- ...(debug ? { debug } : {}),
86
- };
87
- };
88
- return func;
89
- }
90
- exports.KnexQueryList = KnexQueryList;
91
- //# sourceMappingURL=list.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/list.ts"],"names":[],"mappings":"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"}
@@ -1,68 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const list_1 = require("./list");
7
- const knex_1 = __importDefault(require("knex"));
8
- const fs_1 = require("fs");
9
- let knex;
10
- beforeAll(async () => {
11
- knex = (0, knex_1.default)({
12
- client: 'sqlite3',
13
- connection: {
14
- filename: ':memory:',
15
- },
16
- useNullAsDefault: true,
17
- });
18
- await knex.schema.createTable('users', (table) => {
19
- table.increments();
20
- table.string('name');
21
- table.string('last_name');
22
- table.integer('age');
23
- table.string('tool');
24
- });
25
- await knex('users').insert([
26
- { name: 'Peter', last_name: 'Parker', age: 11, tool: 'ruler' },
27
- { name: 'Mark', last_name: 'Olivier', age: 18, tool: 'pencil' },
28
- { name: 'Andre', last_name: 'Hudson', age: 18, tool: 'pen' },
29
- { name: 'Tony', last_name: 'Oliver', age: 18, tool: 'pen' },
30
- { name: 'Bruce', last_name: 'Pedersen', age: 13, tool: 'crayon' },
31
- ]);
32
- });
33
- afterAll(() => {
34
- (0, fs_1.unlink)('/tmp/test.sqlite', () => { });
35
- });
36
- test('KnexQueryList', async () => {
37
- const func = (0, list_1.KnexQueryList)({
38
- debug: true,
39
- searchFields: ['name', 'last_name'],
40
- }, () => knex('users'));
41
- const result = await func({
42
- resource: 'users',
43
- range: { offset: 0, limit: 10 },
44
- sort: [{ field: 'age', direction: 'ASC' }],
45
- filter: [
46
- { field: 'q', op: '=', value: 'Pe' },
47
- { field: 'age', op: 'between', value: [8, 17] },
48
- { field: 'tool', op: '!in', value: ['pencil', 'pen'] },
49
- ],
50
- });
51
- expect(result.total).toBe(2);
52
- expect(result.data[0]).toMatchObject({
53
- name: 'Peter',
54
- last_name: 'Parker',
55
- age: 11,
56
- tool: 'ruler',
57
- });
58
- expect(result.data[1]).toMatchObject({
59
- name: 'Bruce',
60
- last_name: 'Pedersen',
61
- age: 13,
62
- tool: 'crayon',
63
- });
64
- const r = result;
65
- const { debug } = r;
66
- expect(debug).toBe("select * from `users` where ((`name` like '%Pe%' or `last_name` like '%Pe%') and `age` between 8 and 17 and `tool` not in ('pencil', 'pen')) order by `age` ASC limit 10");
67
- });
68
- //# sourceMappingURL=list.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"list.test.js","sourceRoot":"","sources":["../../src/list.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import { Knex } from 'knex';
2
- export interface PlainObject {
3
- [key: string]: unknown;
4
- }
5
- export type IConnectionProvider = (_resourceName: string, _action: string) => Knex;
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
File without changes