namirasoft-node 1.4.54 → 1.4.56

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,102 +1,5 @@
1
1
  import * as express from "express";
2
- import { FilterItem, SortItem } from "namirasoft-core";
3
- import { BaseTable } from "./BaseTable";
4
- export interface BaseDatabase_FilterTable<WhereOptions> {
5
- main: {
6
- column: string;
7
- };
8
- secondary: {
9
- column: string;
10
- };
11
- getExtraConditions?: (column: string) => WhereOptions[];
12
- }
13
- export interface IFilterableDatabase<WhereOptions> {
14
- getIn: (column_name: string, not: boolean, values: string[]) => {
15
- condition: WhereOptions;
16
- partial: boolean;
17
- independant?: {
18
- not: boolean;
19
- };
20
- };
21
- getLike: (column_name: string, not: boolean, value: string) => {
22
- condition: WhereOptions;
23
- partial: boolean;
24
- independant?: {
25
- not: boolean;
26
- };
27
- };
28
- getRegex: (column_name: string, not: boolean, value: string) => {
29
- condition: WhereOptions;
30
- partial: boolean;
31
- independant?: {
32
- not: boolean;
33
- };
34
- };
35
- getEmpty: (column_name: string, not: boolean) => {
36
- condition: WhereOptions;
37
- partial: boolean;
38
- independant?: {
39
- not: boolean;
40
- };
41
- };
42
- getExists: (column_name: string, not: boolean) => {
43
- condition: WhereOptions;
44
- partial: boolean;
45
- independant?: {
46
- not: boolean;
47
- };
48
- };
49
- getIncludes: (column_name: string, not: boolean, value: string[]) => {
50
- condition: WhereOptions;
51
- partial: boolean;
52
- independant?: {
53
- not: boolean;
54
- };
55
- };
56
- getStartsWith: (column_name: string, not: boolean, value: string) => {
57
- condition: WhereOptions;
58
- partial: boolean;
59
- independant?: {
60
- not: boolean;
61
- };
62
- };
63
- getEndsWith: (column_name: string, not: boolean, value: string) => {
64
- condition: WhereOptions;
65
- partial: boolean;
66
- independant?: {
67
- not: boolean;
68
- };
69
- };
70
- getLT: (column_name: string, value: any) => {
71
- condition: WhereOptions;
72
- partial: boolean;
73
- independant?: {
74
- not: boolean;
75
- };
76
- };
77
- getLTE: (column_name: string, value: any) => {
78
- condition: WhereOptions;
79
- partial: boolean;
80
- independant?: {
81
- not: boolean;
82
- };
83
- };
84
- getGT: (column_name: string, value: any) => {
85
- condition: WhereOptions;
86
- partial: boolean;
87
- independant?: {
88
- not: boolean;
89
- };
90
- };
91
- getGTE: (column_name: string, value: any) => {
92
- condition: WhereOptions;
93
- partial: boolean;
94
- independant?: {
95
- not: boolean;
96
- };
97
- };
98
- getInSelect: (t: BaseTable<BaseDatabase, any>, not: boolean, join: BaseDatabase_FilterTable<WhereOptions>, conditions: WhereOptions[]) => Promise<WhereOptions>;
99
- }
2
+ import { SortItem } from "namirasoft-core";
100
3
  export declare abstract class BaseDatabase {
101
4
  private tables;
102
5
  req?: express.Request;
@@ -112,8 +15,5 @@ export declare abstract class BaseDatabase {
112
15
  offset: number;
113
16
  limit: number;
114
17
  };
115
- protected _getFiltersConditions<WhereOptions>(table_main: BaseTable<BaseDatabase, any>, table_joins: {
116
- [table: string]: BaseDatabase_FilterTable<WhereOptions>;
117
- }, idatabase: IFilterableDatabase<WhereOptions>, filters?: FilterItem[] | undefined): Promise<WhereOptions[]>;
118
18
  abstract getSortOptions(sorts?: SortItem[] | undefined): any;
119
19
  }
@@ -44,118 +44,6 @@ class BaseDatabase {
44
44
  let limit = page_size;
45
45
  return { offset, limit };
46
46
  }
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, _c, _d;
88
- let condition;
89
- if (res.partial) {
90
- let wh = {};
91
- wh[column_name] = res.condition;
92
- condition = wh;
93
- }
94
- else
95
- condition = res.condition;
96
- if (is_table_main)
97
- ans.push(condition);
98
- else {
99
- if (res.independant || join.getExtraConditions)
100
- ans.push(yield getCondition_IDInSelect(filter.table.name, (_b = (_a = res.independant) === null || _a === void 0 ? void 0 : _a.not) !== null && _b !== void 0 ? _b : false, [condition, ...((_d = (_c = join.getExtraConditions) === null || _c === void 0 ? void 0 : _c.call(join, filter.column.name)) !== null && _d !== void 0 ? _d : [])]));
101
- else
102
- conditions_in_select_main[filter.table.name].push(condition);
103
- }
104
- });
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) {
126
- if (filter.not)
127
- yield addCondition(idatabase.getGTE(column_name, Math.max(...getNumbers())));
128
- else
129
- yield addCondition(idatabase.getLT(column_name, Math.max(...getNumbers())));
130
- }
131
- else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.lessthanequal) {
132
- if (filter.not)
133
- yield addCondition(idatabase.getGT(column_name, Math.max(...getNumbers())));
134
- else
135
- yield addCondition(idatabase.getLTE(column_name, Math.max(...getNumbers())));
136
- }
137
- else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.morethan) {
138
- if (filter.not)
139
- yield addCondition(idatabase.getLTE(column_name, Math.max(...getNumbers())));
140
- else
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
- }
149
- }
150
- for (let table of Object.keys(conditions_in_select_main)) {
151
- let conditions = conditions_in_select_main[table];
152
- if (conditions.length > 0)
153
- ans.push(yield getCondition_IDInSelect(table, false, conditions));
154
- }
155
- }
156
- return ans;
157
- });
158
- }
159
47
  }
160
48
  exports.BaseDatabase = BaseDatabase;
161
49
  //# sourceMappingURL=BaseDatabase.js.map
@@ -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":";;;;;;;;;;;;AACA,qDAA2D;AAE3D,MAAsB,YAAY;IAAlC;QAEY,WAAM,GAA4B,EAAE,CAAC;IAwCjD,CAAC;IAlCS,UAAU;;QAEhB,CAAC;KAAA;IACK,SAAS;;QAEf,CAAC;KAAA;IACD,QAAQ,CAAC,IAAY,EAAE,KAAU;QAE7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IAC9B,CAAC;IACD,QAAQ,CAAI,IAAY;QAEpB,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAM,CAAC;QACjC,IAAI,CAAC,GAAG;YACJ,gCAAc,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,IAAI,aAAa,CAAC,CAAC;QAC/D,OAAO,GAAG,CAAC;IACf,CAAC;IACD,QAAQ,CAAC,WAAmB,EAAE,SAAiB,EAAE,iBAA0B;QAGvE,IAAI,KAAK,CAAC,WAAW,CAAC;YAClB,WAAW,GAAG,CAAC,CAAC;QAEpB,IAAI,KAAK,CAAC,SAAS,CAAC;YAChB,IAAI,iBAAiB;gBACjB,SAAS,GAAG,iBAAiB,CAAC;QACtC,IAAI,KAAK,CAAC,SAAS,CAAC;YAChB,SAAS,GAAG,EAAE,CAAC;QAEnB,IAAI,MAAM,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;QAC3C,IAAI,KAAK,GAAG,SAAS,CAAC;QACtB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;CAEJ;AA1CD,oCA0CC"}
@@ -0,0 +1,39 @@
1
+ import { FilterItem } from "namirasoft-core";
2
+ export interface BaseFilterItemBuilder_JoinTable<WhereOptions> {
3
+ main: {
4
+ column: string;
5
+ };
6
+ secondary: {
7
+ column: string;
8
+ };
9
+ getExtraConditions?: (column: string) => WhereOptions[];
10
+ }
11
+ export type BaseFilterItemBuilder_Condition<WhereOptions> = {
12
+ condition: WhereOptions;
13
+ partial: boolean;
14
+ independant?: {
15
+ not: boolean;
16
+ };
17
+ };
18
+ export declare abstract class BaseFilterItemBuilder<Table extends {
19
+ getName: () => string;
20
+ }, WhereOptions> {
21
+ build(table_main: Table, table_joins: {
22
+ [table: string]: BaseFilterItemBuilder_JoinTable<WhereOptions>;
23
+ }, filters?: FilterItem[] | undefined): Promise<WhereOptions[]>;
24
+ abstract checkColumn(table_name: string, column_name: string): void;
25
+ abstract getRealColumnName(table_name: string, column_name: string): string;
26
+ abstract getIn(column_name: string, not: boolean, values: string[]): BaseFilterItemBuilder_Condition<WhereOptions>;
27
+ abstract getLike(column_name: string, not: boolean, value: string): BaseFilterItemBuilder_Condition<WhereOptions>;
28
+ abstract getRegex(column_name: string, not: boolean, value: string): BaseFilterItemBuilder_Condition<WhereOptions>;
29
+ abstract getEmpty(column_name: string, not: boolean): BaseFilterItemBuilder_Condition<WhereOptions>;
30
+ abstract getExists(column_name: string, not: boolean): BaseFilterItemBuilder_Condition<WhereOptions>;
31
+ abstract getIncludes(column_name: string, not: boolean, value: string[]): BaseFilterItemBuilder_Condition<WhereOptions>;
32
+ abstract getStartsWith(column_name: string, not: boolean, value: string): BaseFilterItemBuilder_Condition<WhereOptions>;
33
+ abstract getEndsWith(column_name: string, not: boolean, value: string): BaseFilterItemBuilder_Condition<WhereOptions>;
34
+ abstract getLT(column_name: string, value: any): BaseFilterItemBuilder_Condition<WhereOptions>;
35
+ abstract getLTE(column_name: string, value: any): BaseFilterItemBuilder_Condition<WhereOptions>;
36
+ abstract getGT(column_name: string, value: any): BaseFilterItemBuilder_Condition<WhereOptions>;
37
+ abstract getGTE(column_name: string, value: any): BaseFilterItemBuilder_Condition<WhereOptions>;
38
+ abstract getInSelect(table: string, not: boolean, join: BaseFilterItemBuilder_JoinTable<WhereOptions>, conditions: WhereOptions[]): Promise<WhereOptions>;
39
+ }
@@ -0,0 +1,127 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.BaseFilterItemBuilder = void 0;
13
+ const namirasoft_core_1 = require("namirasoft-core");
14
+ class BaseFilterItemBuilder {
15
+ build(table_main, table_joins, filters) {
16
+ return __awaiter(this, void 0, void 0, function* () {
17
+ var _a;
18
+ let ans = [];
19
+ if (filters) {
20
+ let conditions_in_select_main = {};
21
+ Object.keys(table_joins).forEach(table => { conditions_in_select_main[table] = []; });
22
+ let processed = {};
23
+ let getCondition_IDInSelect = (table, not, conditions) => __awaiter(this, void 0, void 0, function* () {
24
+ let join = table_joins[table];
25
+ return this.getInSelect(table, not, join, conditions);
26
+ });
27
+ for (let i = 0; i < filters.length; i++)
28
+ if (!processed[i]) {
29
+ const filter = filters[i];
30
+ this.checkColumn(filter.table.name, filter.column.name);
31
+ let join = table_joins[filter.table.name];
32
+ let is_table_main = table_main.getName() === filter.table.name;
33
+ let column_name = (_a = this.getRealColumnName(filter.table.name, filter.column.name)) !== null && _a !== void 0 ? _a : filter.column.name;
34
+ let values = filter.values;
35
+ if (filter.operator.count > 0)
36
+ for (let j = i + 1; j < filters.length; j++) {
37
+ const f = filters[j];
38
+ if (filter.table.name == f.table.name)
39
+ if (filter.column.name == f.column.name)
40
+ if (filter.not == f.not)
41
+ if (filter.operator.sign == f.operator.sign) {
42
+ processed[j] = true;
43
+ values.push(...f.values);
44
+ }
45
+ }
46
+ let getNumbers = () => {
47
+ let nums = values.map(x => parseFloat(x));
48
+ if (nums.filter(x => isNaN(x)).length > 0)
49
+ namirasoft_core_1.ErrorOperation.throwHTTP(400, `Invalid number values for: '${values.join(",")}'`);
50
+ return nums;
51
+ };
52
+ let addCondition = (res) => __awaiter(this, void 0, void 0, function* () {
53
+ var _a, _b, _c, _d;
54
+ let condition;
55
+ if (res.partial) {
56
+ let wh = {};
57
+ wh[column_name] = res.condition;
58
+ condition = wh;
59
+ }
60
+ else
61
+ condition = res.condition;
62
+ if (is_table_main)
63
+ ans.push(condition);
64
+ else {
65
+ if (res.independant || join.getExtraConditions)
66
+ ans.push(yield getCondition_IDInSelect(filter.table.name, (_b = (_a = res.independant) === null || _a === void 0 ? void 0 : _a.not) !== null && _b !== void 0 ? _b : false, [condition, ...((_d = (_c = join.getExtraConditions) === null || _c === void 0 ? void 0 : _c.call(join, filter.column.name)) !== null && _d !== void 0 ? _d : [])]));
67
+ else
68
+ conditions_in_select_main[filter.table.name].push(condition);
69
+ }
70
+ });
71
+ if (filter.operator == namirasoft_core_1.FilterItemOperator.all.equals)
72
+ yield addCondition(this.getIn(column_name, filter.not, values));
73
+ else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.contains)
74
+ for (const value of values)
75
+ yield addCondition(this.getLike(column_name, filter.not, value));
76
+ else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.regex)
77
+ for (const value of values)
78
+ yield addCondition(this.getRegex(column_name, filter.not, value));
79
+ else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.empty)
80
+ yield addCondition(this.getEmpty(column_name, filter.not));
81
+ else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.exists)
82
+ yield addCondition(this.getExists(column_name, filter.not));
83
+ else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.includes)
84
+ yield addCondition(this.getIncludes(column_name, filter.not, values));
85
+ else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.startswith)
86
+ for (const value of values)
87
+ yield addCondition(this.getStartsWith(column_name, filter.not, value));
88
+ else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.endswith)
89
+ for (const value of values)
90
+ yield addCondition(this.getEndsWith(column_name, filter.not, value));
91
+ else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.lessthan) {
92
+ if (filter.not)
93
+ yield addCondition(this.getGTE(column_name, Math.max(...getNumbers())));
94
+ else
95
+ yield addCondition(this.getLT(column_name, Math.max(...getNumbers())));
96
+ }
97
+ else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.lessthanequal) {
98
+ if (filter.not)
99
+ yield addCondition(this.getGT(column_name, Math.max(...getNumbers())));
100
+ else
101
+ yield addCondition(this.getLTE(column_name, Math.max(...getNumbers())));
102
+ }
103
+ else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.morethan) {
104
+ if (filter.not)
105
+ yield addCondition(this.getLTE(column_name, Math.max(...getNumbers())));
106
+ else
107
+ yield addCondition(this.getGT(column_name, Math.max(...getNumbers())));
108
+ }
109
+ else if (filter.operator == namirasoft_core_1.FilterItemOperator.all.morethanequal) {
110
+ if (filter.not)
111
+ yield addCondition(this.getLT(column_name, Math.max(...getNumbers())));
112
+ else
113
+ yield addCondition(this.getGTE(column_name, Math.max(...getNumbers())));
114
+ }
115
+ }
116
+ for (let table of Object.keys(conditions_in_select_main)) {
117
+ let conditions = conditions_in_select_main[table];
118
+ if (conditions.length > 0)
119
+ ans.push(yield getCondition_IDInSelect(table, false, conditions));
120
+ }
121
+ }
122
+ return ans;
123
+ });
124
+ }
125
+ }
126
+ exports.BaseFilterItemBuilder = BaseFilterItemBuilder;
127
+ //# sourceMappingURL=BaseFilterItemBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseFilterItemBuilder.js","sourceRoot":"","sources":["../src/BaseFilterItemBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { BaseTable } from "./BaseTable";
2
+ import { BaseDatabase } from "./BaseDatabase";
3
+ import { BaseFilterItemBuilder } from "./BaseFilterItemBuilder";
4
+ export declare abstract class BaseFilterItemBuilderDatabase<WhereOptions> extends BaseFilterItemBuilder<BaseTable<BaseDatabase, any>, WhereOptions> {
5
+ database: BaseDatabase;
6
+ constructor(database: BaseDatabase);
7
+ checkColumn(table_name: string, column_name: string): void;
8
+ getRealColumnName(table_name: string, column_name: string): string;
9
+ }
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseFilterItemBuilderDatabase = void 0;
4
+ const BaseFilterItemBuilder_1 = require("./BaseFilterItemBuilder");
5
+ class BaseFilterItemBuilderDatabase extends BaseFilterItemBuilder_1.BaseFilterItemBuilder {
6
+ constructor(database) {
7
+ super();
8
+ this.database = database;
9
+ }
10
+ checkColumn(table_name, column_name) {
11
+ let t = this.database.getTable(table_name);
12
+ t.checkColumn(column_name, false, null);
13
+ }
14
+ getRealColumnName(table_name, column_name) {
15
+ let t = this.database.getTable(table_name);
16
+ return t.getRealColumnName(column_name);
17
+ }
18
+ }
19
+ exports.BaseFilterItemBuilderDatabase = BaseFilterItemBuilderDatabase;
20
+ //# sourceMappingURL=BaseFilterItemBuilderDatabase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseFilterItemBuilderDatabase.js","sourceRoot":"","sources":["../src/BaseFilterItemBuilderDatabase.ts"],"names":[],"mappings":";;;AAEA,mEAAgE;AAEhE,MAAsB,6BAA4C,SAAQ,6CAAiE;IAEvI,YAAmB,QAAsB;QAErC,KAAK,EAAE,CAAC;QAFO,aAAQ,GAAR,QAAQ,CAAc;IAGzC,CAAC;IACM,WAAW,CAAC,UAAkB,EAAE,WAAmB;QAEtD,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAA+B,UAAU,CAAC,CAAC;QACzE,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IACM,iBAAiB,CAAC,UAAkB,EAAE,WAAmB;QAE5D,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAA+B,UAAU,CAAC,CAAC;QACzE,OAAO,CAAC,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC5C,CAAC;CACJ;AAhBD,sEAgBC"}
package/dist/index.d.ts CHANGED
@@ -5,6 +5,8 @@ export * from "./BaseController";
5
5
  export * from "./BaseCron";
6
6
  export * from "./BaseDatabase";
7
7
  export * from "./BaseEmailService";
8
+ export * from "./BaseFilterItemBuilder";
9
+ export * from "./BaseFilterItemBuilderDatabase";
8
10
  export * from "./BaseTable";
9
11
  export * from "./CommandOperation";
10
12
  export * from "./EmptyDatabase";
package/dist/index.js CHANGED
@@ -21,6 +21,8 @@ __exportStar(require("./BaseController"), exports);
21
21
  __exportStar(require("./BaseCron"), exports);
22
22
  __exportStar(require("./BaseDatabase"), exports);
23
23
  __exportStar(require("./BaseEmailService"), exports);
24
+ __exportStar(require("./BaseFilterItemBuilder"), exports);
25
+ __exportStar(require("./BaseFilterItemBuilderDatabase"), exports);
24
26
  __exportStar(require("./BaseTable"), exports);
25
27
  __exportStar(require("./CommandOperation"), exports);
26
28
  __exportStar(require("./EmptyDatabase"), exports);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,oDAAkC;AAClC,wDAAsC;AACtC,mDAAiC;AACjC,6CAA2B;AAC3B,iDAA+B;AAC/B,qDAAmC;AACnC,8CAA4B;AAC5B,qDAAmC;AACnC,kDAAgC;AAChC,iDAA+B;AAC/B,gDAA8B;AAC9B,yCAAuB;AACvB,iDAA+B;AAC/B,yDAAuC;AACvC,4DAA0C;AAC1C,gDAA8B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,oDAAkC;AAClC,wDAAsC;AACtC,mDAAiC;AACjC,6CAA2B;AAC3B,iDAA+B;AAC/B,qDAAmC;AACnC,0DAAwC;AACxC,kEAAgD;AAChD,8CAA4B;AAC5B,qDAAmC;AACnC,kDAAgC;AAChC,iDAA+B;AAC/B,gDAA8B;AAC9B,yCAAuB;AACvB,iDAA+B;AAC/B,yDAAuC;AACvC,4DAA0C;AAC1C,gDAA8B"}
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "framework": "npm",
9
9
  "application": "package",
10
10
  "private": false,
11
- "version": "1.4.54",
11
+ "version": "1.4.56",
12
12
  "author": "Amir Abolhasani",
13
13
  "license": "MIT",
14
14
  "main": "./dist/index.js",
@@ -20,7 +20,7 @@
20
20
  "@supercharge/request-ip": "^1.2.0",
21
21
  "@types/cors": "^2.8.17",
22
22
  "@types/express": "^5.0.0",
23
- "@types/node": "^22.10.6",
23
+ "@types/node": "^22.10.7",
24
24
  "@types/node-cron": "^3.0.11",
25
25
  "@types/nodemailer": "^6.4.17",
26
26
  "@types/nodemailer-smtp-transport": "^2.7.8",
@@ -31,7 +31,7 @@
31
31
  "express": "^4.21.2",
32
32
  "joi": "^17.13.3",
33
33
  "namirasoft-core": "^1.4.42",
34
- "namirasoft-log": "^1.4.15",
34
+ "namirasoft-log": "^1.4.16",
35
35
  "namirasoft-schema": "^1.4.22",
36
36
  "node-cron": "^3.0.3",
37
37
  "nodemailer": "^6.9.16",
@@ -1,34 +1,5 @@
1
1
  import * as express from "express";
2
- import { ErrorOperation, FilterItem, FilterItemOperator, SortItem } from "namirasoft-core";
3
- import { BaseTable } from "./BaseTable";
4
-
5
- export interface BaseDatabase_FilterTable<WhereOptions>
6
- {
7
- main: {
8
- column: string;
9
- };
10
- secondary: {
11
- column: string;
12
- };
13
- getExtraConditions?: (column: string) => WhereOptions[];
14
- }
15
-
16
- export interface IFilterableDatabase<WhereOptions>
17
- {
18
- getIn: (column_name: string, not: boolean, values: string[]) => { condition: WhereOptions, partial: boolean, independant?: { not: boolean } };
19
- getLike: (column_name: string, not: boolean, value: string) => { condition: WhereOptions, partial: boolean, independant?: { not: boolean } };
20
- getRegex: (column_name: string, not: boolean, value: string) => { condition: WhereOptions, partial: boolean, independant?: { not: boolean } };
21
- getEmpty: (column_name: string, not: boolean) => { condition: WhereOptions, partial: boolean, independant?: { not: boolean } };
22
- getExists: (column_name: string, not: boolean) => { condition: WhereOptions, partial: boolean, independant?: { not: boolean } };
23
- getIncludes: (column_name: string, not: boolean, value: string[]) => { condition: WhereOptions, partial: boolean, independant?: { not: boolean } };
24
- getStartsWith: (column_name: string, not: boolean, value: string) => { condition: WhereOptions, partial: boolean, independant?: { not: boolean } };
25
- getEndsWith: (column_name: string, not: boolean, value: string) => { condition: WhereOptions, partial: boolean, independant?: { not: boolean } };
26
- getLT: (column_name: string, value: any) => { condition: WhereOptions, partial: boolean, independant?: { not: boolean } };
27
- getLTE: (column_name: string, value: any) => { condition: WhereOptions, partial: boolean, independant?: { not: boolean } };
28
- getGT: (column_name: string, value: any) => { condition: WhereOptions, partial: boolean, independant?: { not: boolean } };
29
- getGTE: (column_name: string, value: any) => { condition: WhereOptions, partial: boolean, independant?: { not: boolean } };
30
- getInSelect: (t: BaseTable<BaseDatabase, any>, not: boolean, join: BaseDatabase_FilterTable<WhereOptions>, conditions: WhereOptions[]) => Promise<WhereOptions>;
31
- }
2
+ import { ErrorOperation, SortItem } from "namirasoft-core";
32
3
 
33
4
  export abstract class BaseDatabase
34
5
  {
@@ -71,132 +42,5 @@ export abstract class BaseDatabase
71
42
  let limit = page_size;
72
43
  return { offset, limit };
73
44
  }
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[]>
75
- {
76
- let ans: WhereOptions[] = [];
77
- if (filters)
78
- {
79
- let conditions_in_select_main: { [table: string]: WhereOptions[] } = {};
80
- Object.keys(table_joins).forEach(table => { conditions_in_select_main[table] = []; });
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
-
90
- for (let i = 0; i < filters.length; i++)
91
- if (!processed[i])
92
- {
93
- const filter = filters[i];
94
- let t = this.getTable<BaseTable<BaseDatabase, any>>(filter.table.name);
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
-
100
- let values = filter.values;
101
- if (filter.operator.count > 0)
102
- for (let j = i + 1; j < filters.length; j++)
103
- {
104
- const f = filters[j];
105
- if (filter.table.name == f.table.name)
106
- if (filter.column.name == f.column.name)
107
- if (filter.not == f.not)
108
- if (filter.operator.sign == f.operator.sign)
109
- {
110
- processed[j] = true;
111
- values.push(...f.values);
112
- }
113
- }
114
-
115
- let getNumbers = () =>
116
- {
117
- let nums: number[] = values.map(x => parseFloat(x));
118
- if (nums.filter(x => isNaN(x)).length > 0)
119
- ErrorOperation.throwHTTP(400, `Invalid number values for: '${values.join(",")}'`);
120
- return nums;
121
- };
122
- let addCondition = async (res: { condition: WhereOptions, partial: boolean, independant?: { not: boolean } }) =>
123
- {
124
- let condition: WhereOptions;
125
- if (res.partial)
126
- {
127
- let wh: any = {};
128
- wh[column_name] = res.condition;
129
- condition = wh;
130
- }
131
- else
132
- condition = res.condition;
133
- if (is_table_main)
134
- ans.push(condition);
135
- else
136
- {
137
- if (res.independant || join.getExtraConditions)
138
- ans.push(await getCondition_IDInSelect(filter.table.name, res.independant?.not ?? false, [condition, ...(join.getExtraConditions?.(filter.column.name) ?? [])]));
139
- else
140
- conditions_in_select_main[filter.table.name].push(condition);
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));
148
- else if (filter.operator == FilterItemOperator.all.regex)
149
- for (const value of values)
150
- await addCondition(idatabase.getRegex(column_name, filter.not, value));
151
- else if (filter.operator == FilterItemOperator.all.empty)
152
- await addCondition(idatabase.getEmpty(column_name, filter.not));
153
- else if (filter.operator == FilterItemOperator.all.exists)
154
- await addCondition(idatabase.getExists(column_name, filter.not));
155
- else if (filter.operator == FilterItemOperator.all.includes)
156
- await addCondition(idatabase.getIncludes(column_name, filter.not, values));
157
- else if (filter.operator == FilterItemOperator.all.startswith)
158
- for (const value of values)
159
- await addCondition(idatabase.getStartsWith(column_name, filter.not, value));
160
- else if (filter.operator == FilterItemOperator.all.endswith)
161
- for (const value of values)
162
- await addCondition(idatabase.getEndsWith(column_name, filter.not, value));
163
- else if (filter.operator == FilterItemOperator.all.lessthan)
164
- {
165
- if (filter.not)
166
- await addCondition(idatabase.getGTE(column_name, Math.max(...getNumbers())));
167
- else
168
- await addCondition(idatabase.getLT(column_name, Math.max(...getNumbers())));
169
- }
170
- else if (filter.operator == FilterItemOperator.all.lessthanequal)
171
- {
172
- if (filter.not)
173
- await addCondition(idatabase.getGT(column_name, Math.max(...getNumbers())));
174
- else
175
- await addCondition(idatabase.getLTE(column_name, Math.max(...getNumbers())));
176
- }
177
- else if (filter.operator == FilterItemOperator.all.morethan)
178
- {
179
- if (filter.not)
180
- await addCondition(idatabase.getLTE(column_name, Math.max(...getNumbers())));
181
- else
182
- await addCondition(idatabase.getGT(column_name, Math.max(...getNumbers())));
183
- }
184
- else if (filter.operator == FilterItemOperator.all.morethanequal)
185
- {
186
- if (filter.not)
187
- await addCondition(idatabase.getLT(column_name, Math.max(...getNumbers())));
188
- else
189
- await addCondition(idatabase.getGTE(column_name, Math.max(...getNumbers())));
190
- }
191
- }
192
- for (let table of Object.keys(conditions_in_select_main))
193
- {
194
- let conditions = conditions_in_select_main[table];
195
- if (conditions.length > 0)
196
- ans.push(await getCondition_IDInSelect(table, false, conditions));
197
- }
198
- }
199
- return ans;
200
- }
201
45
  public abstract getSortOptions(sorts?: SortItem[] | undefined): any;
202
46
  }
@@ -0,0 +1,162 @@
1
+ import { ErrorOperation, FilterItem, FilterItemOperator } from "namirasoft-core";
2
+
3
+ export interface BaseFilterItemBuilder_JoinTable<WhereOptions>
4
+ {
5
+ main: {
6
+ column: string;
7
+ };
8
+ secondary: {
9
+ column: string;
10
+ };
11
+ getExtraConditions?: (column: string) => WhereOptions[];
12
+ }
13
+
14
+ export type BaseFilterItemBuilder_Condition<WhereOptions> = {
15
+ condition: WhereOptions;
16
+ partial: boolean;
17
+ independant?: { not: boolean };
18
+ };
19
+
20
+ export abstract class BaseFilterItemBuilder<Table extends { getName: () => string; }, WhereOptions>
21
+ {
22
+ public async build(table_main: Table, table_joins: { [table: string]: BaseFilterItemBuilder_JoinTable<WhereOptions> }, filters?: FilterItem[] | undefined): Promise<WhereOptions[]>
23
+ {
24
+ let ans: WhereOptions[] = [];
25
+ if (filters)
26
+ {
27
+ let conditions_in_select_main: { [table: string]: WhereOptions[] } = {};
28
+ Object.keys(table_joins).forEach(table => { conditions_in_select_main[table] = []; });
29
+ let processed: { [index: number]: boolean } = {};
30
+
31
+ let getCondition_IDInSelect = async (table: string, not: boolean, conditions: WhereOptions[]): Promise<WhereOptions> =>
32
+ {
33
+ let join = table_joins[table];
34
+ return this.getInSelect(table, not, join, conditions);
35
+ }
36
+
37
+ for (let i = 0; i < filters.length; i++)
38
+ if (!processed[i])
39
+ {
40
+ const filter = filters[i];
41
+ this.checkColumn(filter.table.name, filter.column.name);
42
+ let join = table_joins[filter.table.name];
43
+ let is_table_main = table_main.getName() === filter.table.name;
44
+ let column_name = this.getRealColumnName(filter.table.name, filter.column.name) ?? filter.column.name;
45
+
46
+ let values = filter.values;
47
+ if (filter.operator.count > 0)
48
+ for (let j = i + 1; j < filters.length; j++)
49
+ {
50
+ const f = filters[j];
51
+ if (filter.table.name == f.table.name)
52
+ if (filter.column.name == f.column.name)
53
+ if (filter.not == f.not)
54
+ if (filter.operator.sign == f.operator.sign)
55
+ {
56
+ processed[j] = true;
57
+ values.push(...f.values);
58
+ }
59
+ }
60
+
61
+ let getNumbers = () =>
62
+ {
63
+ let nums: number[] = values.map(x => parseFloat(x));
64
+ if (nums.filter(x => isNaN(x)).length > 0)
65
+ ErrorOperation.throwHTTP(400, `Invalid number values for: '${values.join(",")}'`);
66
+ return nums;
67
+ };
68
+ let addCondition = async (res: { condition: WhereOptions, partial: boolean, independant?: { not: boolean } }) =>
69
+ {
70
+ let condition: WhereOptions;
71
+ if (res.partial)
72
+ {
73
+ let wh: any = {};
74
+ wh[column_name] = res.condition;
75
+ condition = wh;
76
+ }
77
+ else
78
+ condition = res.condition;
79
+ if (is_table_main)
80
+ ans.push(condition);
81
+ else
82
+ {
83
+ if (res.independant || join.getExtraConditions)
84
+ ans.push(await getCondition_IDInSelect(filter.table.name, res.independant?.not ?? false, [condition, ...(join.getExtraConditions?.(filter.column.name) ?? [])]));
85
+ else
86
+ conditions_in_select_main[filter.table.name].push(condition);
87
+ }
88
+ };
89
+ if (filter.operator == FilterItemOperator.all.equals)
90
+ await addCondition(this.getIn(column_name, filter.not, values));
91
+ else if (filter.operator == FilterItemOperator.all.contains)
92
+ for (const value of values)
93
+ await addCondition(this.getLike(column_name, filter.not, value));
94
+ else if (filter.operator == FilterItemOperator.all.regex)
95
+ for (const value of values)
96
+ await addCondition(this.getRegex(column_name, filter.not, value));
97
+ else if (filter.operator == FilterItemOperator.all.empty)
98
+ await addCondition(this.getEmpty(column_name, filter.not));
99
+ else if (filter.operator == FilterItemOperator.all.exists)
100
+ await addCondition(this.getExists(column_name, filter.not));
101
+ else if (filter.operator == FilterItemOperator.all.includes)
102
+ await addCondition(this.getIncludes(column_name, filter.not, values));
103
+ else if (filter.operator == FilterItemOperator.all.startswith)
104
+ for (const value of values)
105
+ await addCondition(this.getStartsWith(column_name, filter.not, value));
106
+ else if (filter.operator == FilterItemOperator.all.endswith)
107
+ for (const value of values)
108
+ await addCondition(this.getEndsWith(column_name, filter.not, value));
109
+ else if (filter.operator == FilterItemOperator.all.lessthan)
110
+ {
111
+ if (filter.not)
112
+ await addCondition(this.getGTE(column_name, Math.max(...getNumbers())));
113
+ else
114
+ await addCondition(this.getLT(column_name, Math.max(...getNumbers())));
115
+ }
116
+ else if (filter.operator == FilterItemOperator.all.lessthanequal)
117
+ {
118
+ if (filter.not)
119
+ await addCondition(this.getGT(column_name, Math.max(...getNumbers())));
120
+ else
121
+ await addCondition(this.getLTE(column_name, Math.max(...getNumbers())));
122
+ }
123
+ else if (filter.operator == FilterItemOperator.all.morethan)
124
+ {
125
+ if (filter.not)
126
+ await addCondition(this.getLTE(column_name, Math.max(...getNumbers())));
127
+ else
128
+ await addCondition(this.getGT(column_name, Math.max(...getNumbers())));
129
+ }
130
+ else if (filter.operator == FilterItemOperator.all.morethanequal)
131
+ {
132
+ if (filter.not)
133
+ await addCondition(this.getLT(column_name, Math.max(...getNumbers())));
134
+ else
135
+ await addCondition(this.getGTE(column_name, Math.max(...getNumbers())));
136
+ }
137
+ }
138
+ for (let table of Object.keys(conditions_in_select_main))
139
+ {
140
+ let conditions = conditions_in_select_main[table];
141
+ if (conditions.length > 0)
142
+ ans.push(await getCondition_IDInSelect(table, false, conditions));
143
+ }
144
+ }
145
+ return ans;
146
+ }
147
+ public abstract checkColumn(table_name: string, column_name: string,): void;
148
+ public abstract getRealColumnName(table_name: string, column_name: string,): string;
149
+ public abstract getIn(column_name: string, not: boolean, values: string[]): BaseFilterItemBuilder_Condition<WhereOptions>;
150
+ public abstract getLike(column_name: string, not: boolean, value: string): BaseFilterItemBuilder_Condition<WhereOptions>;
151
+ public abstract getRegex(column_name: string, not: boolean, value: string): BaseFilterItemBuilder_Condition<WhereOptions>;
152
+ public abstract getEmpty(column_name: string, not: boolean): BaseFilterItemBuilder_Condition<WhereOptions>;
153
+ public abstract getExists(column_name: string, not: boolean): BaseFilterItemBuilder_Condition<WhereOptions>;
154
+ public abstract getIncludes(column_name: string, not: boolean, value: string[]): BaseFilterItemBuilder_Condition<WhereOptions>;
155
+ public abstract getStartsWith(column_name: string, not: boolean, value: string): BaseFilterItemBuilder_Condition<WhereOptions>;
156
+ public abstract getEndsWith(column_name: string, not: boolean, value: string): BaseFilterItemBuilder_Condition<WhereOptions>;
157
+ public abstract getLT(column_name: string, value: any): BaseFilterItemBuilder_Condition<WhereOptions>;
158
+ public abstract getLTE(column_name: string, value: any): BaseFilterItemBuilder_Condition<WhereOptions>;
159
+ public abstract getGT(column_name: string, value: any): BaseFilterItemBuilder_Condition<WhereOptions>;
160
+ public abstract getGTE(column_name: string, value: any): BaseFilterItemBuilder_Condition<WhereOptions>;
161
+ public abstract getInSelect(table: string, not: boolean, join: BaseFilterItemBuilder_JoinTable<WhereOptions>, conditions: WhereOptions[]): Promise<WhereOptions>;
162
+ }
@@ -0,0 +1,21 @@
1
+ import { BaseTable } from "./BaseTable";
2
+ import { BaseDatabase } from "./BaseDatabase";
3
+ import { BaseFilterItemBuilder } from "./BaseFilterItemBuilder";
4
+
5
+ export abstract class BaseFilterItemBuilderDatabase<WhereOptions> extends BaseFilterItemBuilder<BaseTable<BaseDatabase, any>, WhereOptions>
6
+ {
7
+ constructor(public database: BaseDatabase)
8
+ {
9
+ super();
10
+ }
11
+ public checkColumn(table_name: string, column_name: string,): void
12
+ {
13
+ let t = this.database.getTable<BaseTable<BaseDatabase, any>>(table_name);
14
+ t.checkColumn(column_name, false, null);
15
+ }
16
+ public getRealColumnName(table_name: string, column_name: string,): string
17
+ {
18
+ let t = this.database.getTable<BaseTable<BaseDatabase, any>>(table_name);
19
+ return t.getRealColumnName(column_name);
20
+ }
21
+ }
package/src/index.ts CHANGED
@@ -5,6 +5,8 @@ export * from "./BaseController";
5
5
  export * from "./BaseCron";
6
6
  export * from "./BaseDatabase";
7
7
  export * from "./BaseEmailService";
8
+ export * from "./BaseFilterItemBuilder";
9
+ export * from "./BaseFilterItemBuilderDatabase";
8
10
  export * from "./BaseTable";
9
11
  export * from "./CommandOperation";
10
12
  export * from "./EmptyDatabase";