lesgo 0.7.2 → 0.7.3

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "lesgo",
3
- "version": "0.7.2",
3
+ "version": "0.7.3",
4
4
  "description": "Core framework for lesgo node.js serverless framework.",
5
5
  "main": "./src/index.js",
6
6
  "author": "Sufiyan Rahmat",
@@ -39,22 +39,17 @@ class ElasticsearchService {
39
39
  }
40
40
 
41
41
  search(body) {
42
- return new Promise((resolve, reject) => {
43
- const param = {
44
- index: this.index,
45
- type: this.type,
46
- body,
47
- };
48
- this.client.search(param, (err, response) => {
49
- /* istanbul ignore next */
50
- if (err) {
51
- reject(err);
52
- }
53
-
54
- this.result = response;
55
-
56
- resolve(response);
57
- });
42
+ const param = {
43
+ index: this.index,
44
+ type: this.type,
45
+ body,
46
+ };
47
+
48
+ return this.client.search(param, (err, response) => {
49
+ if (err) return Promise.reject(err);
50
+
51
+ this.result = response;
52
+ return Promise.resolve(response);
58
53
  });
59
54
  }
60
55
 
@@ -75,11 +70,9 @@ class ElasticsearchService {
75
70
  body: settings,
76
71
  };
77
72
 
78
- return new Promise((resolve, reject) => {
79
- this.client.indices.create(params, (err, response) => {
80
- // eslint-disable-next-line no-unused-expressions
81
- err ? /* istanbul ignore next */ reject(err) : resolve(response);
82
- });
73
+ return this.client.indices.create(params, (err, response) => {
74
+ if (err) return Promise.reject(err);
75
+ return Promise.resolve(response);
83
76
  });
84
77
  }
85
78
 
@@ -89,31 +82,27 @@ class ElasticsearchService {
89
82
  ...options,
90
83
  };
91
84
 
92
- return new Promise((resolve, reject) => {
93
- this.client.indices.delete(params, (err, response) => {
94
- // eslint-disable-next-line no-unused-expressions
95
- err ? /* istanbul ignore next */ reject(err) : resolve(response);
96
- });
85
+ return this.client.indices.delete(params, (err, response) => {
86
+ if (err) return Promise.reject(err);
87
+ return Promise.resolve(response);
97
88
  });
98
89
  }
99
90
 
100
91
  existIndices(index, options = {}) {
101
92
  const params = { index, ...options };
102
- return new Promise((resolve, reject) => {
103
- this.client.indices.exists(params, (err, response) => {
104
- // eslint-disable-next-line no-unused-expressions
105
- err ? /* istanbul ignore next */ reject(err) : resolve(response.body);
106
- });
93
+
94
+ return this.client.indices.exists(params, (err, response) => {
95
+ if (err) return Promise.reject(err);
96
+ return Promise.resolve(response.body);
107
97
  });
108
98
  }
109
99
 
110
100
  putMapping(index, type, body) {
111
101
  const params = { index, type, body: { properties: body } };
112
- return new Promise((resolve, reject) => {
113
- this.client.indices.putMapping(params, (err, response) => {
114
- // eslint-disable-next-line no-unused-expressions
115
- err ? /* istanbul ignore next */ reject(err) : resolve(response);
116
- });
102
+
103
+ return this.client.indices.putMapping(params, (err, response) => {
104
+ if (err) return Promise.reject(err);
105
+ return Promise.resolve(response);
117
106
  });
118
107
  }
119
108
 
@@ -124,11 +113,9 @@ class ElasticsearchService {
124
113
  id,
125
114
  };
126
115
 
127
- return new Promise((resolve, reject) => {
128
- this.client.get(params, (err, response) => {
129
- // eslint-disable-next-line no-unused-expressions
130
- err ? /* istanbul ignore next */ reject(err) : resolve(response);
131
- });
116
+ return this.client.get(params, (err, response) => {
117
+ if (err) return Promise.reject(err);
118
+ return Promise.resolve(response);
132
119
  });
133
120
  }
134
121
 
@@ -141,24 +128,20 @@ class ElasticsearchService {
141
128
  refresh,
142
129
  };
143
130
 
144
- return new Promise((resolve, reject) => {
145
- this.client.index(params, (err, response) => {
146
- // eslint-disable-next-line no-unused-expressions
147
- err ? /* istanbul ignore next */ reject(err) : resolve(response);
148
- });
131
+ return this.client.index(params, (err, response) => {
132
+ if (err) return Promise.reject(err);
133
+ return Promise.resolve(response);
149
134
  });
150
135
  }
151
136
 
152
137
  bulkIndex(bodies) {
153
- return new Promise((resolve, reject) => {
154
- this.client.bulk(
155
- { body: this.constructBulkIndex(bodies) },
156
- (err, response) => {
157
- // eslint-disable-next-line no-unused-expressions
158
- err ? /* istanbul ignore next */ reject(err) : resolve(response);
159
- }
160
- );
161
- });
138
+ return this.client.bulk(
139
+ { body: this.constructBulkIndex(bodies) },
140
+ (err, response) => {
141
+ if (err) return Promise.reject(err);
142
+ return Promise.resolve(response);
143
+ }
144
+ );
162
145
  }
163
146
 
164
147
  create(id, body) {
@@ -169,11 +152,9 @@ class ElasticsearchService {
169
152
  body,
170
153
  };
171
154
 
172
- return new Promise((resolve, reject) => {
173
- this.client.index(params, (err, response) => {
174
- // eslint-disable-next-line no-unused-expressions
175
- err ? /* istanbul ignore next */ reject(err) : resolve(response);
176
- });
155
+ return this.client.index(params, (err, response) => {
156
+ if (err) return Promise.reject(err);
157
+ return Promise.resolve(response);
177
158
  });
178
159
  }
179
160
 
@@ -184,11 +165,9 @@ class ElasticsearchService {
184
165
  id,
185
166
  };
186
167
 
187
- return new Promise((resolve, reject) => {
188
- this.client.get(params, (err, response) => {
189
- // eslint-disable-next-line no-unused-expressions
190
- err ? /* istanbul ignore next */ reject(err) : resolve(response);
191
- });
168
+ return this.client.get(params, (err, response) => {
169
+ if (err) return Promise.reject(err);
170
+ return Promise.resolve(response);
192
171
  });
193
172
  }
194
173
 
@@ -32,6 +32,8 @@ describe('test LengthAwarePaginator instantiate', () => {
32
32
  expect(await paginator.lastItem()).toMatchObject(mockDataLastItem);
33
33
  expect(paginator.perPage()).toEqual(5);
34
34
  expect(await paginator.total()).toEqual(30);
35
+
36
+ expect(db.select).toHaveBeenCalled();
35
37
  });
36
38
  it('should not throw exception when instantiating with current page', async () => {
37
39
  const paginator = new LengthAwarePaginator(
@@ -51,6 +53,8 @@ describe('test LengthAwarePaginator instantiate', () => {
51
53
  expect(await paginator.lastItem()).toMatchObject(mockDataLastItem);
52
54
  expect(paginator.perPage()).toEqual(5);
53
55
  expect(await paginator.total()).toEqual(30);
56
+
57
+ expect(db.select).toHaveBeenCalled();
54
58
  });
55
59
  it('should default perPage to 10 when instantiating without perPage', async () => {
56
60
  const paginator = new LengthAwarePaginator(
@@ -66,6 +70,8 @@ describe('test LengthAwarePaginator instantiate', () => {
66
70
  expect(paginator.currentPage()).toEqual(1);
67
71
  expect(paginator.perPage()).toEqual(10);
68
72
  expect(await paginator.total()).toEqual(30);
73
+
74
+ expect(db.select).toHaveBeenCalled();
69
75
  });
70
76
  it('should throw exception if total is not a number', async () => {
71
77
  try {
@@ -116,6 +122,43 @@ describe('test LengthAwarePaginator instantiate', () => {
116
122
  { ...mockDataLastItem },
117
123
  ],
118
124
  });
125
+
126
+ expect(db.select).toHaveBeenCalled();
127
+ });
128
+
129
+ it('should simply return an empty paginator object if total is explicitly zero', async () => {
130
+ const paginator = new LengthAwarePaginator(
131
+ db,
132
+ 'SELECT * FROM tests',
133
+ {},
134
+ {
135
+ perPage: 5,
136
+ currentPage: 1,
137
+ total: 0,
138
+ }
139
+ );
140
+
141
+ expect(await paginator.count()).toEqual(0);
142
+ expect(await paginator.previousPage()).toEqual(false);
143
+ expect(paginator.currentPage()).toEqual(1);
144
+ expect(await paginator.nextPage()).toEqual(false);
145
+ expect(await paginator.firstItem()).toBe(undefined);
146
+ expect(await paginator.lastItem()).toBe(undefined);
147
+ expect(paginator.perPage()).toEqual(5);
148
+ expect(await paginator.total()).toEqual(0);
149
+
150
+ expect(await paginator.toObject()).toMatchObject({
151
+ count: 0,
152
+ previous_page: false,
153
+ current_page: 1,
154
+ next_page: false,
155
+ per_page: 5,
156
+ last_page: 0,
157
+ total: 0,
158
+ items: [],
159
+ });
160
+
161
+ expect(db.select).not.toHaveBeenCalled();
119
162
  });
120
163
  });
121
164
 
@@ -138,7 +181,7 @@ describe('test total() usage', () => {
138
181
  });
139
182
 
140
183
  describe('test lastPage() usage', () => {
141
- it('should get the last page using supplied paramater as total data', async () => {
184
+ it('should get the last page using supplied parameter as total data', async () => {
142
185
  const paginator1 = new LengthAwarePaginator(
143
186
  db,
144
187
  'SELECT * FROM total_tests',
@@ -217,11 +217,17 @@ export default class Paginator {
217
217
  }
218
218
 
219
219
  async executeQuery() {
220
- this.response = await this.dbProp.select(
221
- this.generatePaginationSqlSnippet(),
222
- this.sqlParamsProp,
223
- this.connection
224
- );
220
+ const total = this.totalProp;
221
+ if (
222
+ (typeof total === 'number' && total > 0) ||
223
+ (typeof total !== 'number' && !total)
224
+ ) {
225
+ this.response = await this.dbProp.select(
226
+ this.generatePaginationSqlSnippet(),
227
+ this.sqlParamsProp,
228
+ this.connection
229
+ );
230
+ }
225
231
 
226
232
  this.hasNext = this.response.length > this.perPage();
227
233
  if (this.hasNext) {