namirasoft-node 1.4.46 → 1.4.47

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,111 +1,77 @@
1
1
  import * as express from "express";
2
2
  import { FilterItem, SortItem } from "namirasoft-core";
3
- export interface BaseDatabase_FilterTable {
4
- join_conditions?: BaseDatabase_FilterTable_JoinConditions;
5
- overrideColumnName?: (column: string) => string;
6
- }
7
- export interface BaseDatabase_FilterTable_JoinConditions {
3
+ import { BaseTable } from "./BaseTable";
4
+ export interface BaseDatabase_FilterTable<WhereOptions> {
8
5
  main: {
9
- table: string;
10
6
  column: string;
11
7
  };
12
8
  secondary: {
13
- table: string;
14
9
  column: string;
15
10
  };
16
- getExtraConditions?: (column: string) => string[];
11
+ getExtraConditions?: (column: string) => WhereOptions[];
17
12
  }
18
13
  export interface IFilterableDatabase<WhereOptions> {
19
- getIn: (filter: FilterItem, column_name: string, values: string[]) => {
20
- condition: WhereOptions;
21
- partial: boolean;
22
- required: boolean;
23
- };
24
- getNotIn: (filter: FilterItem, column_name: string, values: string[]) => {
25
- condition: WhereOptions;
26
- partial: boolean;
27
- required: boolean;
28
- };
29
- getLike: (filter: FilterItem, column_name: string, value: string) => {
30
- condition: WhereOptions;
31
- partial: boolean;
32
- required: boolean;
33
- };
34
- getNotLike: (filter: FilterItem, column_name: string, value: string) => {
14
+ getIn: (column_name: string, not: boolean, values: string[]) => {
35
15
  condition: WhereOptions;
36
16
  partial: boolean;
37
17
  required: boolean;
38
18
  };
39
- getRegex: (filter: FilterItem, column_name: string, value: string) => {
19
+ getLike: (column_name: string, not: boolean, value: string) => {
40
20
  condition: WhereOptions;
41
21
  partial: boolean;
42
22
  required: boolean;
43
23
  };
44
- getNotRegex: (filter: FilterItem, column_name: string, value: string) => {
24
+ getRegex: (column_name: string, not: boolean, value: string) => {
45
25
  condition: WhereOptions;
46
26
  partial: boolean;
47
27
  required: boolean;
48
28
  };
49
- getEmpty: (filter: FilterItem, column_name: string) => {
29
+ getEmpty: (column_name: string, not: boolean) => {
50
30
  condition: WhereOptions;
51
31
  partial: boolean;
52
32
  required: boolean;
53
33
  };
54
- getNotEmpty: (filter: FilterItem, column_name: string) => {
34
+ getExists: (column_name: string, not: boolean) => {
55
35
  condition: WhereOptions;
56
36
  partial: boolean;
57
37
  required: boolean;
58
38
  };
59
- getExists: (filter: FilterItem, column_name: string, not: boolean, join_conditions: BaseDatabase_FilterTable_JoinConditions) => {
39
+ getIncludes: (column_name: string, not: boolean, value: string[]) => {
60
40
  condition: WhereOptions;
61
41
  partial: boolean;
62
42
  required: boolean;
63
43
  };
64
- getIncludes: (filter: FilterItem, column_name: string, not: boolean, join_conditions: BaseDatabase_FilterTable_JoinConditions, value: string[]) => {
44
+ getStartsWith: (column_name: string, not: boolean, value: string) => {
65
45
  condition: WhereOptions;
66
46
  partial: boolean;
67
47
  required: boolean;
68
48
  };
69
- getStartsWith: (filter: FilterItem, column_name: string, value: string) => {
49
+ getEndsWith: (column_name: string, not: boolean, value: string) => {
70
50
  condition: WhereOptions;
71
51
  partial: boolean;
72
52
  required: boolean;
73
53
  };
74
- getNotStartsWith: (filter: FilterItem, column_name: string, value: string) => {
54
+ getLT: (column_name: string, value: any) => {
75
55
  condition: WhereOptions;
76
56
  partial: boolean;
77
57
  required: boolean;
78
58
  };
79
- getEndsWith: (filter: FilterItem, column_name: string, value: string) => {
59
+ getLTE: (column_name: string, value: any) => {
80
60
  condition: WhereOptions;
81
61
  partial: boolean;
82
62
  required: boolean;
83
63
  };
84
- getNotEndsWith: (filter: FilterItem, column_name: string, value: string) => {
64
+ getGT: (column_name: string, value: any) => {
85
65
  condition: WhereOptions;
86
66
  partial: boolean;
87
67
  required: boolean;
88
68
  };
89
- getLT: (filter: FilterItem, column_name: string, value: any) => {
90
- condition: WhereOptions;
91
- partial: boolean;
92
- required: boolean;
93
- };
94
- getLTE: (filter: FilterItem, column_name: string, value: any) => {
95
- condition: WhereOptions;
96
- partial: boolean;
97
- required: boolean;
98
- };
99
- getGT: (filter: FilterItem, column_name: string, value: any) => {
100
- condition: WhereOptions;
101
- partial: boolean;
102
- required: boolean;
103
- };
104
- getGTE: (filter: FilterItem, column_name: string, value: any) => {
69
+ getGTE: (column_name: string, value: any) => {
105
70
  condition: WhereOptions;
106
71
  partial: boolean;
107
72
  required: boolean;
108
73
  };
74
+ getInSelect: (t: BaseTable<BaseDatabase, any>, not: boolean, join: BaseDatabase_FilterTable<WhereOptions>, conditions: WhereOptions[]) => WhereOptions;
109
75
  }
110
76
  export declare abstract class BaseDatabase {
111
77
  private tables;
@@ -122,13 +88,8 @@ export declare abstract class BaseDatabase {
122
88
  offset: number;
123
89
  limit: number;
124
90
  };
125
- protected _getFiltersConditions<WhereOptions>(tables: {
126
- [table: string]: BaseDatabase_FilterTable;
127
- }, idatabase: IFilterableDatabase<WhereOptions>, filters?: FilterItem[] | undefined): {
128
- [table: string]: {
129
- conditions: WhereOptions[];
130
- required: boolean;
131
- };
132
- };
91
+ protected _getFiltersConditions<WhereOptions>(table_main: BaseTable<BaseDatabase, any>, table_joins: {
92
+ [table: string]: BaseDatabase_FilterTable<WhereOptions>;
93
+ }, idatabase: IFilterableDatabase<WhereOptions>, filters?: FilterItem[] | undefined): Promise<WhereOptions[]>;
133
94
  abstract getSortOptions(sorts?: SortItem[] | undefined): any;
134
95
  }
@@ -44,128 +44,116 @@ class BaseDatabase {
44
44
  let limit = page_size;
45
45
  return { offset, limit };
46
46
  }
47
- _getFiltersConditions(tables, idatabase, filters) {
48
- var _a, _b;
49
- let ans = {};
50
- Object.keys(tables).forEach(table => ans[table] = { conditions: [], required: false });
51
- if (filters) {
52
- let processed = {};
53
- for (let i = 0; i < filters.length; i++)
54
- if (!processed[i]) {
55
- const filter = filters[i];
56
- let table = tables[filter.table.name];
57
- let t = this.getTable(filter.table.name);
58
- let column_name = (_b = (_a = table === null || table === void 0 ? void 0 : table.overrideColumnName) === null || _a === void 0 ? void 0 : _a.call(table, filter.column.name)) !== null && _b !== void 0 ? _b : filter.column.name;
59
- t.checkColumn(filter.column.name, false, null);
60
- let values = filter.values;
61
- if (filter.operator.count > 0)
62
- for (let j = i + 1; j < filters.length; j++) {
63
- const f = filters[j];
64
- if (filter.table.name == f.table.name)
65
- if (filter.column.name == f.column.name)
66
- if (filter.not == f.not)
67
- if (filter.operator.sign == f.operator.sign) {
68
- processed[j] = true;
69
- values.push(...f.values);
70
- }
71
- }
72
- let getNumbers = () => {
73
- let nums = values.map(x => parseFloat(x));
74
- if (nums.filter(x => isNaN(x)).length > 0)
75
- namirasoft_core_1.ErrorOperation.throwHTTP(400, `Invalid number values for: '${values.join(",")}'`);
76
- return nums;
77
- };
78
- let addCondition = (res) => {
79
- if (res.partial) {
80
- let wh = {};
81
- wh[column_name] = res.condition;
82
- ans[filter.table.name].conditions.push(wh);
83
- }
84
- else
85
- ans[filter.table.name].conditions.push(res.condition);
86
- ans[filter.table.name].required = ans[filter.table.name].required || res.required;
87
- };
88
- if (filter.operator == namirasoft_core_1.FilterItemOperator.all.equals) {
89
- if (filter.not)
90
- addCondition(idatabase.getNotIn(filter, column_name, values));
91
- else
92
- addCondition(idatabase.getIn(filter, column_name, values));
93
- }
94
- else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.contains) {
95
- values.forEach(value => {
96
- if (filter.not)
97
- addCondition(idatabase.getNotLike(filter, column_name, value));
47
+ _getFiltersConditions(table_main, table_joins, idatabase, filters) {
48
+ return __awaiter(this, void 0, void 0, function* () {
49
+ var _a;
50
+ let ans = [];
51
+ if (filters) {
52
+ let conditions_in_select_main = {};
53
+ Object.keys(table_joins).forEach(table => { conditions_in_select_main[table] = []; });
54
+ let processed = {};
55
+ let getCondition_IDInSelect = (table, not, conditions) => __awaiter(this, void 0, void 0, function* () {
56
+ let join = table_joins[table];
57
+ let t = this.getTable(table);
58
+ return idatabase.getInSelect(t, not, join, conditions);
59
+ });
60
+ for (let i = 0; i < filters.length; i++)
61
+ if (!processed[i]) {
62
+ const filter = filters[i];
63
+ let t = this.getTable(filter.table.name);
64
+ t.checkColumn(filter.column.name, false, null);
65
+ let join = table_joins[filter.table.name];
66
+ let is_table_main = table_main.getName() === filter.table.name;
67
+ let column_name = (_a = t.getRealColumnName(filter.column.name)) !== null && _a !== void 0 ? _a : filter.column.name;
68
+ let values = filter.values;
69
+ if (filter.operator.count > 0)
70
+ for (let j = i + 1; j < filters.length; j++) {
71
+ const f = filters[j];
72
+ if (filter.table.name == f.table.name)
73
+ if (filter.column.name == f.column.name)
74
+ if (filter.not == f.not)
75
+ if (filter.operator.sign == f.operator.sign) {
76
+ processed[j] = true;
77
+ values.push(...f.values);
78
+ }
79
+ }
80
+ let getNumbers = () => {
81
+ let nums = values.map(x => parseFloat(x));
82
+ if (nums.filter(x => isNaN(x)).length > 0)
83
+ namirasoft_core_1.ErrorOperation.throwHTTP(400, `Invalid number values for: '${values.join(",")}'`);
84
+ return nums;
85
+ };
86
+ let addCondition = (res) => __awaiter(this, void 0, void 0, function* () {
87
+ var _a, _b;
88
+ let condition;
89
+ if (res.partial) {
90
+ let wh = {};
91
+ wh[column_name] = res.condition;
92
+ condition = wh;
93
+ }
98
94
  else
99
- addCondition(idatabase.getLike(filter, column_name, value));
95
+ condition = res.condition;
96
+ if (is_table_main)
97
+ ans.push(condition);
98
+ else {
99
+ if (!res.independant)
100
+ conditions_in_select_main[filter.table.name].push(condition);
101
+ else
102
+ ans.push(yield getCondition_IDInSelect(filter.table.name, res.independant.not, [condition, ...((_b = (_a = join.getExtraConditions) === null || _a === void 0 ? void 0 : _a.call(join, column_name)) !== null && _b !== void 0 ? _b : [])]));
103
+ }
100
104
  });
101
- }
102
- else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.regex) {
103
- values.forEach(value => {
105
+ if (filter.operator == namirasoft_core_1.FilterItemOperator.all.equals)
106
+ yield addCondition(idatabase.getIn(column_name, filter.not, values));
107
+ else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.contains)
108
+ for (const value of values)
109
+ yield addCondition(idatabase.getLike(column_name, filter.not, value));
110
+ else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.regex)
111
+ for (const value of values)
112
+ yield addCondition(idatabase.getRegex(column_name, filter.not, value));
113
+ else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.empty)
114
+ yield addCondition(idatabase.getEmpty(column_name, filter.not));
115
+ else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.exists)
116
+ yield addCondition(idatabase.getExists(column_name, filter.not));
117
+ else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.includes)
118
+ yield addCondition(idatabase.getIncludes(column_name, filter.not, values));
119
+ else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.startswith)
120
+ for (const value of values)
121
+ yield addCondition(idatabase.getStartsWith(column_name, filter.not, value));
122
+ else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.endswith)
123
+ for (const value of values)
124
+ yield addCondition(idatabase.getEndsWith(column_name, filter.not, value));
125
+ else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.lessthan) {
104
126
  if (filter.not)
105
- addCondition(idatabase.getNotRegex(filter, column_name, value));
127
+ yield addCondition(idatabase.getGTE(column_name, Math.max(...getNumbers())));
106
128
  else
107
- addCondition(idatabase.getRegex(filter, column_name, value));
108
- });
109
- }
110
- else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.empty) {
111
- if (filter.not)
112
- addCondition(idatabase.getNotEmpty(filter, column_name));
113
- else
114
- addCondition(idatabase.getEmpty(filter, column_name));
115
- }
116
- else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.exists) {
117
- if (!table.join_conditions)
118
- throw namirasoft_core_1.ErrorOperation.getHTTP(500, `Table ${filter.table.name} does not have join conditions.`);
119
- addCondition(idatabase.getExists(filter, column_name, filter.not, table.join_conditions));
120
- }
121
- else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.includes) {
122
- if (!table.join_conditions)
123
- throw namirasoft_core_1.ErrorOperation.getHTTP(500, `Table ${filter.table.name} does not have join conditions.`);
124
- addCondition(idatabase.getIncludes(filter, column_name, filter.not, table.join_conditions, values));
125
- }
126
- else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.startswith) {
127
- values.forEach(value => {
129
+ yield addCondition(idatabase.getLT(column_name, Math.max(...getNumbers())));
130
+ }
131
+ else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.lessthanequal) {
128
132
  if (filter.not)
129
- addCondition(idatabase.getNotStartsWith(filter, column_name, value));
133
+ yield addCondition(idatabase.getGT(column_name, Math.max(...getNumbers())));
130
134
  else
131
- addCondition(idatabase.getStartsWith(filter, column_name, value));
132
- });
133
- }
134
- else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.endswith) {
135
- values.forEach(value => {
135
+ yield addCondition(idatabase.getLTE(column_name, Math.max(...getNumbers())));
136
+ }
137
+ else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.morethan) {
136
138
  if (filter.not)
137
- addCondition(idatabase.getNotEndsWith(filter, column_name, value));
139
+ yield addCondition(idatabase.getLTE(column_name, Math.max(...getNumbers())));
138
140
  else
139
- addCondition(idatabase.getEndsWith(filter, column_name, value));
140
- });
141
- }
142
- else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.lessthan) {
143
- if (filter.not)
144
- addCondition(idatabase.getGTE(filter, column_name, Math.max(...getNumbers())));
145
- else
146
- addCondition(idatabase.getLT(filter, column_name, Math.max(...getNumbers())));
147
- }
148
- else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.lessthanequal) {
149
- if (filter.not)
150
- addCondition(idatabase.getGT(filter, column_name, Math.max(...getNumbers())));
151
- else
152
- addCondition(idatabase.getLTE(filter, column_name, Math.max(...getNumbers())));
153
- }
154
- else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.morethan) {
155
- if (filter.not)
156
- addCondition(idatabase.getLTE(filter, column_name, Math.max(...getNumbers())));
157
- else
158
- addCondition(idatabase.getGT(filter, column_name, Math.max(...getNumbers())));
159
- }
160
- else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.morethanequal) {
161
- if (filter.not)
162
- addCondition(idatabase.getLT(filter, column_name, Math.max(...getNumbers())));
163
- else
164
- addCondition(idatabase.getGTE(filter, column_name, Math.max(...getNumbers())));
141
+ yield addCondition(idatabase.getGT(column_name, Math.max(...getNumbers())));
142
+ }
143
+ else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.morethanequal) {
144
+ if (filter.not)
145
+ yield addCondition(idatabase.getLT(column_name, Math.max(...getNumbers())));
146
+ else
147
+ yield addCondition(idatabase.getGTE(column_name, Math.max(...getNumbers())));
148
+ }
165
149
  }
150
+ for (let table of Object.keys(conditions_in_select_main)) {
151
+ let conditions = conditions_in_select_main[table];
152
+ ans.push(yield getCondition_IDInSelect(table, false, conditions));
166
153
  }
167
- }
168
- return ans;
154
+ }
155
+ return ans;
156
+ });
169
157
  }
170
158
  }
171
159
  exports.BaseDatabase = BaseDatabase;
@@ -1 +1 @@
1
- {"version":3,"file":"BaseDatabase.js","sourceRoot":"","sources":["../src/BaseDatabase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseDatabase.js","sourceRoot":"","sources":["../src/BaseDatabase.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,7 @@ export declare abstract class BaseTable<D extends BaseDatabase, ModelColumnOptio
14
14
  abstract forEachColumn(handler: (name: string, column: ModelColumnOption) => void): void;
15
15
  getColumns(secure?: boolean | null, read_only?: boolean | null): string[];
16
16
  checkColumn(column: string, secure: boolean | null, read_only: boolean | null): void;
17
+ getRealColumnName(column: string): string;
17
18
  secure(obj: any): any;
18
19
  getArraySchema(require: boolean, name?: string): ArraySchema;
19
20
  getSchema(require: boolean, name?: string): ObjectSchema;
package/dist/BaseTable.js CHANGED
@@ -38,6 +38,9 @@ class BaseTable {
38
38
  if (!columns.includes(column))
39
39
  namirasoft_core_1.ErrorOperation.throwHTTP(404, `Column '${column}' not found`);
40
40
  }
41
+ getRealColumnName(column) {
42
+ return column;
43
+ }
41
44
  secure(obj) {
42
45
  if (obj.dataValues)
43
46
  obj = obj.dataValues;
@@ -50,9 +53,11 @@ class BaseTable {
50
53
  return new namirasoft_schema_1.ArraySchema(require, [ans]);
51
54
  }
52
55
  getSchema(require, name) {
56
+ if (!name)
57
+ name = namirasoft_core_1.NamingConvention.lower_case_underscore.convert(this.getName(), namirasoft_core_1.NamingConvention.Pascal_Case);
53
58
  let columns_secure = this.getSecureColumns();
54
59
  let columns_read_only = this.getReadOnlyColumns();
55
- let ans = new namirasoft_schema_1.ObjectSchema(name !== null && name !== void 0 ? name : this.getName(), require, null);
60
+ let ans = new namirasoft_schema_1.ObjectSchema(name, require, null);
56
61
  this.forEachColumn((name, element) => {
57
62
  if (!columns_secure.includes(name))
58
63
  ans.addField(this.getVariableSchema(name, element, columns_read_only.includes(name)));
@@ -90,7 +95,8 @@ class BaseTable {
90
95
  setSchemaByName(_) {
91
96
  }
92
97
  getNotFoundError(conditions) {
93
- return namirasoft_core_1.ErrorOperation.getHTTP(404, "Could not find " + this.getName() + " for " + JSON.stringify(conditions));
98
+ let name = namirasoft_core_1.NamingConvention.lower_case_underscore.convert(this.getName(), namirasoft_core_1.NamingConvention.Pascal_Case);
99
+ return namirasoft_core_1.ErrorOperation.getHTTP(404, "Could not find " + name + " for " + JSON.stringify(conditions));
94
100
  }
95
101
  }
96
102
  exports.BaseTable = BaseTable;
@@ -1 +1 @@
1
- {"version":3,"file":"BaseTable.js","sourceRoot":"","sources":["../src/BaseTable.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseTable.js","sourceRoot":"","sources":["../src/BaseTable.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "framework": "npm",
9
9
  "application": "package",
10
10
  "private": false,
11
- "version": "1.4.46",
11
+ "version": "1.4.47",
12
12
  "author": "Amir Abolhasani",
13
13
  "license": "MIT",
14
14
  "main": "./dist/index.js",
@@ -2,44 +2,32 @@ import * as express from "express";
2
2
  import { ErrorOperation, FilterItem, FilterItemOperator, SortItem } from "namirasoft-core";
3
3
  import { BaseTable } from "./BaseTable";
4
4
 
5
- export interface BaseDatabase_FilterTable
6
- {
7
- join_conditions?: BaseDatabase_FilterTable_JoinConditions;
8
- overrideColumnName?: (column: string) => string;
9
- }
10
- export interface BaseDatabase_FilterTable_JoinConditions
5
+ export interface BaseDatabase_FilterTable<WhereOptions>
11
6
  {
12
7
  main: {
13
- table: string;
14
8
  column: string;
15
9
  };
16
10
  secondary: {
17
- table: string;
18
11
  column: string;
19
12
  };
20
- getExtraConditions?: (column: string) => string[];
13
+ getExtraConditions?: (column: string) => WhereOptions[];
21
14
  }
22
15
 
23
16
  export interface IFilterableDatabase<WhereOptions>
24
17
  {
25
- getIn: (filter: FilterItem, column_name: string, values: string[]) => { condition: WhereOptions, partial: boolean, required: boolean };
26
- getNotIn: (filter: FilterItem, column_name: string, values: string[]) => { condition: WhereOptions, partial: boolean, required: boolean };
27
- getLike: (filter: FilterItem, column_name: string, value: string) => { condition: WhereOptions, partial: boolean, required: boolean };
28
- getNotLike: (filter: FilterItem, column_name: string, value: string) => { condition: WhereOptions, partial: boolean, required: boolean };
29
- getRegex: (filter: FilterItem, column_name: string, value: string) => { condition: WhereOptions, partial: boolean, required: boolean };
30
- getNotRegex: (filter: FilterItem, column_name: string, value: string) => { condition: WhereOptions, partial: boolean, required: boolean };
31
- getEmpty: (filter: FilterItem, column_name: string) => { condition: WhereOptions, partial: boolean, required: boolean };
32
- getNotEmpty: (filter: FilterItem, column_name: string) => { condition: WhereOptions, partial: boolean, required: boolean };
33
- getExists: (filter: FilterItem, column_name: string, not: boolean, join_conditions: BaseDatabase_FilterTable_JoinConditions) => { condition: WhereOptions, partial: boolean, required: boolean };
34
- getIncludes: (filter: FilterItem, column_name: string, not: boolean, join_conditions: BaseDatabase_FilterTable_JoinConditions, value: string[]) => { condition: WhereOptions, partial: boolean, required: boolean };
35
- getStartsWith: (filter: FilterItem, column_name: string, value: string) => { condition: WhereOptions, partial: boolean, required: boolean };
36
- getNotStartsWith: (filter: FilterItem, column_name: string, value: string) => { condition: WhereOptions, partial: boolean, required: boolean };
37
- getEndsWith: (filter: FilterItem, column_name: string, value: string) => { condition: WhereOptions, partial: boolean, required: boolean };
38
- getNotEndsWith: (filter: FilterItem, column_name: string, value: string) => { condition: WhereOptions, partial: boolean, required: boolean };
39
- getLT: (filter: FilterItem, column_name: string, value: any) => { condition: WhereOptions, partial: boolean, required: boolean };
40
- getLTE: (filter: FilterItem, column_name: string, value: any) => { condition: WhereOptions, partial: boolean, required: boolean };
41
- getGT: (filter: FilterItem, column_name: string, value: any) => { condition: WhereOptions, partial: boolean, required: boolean };
42
- getGTE: (filter: FilterItem, column_name: string, value: any) => { condition: WhereOptions, partial: boolean, required: boolean };
18
+ getIn: (column_name: string, not: boolean, values: string[]) => { condition: WhereOptions, partial: boolean, required: boolean };
19
+ getLike: (column_name: string, not: boolean, value: string) => { condition: WhereOptions, partial: boolean, required: boolean };
20
+ getRegex: (column_name: string, not: boolean, value: string) => { condition: WhereOptions, partial: boolean, required: boolean };
21
+ getEmpty: (column_name: string, not: boolean) => { condition: WhereOptions, partial: boolean, required: boolean };
22
+ getExists: (column_name: string, not: boolean) => { condition: WhereOptions, partial: boolean, required: boolean };
23
+ getIncludes: (column_name: string, not: boolean, value: string[]) => { condition: WhereOptions, partial: boolean, required: boolean };
24
+ getStartsWith: (column_name: string, not: boolean, value: string) => { condition: WhereOptions, partial: boolean, required: boolean };
25
+ getEndsWith: (column_name: string, not: boolean, value: string) => { condition: WhereOptions, partial: boolean, required: boolean };
26
+ getLT: (column_name: string, value: any) => { condition: WhereOptions, partial: boolean, required: boolean };
27
+ getLTE: (column_name: string, value: any) => { condition: WhereOptions, partial: boolean, required: boolean };
28
+ getGT: (column_name: string, value: any) => { condition: WhereOptions, partial: boolean, required: boolean };
29
+ getGTE: (column_name: string, value: any) => { condition: WhereOptions, partial: boolean, required: boolean };
30
+ getInSelect: (t: BaseTable<BaseDatabase, any>, not: boolean, join: BaseDatabase_FilterTable<WhereOptions>, conditions: WhereOptions[]) => WhereOptions;
43
31
  }
44
32
 
45
33
  export abstract class BaseDatabase
@@ -83,21 +71,32 @@ export abstract class BaseDatabase
83
71
  let limit = page_size;
84
72
  return { offset, limit };
85
73
  }
86
- protected _getFiltersConditions<WhereOptions>(tables: { [table: string]: BaseDatabase_FilterTable }, idatabase: IFilterableDatabase<WhereOptions>, filters?: FilterItem[] | undefined): { [table: string]: { conditions: WhereOptions[], required: boolean } }
74
+ protected async _getFiltersConditions<WhereOptions>(table_main: BaseTable<BaseDatabase, any>, table_joins: { [table: string]: BaseDatabase_FilterTable<WhereOptions> }, idatabase: IFilterableDatabase<WhereOptions>, filters?: FilterItem[] | undefined): Promise<WhereOptions[]>
87
75
  {
88
- let ans: { [table: string]: { conditions: WhereOptions[], required: boolean } } = {};
89
- Object.keys(tables).forEach(table => ans[table] = { conditions: [], required: false });
76
+ let ans: WhereOptions[] = [];
90
77
  if (filters)
91
78
  {
79
+ let conditions_in_select_main: { [table: string]: WhereOptions[] } = {};
80
+ Object.keys(table_joins).forEach(table => { conditions_in_select_main[table] = []; });
92
81
  let processed: { [index: number]: boolean } = {};
82
+
83
+ let getCondition_IDInSelect = async (table: string, not: boolean, conditions: WhereOptions[]): Promise<WhereOptions> =>
84
+ {
85
+ let join = table_joins[table];
86
+ let t: BaseTable<BaseDatabase, any> = this.getTable<BaseTable<BaseDatabase, any>>(table);
87
+ return idatabase.getInSelect(t, not, join, conditions);
88
+ }
89
+
93
90
  for (let i = 0; i < filters.length; i++)
94
91
  if (!processed[i])
95
92
  {
96
93
  const filter = filters[i];
97
- let table = tables[filter.table.name];
98
94
  let t = this.getTable<BaseTable<BaseDatabase, any>>(filter.table.name);
99
- let column_name = table?.overrideColumnName?.(filter.column.name) ?? filter.column.name;
100
95
  t.checkColumn(filter.column.name, false, null);
96
+ let join = table_joins[filter.table.name];
97
+ let is_table_main = table_main.getName() === filter.table.name;
98
+ let column_name = t.getRealColumnName(filter.column.name) ?? filter.column.name;
99
+
101
100
  let values = filter.values;
102
101
  if (filter.operator.count > 0)
103
102
  for (let j = i + 1; j < filters.length; j++)
@@ -120,113 +119,81 @@ export abstract class BaseDatabase
120
119
  ErrorOperation.throwHTTP(400, `Invalid number values for: '${values.join(",")}'`);
121
120
  return nums;
122
121
  };
123
- let addCondition = (res: { condition: WhereOptions, partial: boolean, required: boolean }) =>
122
+ let addCondition = async (res: { condition: WhereOptions, partial: boolean, independant?: { not: boolean } }) =>
124
123
  {
124
+ let condition: WhereOptions;
125
125
  if (res.partial)
126
126
  {
127
127
  let wh: any = {};
128
128
  wh[column_name] = res.condition;
129
- ans[filter.table.name].conditions.push(wh);
129
+ condition = wh;
130
130
  }
131
131
  else
132
- ans[filter.table.name].conditions.push(res.condition);
133
- ans[filter.table.name].required = ans[filter.table.name].required || res.required;
134
- };
135
- if (filter.operator == FilterItemOperator.all.equals)
136
- {
137
- if (filter.not)
138
- addCondition(idatabase.getNotIn(filter, column_name, values));
132
+ condition = res.condition;
133
+ if (is_table_main)
134
+ ans.push(condition);
139
135
  else
140
- addCondition(idatabase.getIn(filter, column_name, values));
141
- }
142
- else if (filter.operator == FilterItemOperator.all.contains)
143
- {
144
- values.forEach(value =>
145
136
  {
146
- if (filter.not)
147
- addCondition(idatabase.getNotLike(filter, column_name, value));
137
+ if (!res.independant)
138
+ conditions_in_select_main[filter.table.name].push(condition);
148
139
  else
149
- addCondition(idatabase.getLike(filter, column_name, value));
150
- });
151
- }
140
+ ans.push(await getCondition_IDInSelect(filter.table.name, res.independant.not, [condition, ...(join.getExtraConditions?.(column_name) ?? [])]));
141
+ }
142
+ };
143
+ if (filter.operator == FilterItemOperator.all.equals)
144
+ await addCondition(idatabase.getIn(column_name, filter.not, values));
145
+ else if (filter.operator == FilterItemOperator.all.contains)
146
+ for (const value of values)
147
+ await addCondition(idatabase.getLike(column_name, filter.not, value));
152
148
  else if (filter.operator == FilterItemOperator.all.regex)
153
- {
154
- values.forEach(value =>
155
- {
156
- if (filter.not)
157
- addCondition(idatabase.getNotRegex(filter, column_name, value));
158
- else
159
- addCondition(idatabase.getRegex(filter, column_name, value));
160
- });
161
- }
149
+ for (const value of values)
150
+ await addCondition(idatabase.getRegex(column_name, filter.not, value));
162
151
  else if (filter.operator == FilterItemOperator.all.empty)
163
- {
164
- if (filter.not)
165
- addCondition(idatabase.getNotEmpty(filter, column_name));
166
- else
167
- addCondition(idatabase.getEmpty(filter, column_name));
168
- }
152
+ await addCondition(idatabase.getEmpty(column_name, filter.not));
169
153
  else if (filter.operator == FilterItemOperator.all.exists)
170
- {
171
- if (!table.join_conditions)
172
- throw ErrorOperation.getHTTP(500, `Table ${filter.table.name} does not have join conditions.`);
173
- addCondition(idatabase.getExists(filter, column_name, filter.not, table.join_conditions));
174
- }
154
+ await addCondition(idatabase.getExists(column_name, filter.not));
175
155
  else if (filter.operator == FilterItemOperator.all.includes)
176
- {
177
- if (!table.join_conditions)
178
- throw ErrorOperation.getHTTP(500, `Table ${filter.table.name} does not have join conditions.`);
179
- addCondition(idatabase.getIncludes(filter, column_name, filter.not, table.join_conditions, values));
180
- }
156
+ await addCondition(idatabase.getIncludes(column_name, filter.not, values));
181
157
  else if (filter.operator == FilterItemOperator.all.startswith)
182
- {
183
- values.forEach(value =>
184
- {
185
- if (filter.not)
186
- addCondition(idatabase.getNotStartsWith(filter, column_name, value));
187
- else
188
- addCondition(idatabase.getStartsWith(filter, column_name, value));
189
- });
190
- }
158
+ for (const value of values)
159
+ await addCondition(idatabase.getStartsWith(column_name, filter.not, value));
191
160
  else if (filter.operator == FilterItemOperator.all.endswith)
192
- {
193
- values.forEach(value =>
194
- {
195
- if (filter.not)
196
- addCondition(idatabase.getNotEndsWith(filter, column_name, value));
197
- else
198
- addCondition(idatabase.getEndsWith(filter, column_name, value));
199
- });
200
- }
161
+ for (const value of values)
162
+ await addCondition(idatabase.getEndsWith(column_name, filter.not, value));
201
163
  else if (filter.operator == FilterItemOperator.all.lessthan)
202
164
  {
203
165
  if (filter.not)
204
- addCondition(idatabase.getGTE(filter, column_name, Math.max(...getNumbers())));
166
+ await addCondition(idatabase.getGTE(column_name, Math.max(...getNumbers())));
205
167
  else
206
- addCondition(idatabase.getLT(filter, column_name, Math.max(...getNumbers())));
168
+ await addCondition(idatabase.getLT(column_name, Math.max(...getNumbers())));
207
169
  }
208
170
  else if (filter.operator == FilterItemOperator.all.lessthanequal)
209
171
  {
210
172
  if (filter.not)
211
- addCondition(idatabase.getGT(filter, column_name, Math.max(...getNumbers())));
173
+ await addCondition(idatabase.getGT(column_name, Math.max(...getNumbers())));
212
174
  else
213
- addCondition(idatabase.getLTE(filter, column_name, Math.max(...getNumbers())));
175
+ await addCondition(idatabase.getLTE(column_name, Math.max(...getNumbers())));
214
176
  }
215
177
  else if (filter.operator == FilterItemOperator.all.morethan)
216
178
  {
217
179
  if (filter.not)
218
- addCondition(idatabase.getLTE(filter, column_name, Math.max(...getNumbers())));
180
+ await addCondition(idatabase.getLTE(column_name, Math.max(...getNumbers())));
219
181
  else
220
- addCondition(idatabase.getGT(filter, column_name, Math.max(...getNumbers())));
182
+ await addCondition(idatabase.getGT(column_name, Math.max(...getNumbers())));
221
183
  }
222
184
  else if (filter.operator == FilterItemOperator.all.morethanequal)
223
185
  {
224
186
  if (filter.not)
225
- addCondition(idatabase.getLT(filter, column_name, Math.max(...getNumbers())));
187
+ await addCondition(idatabase.getLT(column_name, Math.max(...getNumbers())));
226
188
  else
227
- addCondition(idatabase.getGTE(filter, column_name, Math.max(...getNumbers())));
189
+ await addCondition(idatabase.getGTE(column_name, Math.max(...getNumbers())));
228
190
  }
229
191
  }
192
+ for (let table of Object.keys(conditions_in_select_main))
193
+ {
194
+ let conditions = conditions_in_select_main[table];
195
+ ans.push(await getCondition_IDInSelect(table, false, conditions));
196
+ }
230
197
  }
231
198
  return ans;
232
199
  }
package/src/BaseTable.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { ArraySchema, BaseTypeSchema, BaseVariableSchema, ObjectSchema } from "namirasoft-schema";
2
2
  import { BaseDatabase } from "./BaseDatabase";
3
- import { ErrorOperation, BaseUUID } from "namirasoft-core";
3
+ import { ErrorOperation, BaseUUID, NamingConvention } from "namirasoft-core";
4
4
 
5
5
  export abstract class BaseTable<D extends BaseDatabase, ModelColumnOption>
6
6
  {
@@ -50,6 +50,10 @@ export abstract class BaseTable<D extends BaseDatabase, ModelColumnOption>
50
50
  if (!columns.includes(column))
51
51
  ErrorOperation.throwHTTP(404, `Column '${column}' not found`);
52
52
  }
53
+ public getRealColumnName(column: string): string
54
+ {
55
+ return column;
56
+ }
53
57
  public secure(obj: any)
54
58
  {
55
59
  if (obj.dataValues)
@@ -65,9 +69,11 @@ export abstract class BaseTable<D extends BaseDatabase, ModelColumnOption>
65
69
  }
66
70
  public getSchema(require: boolean, name?: string): ObjectSchema
67
71
  {
72
+ if (!name)
73
+ name = NamingConvention.lower_case_underscore.convert(this.getName(), NamingConvention.Pascal_Case);
68
74
  let columns_secure: string[] = this.getSecureColumns();
69
75
  let columns_read_only: string[] = this.getReadOnlyColumns();
70
- let ans = new ObjectSchema(name ?? this.getName(), require, null);
76
+ let ans = new ObjectSchema(name, require, null);
71
77
  this.forEachColumn((name, element) =>
72
78
  {
73
79
  if (!columns_secure.includes(name))
@@ -114,6 +120,7 @@ export abstract class BaseTable<D extends BaseDatabase, ModelColumnOption>
114
120
  }
115
121
  public getNotFoundError(conditions: any | null)
116
122
  {
117
- return ErrorOperation.getHTTP(404, "Could not find " + this.getName() + " for " + JSON.stringify(conditions));
123
+ let name = NamingConvention.lower_case_underscore.convert(this.getName(), NamingConvention.Pascal_Case);
124
+ return ErrorOperation.getHTTP(404, "Could not find " + name + " for " + JSON.stringify(conditions));
118
125
  }
119
126
  }