query-core 0.1.31 → 0.2.0

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/lib/query.js CHANGED
@@ -14,7 +14,7 @@ function buildSort(sort, map) {
14
14
  var field = st;
15
15
  var tp = st.charAt(0);
16
16
  if (tp === '-' || tp === '+') {
17
- field = st.substr(1);
17
+ field = st.substring(1);
18
18
  }
19
19
  var sortType = (tp === '-' ? ' desc' : '');
20
20
  sort2.push(getField(field.trim(), map) + sortType);
package/lib/search.js CHANGED
@@ -1,6 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- function buildFromQuery(query, sql, params, limit, offset, mp, bools, provider, totalCol) {
3
+ function getOffset(limit, page, ifirstPageSize) {
4
+ if (ifirstPageSize && ifirstPageSize > 0) {
5
+ var offset = limit * (page - 2) + ifirstPageSize;
6
+ return offset < 0 ? 0 : offset;
7
+ }
8
+ else {
9
+ var offset = limit * (page - 1);
10
+ return offset < 0 ? 0 : offset;
11
+ }
12
+ }
13
+ exports.getOffset = getOffset;
14
+ function buildFromQuery(query, sql, params, limit, page, mp, bools, provider, totalCol) {
4
15
  if (!limit || limit <= 0) {
5
16
  return query(sql, params, mp, bools).then(function (list) {
6
17
  var total = (list ? list.length : undefined);
@@ -8,6 +19,8 @@ function buildFromQuery(query, sql, params, limit, offset, mp, bools, provider,
8
19
  });
9
20
  }
10
21
  else {
22
+ var ipage = (!page || page <= 0 ? 1 : page);
23
+ var offset = getOffset(limit, ipage);
11
24
  if (provider === exports.oracle) {
12
25
  if (!totalCol || totalCol.length === 0) {
13
26
  totalCol = 'total';
@@ -100,7 +113,7 @@ function buildPagingQueryForOracle(sql, limit, offset, total) {
100
113
  i = sql.indexOf(S);
101
114
  }
102
115
  if (i >= 0) {
103
- return sql.substr(0, l) + " count(*) over() as " + total + ", " + sql.substr(l) + " offset " + offset + " rows fetch next " + limit + " rows only";
116
+ return sql.substring(0, l) + " count(*) over() as " + total + ", " + sql.substring(l) + " offset " + offset + " rows fetch next " + limit + " rows only";
104
117
  }
105
118
  else {
106
119
  return sql + " offset " + offset + " rows fetch next " + limit + " rows only";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "query-core",
3
- "version": "0.1.31",
3
+ "version": "0.2.0",
4
4
  "description": "query",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./src/index.ts",
package/src/query.ts CHANGED
@@ -15,7 +15,7 @@ export function buildSort(sort?: string, map?: Attributes|StringMap): string {
15
15
  let field = st;
16
16
  const tp = st.charAt(0);
17
17
  if (tp === '-' || tp === '+') {
18
- field = st.substr(1);
18
+ field = st.substring(1);
19
19
  }
20
20
  const sortType = (tp === '-' ? ' desc' : '');
21
21
  sort2.push(getField(field.trim(), map) + sortType);
package/src/search.ts CHANGED
@@ -4,13 +4,24 @@ export interface SearchResult<T> {
4
4
  list: T[];
5
5
  total?: number;
6
6
  }
7
- export function buildFromQuery<T>(query: <K>(sql: string, args?: any[], m?: StringMap, bools?: Attribute[]) => Promise<K[]>, sql: string, params?: any[], limit?: number, offset?: number, mp?: StringMap, bools?: Attribute[], provider?: string, totalCol?: string): Promise<SearchResult<T>> {
7
+ export function getOffset(limit: number, page: number, ifirstPageSize?: number): number {
8
+ if (ifirstPageSize && ifirstPageSize > 0) {
9
+ const offset = limit * (page - 2) + ifirstPageSize;
10
+ return offset < 0 ? 0 : offset;
11
+ } else {
12
+ const offset = limit * (page - 1);
13
+ return offset < 0 ? 0 : offset;
14
+ }
15
+ }
16
+ export function buildFromQuery<T>(query: <K>(sql: string, args?: any[], m?: StringMap, bools?: Attribute[]) => Promise<K[]>, sql: string, params?: any[], limit?: number, page?: number, mp?: StringMap, bools?: Attribute[], provider?: string, totalCol?: string): Promise<SearchResult<T>> {
8
17
  if (!limit || limit <= 0) {
9
18
  return query<T>(sql, params, mp, bools).then(list => {
10
19
  const total = (list ? list.length : undefined);
11
20
  return {list, total};
12
21
  });
13
22
  } else {
23
+ const ipage = (!page || page <= 0 ? 1 : page)
24
+ const offset = getOffset(limit, ipage)
14
25
  if (provider === oracle) {
15
26
  if (!totalCol || totalCol.length === 0) {
16
27
  totalCol = 'total';
@@ -95,7 +106,7 @@ export function buildPagingQueryForOracle(sql: string, limit: number, offset?: n
95
106
  i = sql.indexOf(S);
96
107
  }
97
108
  if (i >= 0) {
98
- return `${sql.substr(0, l)} count(*) over() as ${total}, ${sql.substr(l)} offset ${offset} rows fetch next ${limit} rows only`;
109
+ return `${sql.substring(0, l)} count(*) over() as ${total}, ${sql.substring(l)} offset ${offset} rows fetch next ${limit} rows only`;
99
110
  } else {
100
111
  return `${sql} offset ${offset} rows fetch next ${limit} rows only`;
101
112
  }