functional-models 3.0.6 → 3.0.7
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/README.md +45 -5
- package/index.d.ts +2 -0
- package/index.js +3 -1
- package/index.js.map +1 -1
- package/lib.d.ts +6 -2
- package/lib.js +8 -1
- package/lib.js.map +1 -1
- package/orm/index.d.ts +9 -0
- package/orm/index.js +49 -0
- package/orm/index.js.map +1 -0
- package/orm/models.d.ts +12 -0
- package/orm/models.js +232 -0
- package/orm/models.js.map +1 -0
- package/orm/properties.d.ts +31 -0
- package/orm/properties.js +36 -0
- package/orm/properties.js.map +1 -0
- package/orm/query.d.ts +121 -0
- package/orm/query.js +279 -0
- package/orm/query.js.map +1 -0
- package/orm/types.d.ts +551 -0
- package/orm/types.js +44 -0
- package/orm/types.js.map +1 -0
- package/orm/validation.d.ts +21 -0
- package/orm/validation.js +93 -0
- package/orm/validation.js.map +1 -0
- package/package.json +2 -1
- package/types.d.ts +13 -1
- package/utils.d.ts +2 -1
- package/utils.js +15 -1
- package/utils.js.map +1 -1
package/orm/query.d.ts
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { DatastoreValueType, DatesAfterQuery, DatesBeforeQuery, EqualitySymbol, MaxMatchStatement, PaginationQuery, PropertyOptions, PropertyQuery, QueryBuilder, SortOrder, SortStatement } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a property query.
|
|
4
|
+
* @param key - The property's name/key/column to match on
|
|
5
|
+
* @param value - The value to match
|
|
6
|
+
* @param options - Additional options for changing this property query.
|
|
7
|
+
*/
|
|
8
|
+
declare const property: (key: string, value: any, options?: PropertyOptions) => PropertyQuery;
|
|
9
|
+
/**
|
|
10
|
+
* Limits the number of results to the provided count.
|
|
11
|
+
* @param max - The maximum results to find
|
|
12
|
+
*/
|
|
13
|
+
declare const take: (max: number) => MaxMatchStatement;
|
|
14
|
+
/**
|
|
15
|
+
* Creates a sort query
|
|
16
|
+
* @param key - The key to sort on
|
|
17
|
+
* @param order - The order of the sort.
|
|
18
|
+
*/
|
|
19
|
+
declare const sort: (key: string, order?: SortOrder | undefined) => SortStatement;
|
|
20
|
+
/**
|
|
21
|
+
* Creates a pagination query.
|
|
22
|
+
* @param value - Anything
|
|
23
|
+
*/
|
|
24
|
+
declare const pagination: (value: any) => PaginationQuery;
|
|
25
|
+
/**
|
|
26
|
+
* Creates a query that looks at dated objects after the given date.
|
|
27
|
+
* @param key - The property's key
|
|
28
|
+
* @param jsDate - The date value being examined
|
|
29
|
+
* @param options - Additional options
|
|
30
|
+
*/
|
|
31
|
+
declare const datesAfter: (key: string, jsDate: Date | string, options?: {
|
|
32
|
+
valueType: DatastoreValueType;
|
|
33
|
+
equalToAndAfter: boolean;
|
|
34
|
+
}) => DatesAfterQuery;
|
|
35
|
+
/**
|
|
36
|
+
* Creates a search query that looks at dates before the given date.
|
|
37
|
+
* @param key - The property's key
|
|
38
|
+
* @param jsDate - The date value being examined.
|
|
39
|
+
* @param options - Additional options
|
|
40
|
+
*/
|
|
41
|
+
declare const datesBefore: (key: string, jsDate: Date | string, options?: {
|
|
42
|
+
valueType: DatastoreValueType;
|
|
43
|
+
equalToAndBefore: boolean;
|
|
44
|
+
}) => DatesBeforeQuery;
|
|
45
|
+
/**
|
|
46
|
+
* Creates a builder that can create search queries.
|
|
47
|
+
* This is a structured way to build search queries.
|
|
48
|
+
*/
|
|
49
|
+
declare const queryBuilder: () => QueryBuilder;
|
|
50
|
+
/**
|
|
51
|
+
* Determines if the value is an Orm Property based statement
|
|
52
|
+
* @param value
|
|
53
|
+
*/
|
|
54
|
+
declare const isPropertyBasedQuery: (value: string | undefined) => boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Determines if the value is a boolean
|
|
57
|
+
* @param value - The value to examine.
|
|
58
|
+
*/
|
|
59
|
+
declare const isALinkToken: (value: string) => boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Creates an AND
|
|
62
|
+
*/
|
|
63
|
+
declare const and: () => string;
|
|
64
|
+
/**
|
|
65
|
+
* Creates an OR
|
|
66
|
+
*/
|
|
67
|
+
declare const or: () => string;
|
|
68
|
+
/**
|
|
69
|
+
* A helper query that is text based.
|
|
70
|
+
* @param key - The property key/name
|
|
71
|
+
* @param value - The value to match
|
|
72
|
+
* @param options - Additional text based options
|
|
73
|
+
*/
|
|
74
|
+
declare const textQuery: (key: string, value: string | undefined | null, options?: Omit<Partial<PropertyOptions>, "type" | "equalitySymbol">) => Readonly<{
|
|
75
|
+
type: "property";
|
|
76
|
+
key: string;
|
|
77
|
+
value: any;
|
|
78
|
+
valueType: DatastoreValueType;
|
|
79
|
+
equalitySymbol: EqualitySymbol;
|
|
80
|
+
options: {
|
|
81
|
+
caseSensitive?: boolean;
|
|
82
|
+
startsWith?: boolean;
|
|
83
|
+
endsWith?: boolean;
|
|
84
|
+
};
|
|
85
|
+
}>;
|
|
86
|
+
/**
|
|
87
|
+
* A helper query that is number based.
|
|
88
|
+
* @param key - The property key/name
|
|
89
|
+
* @param value - The value to match
|
|
90
|
+
* @param equalitySymbol - A matching symbol for the number
|
|
91
|
+
*/
|
|
92
|
+
declare const numberQuery: (key: string, value: number | string | undefined | null, equalitySymbol?: EqualitySymbol) => Readonly<{
|
|
93
|
+
type: "property";
|
|
94
|
+
key: string;
|
|
95
|
+
value: any;
|
|
96
|
+
valueType: DatastoreValueType;
|
|
97
|
+
equalitySymbol: EqualitySymbol;
|
|
98
|
+
options: {
|
|
99
|
+
caseSensitive?: boolean;
|
|
100
|
+
startsWith?: boolean;
|
|
101
|
+
endsWith?: boolean;
|
|
102
|
+
};
|
|
103
|
+
}>;
|
|
104
|
+
/**
|
|
105
|
+
* A helper query that is for boolean values.
|
|
106
|
+
* @param key - The property key/name
|
|
107
|
+
* @param value - The value to match
|
|
108
|
+
*/
|
|
109
|
+
declare const booleanQuery: (key: string, value: boolean | undefined | null) => Readonly<{
|
|
110
|
+
type: "property";
|
|
111
|
+
key: string;
|
|
112
|
+
value: any;
|
|
113
|
+
valueType: DatastoreValueType;
|
|
114
|
+
equalitySymbol: EqualitySymbol;
|
|
115
|
+
options: {
|
|
116
|
+
caseSensitive?: boolean;
|
|
117
|
+
startsWith?: boolean;
|
|
118
|
+
endsWith?: boolean;
|
|
119
|
+
};
|
|
120
|
+
}>;
|
|
121
|
+
export { queryBuilder, take, pagination, sort, property, and, or, isALinkToken, isPropertyBasedQuery, datesBefore, datesAfter, textQuery, numberQuery, booleanQuery, };
|
package/orm/query.js
ADDED
|
@@ -0,0 +1,279 @@
|
|
|
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
|
+
exports.booleanQuery = exports.numberQuery = exports.textQuery = exports.datesAfter = exports.datesBefore = exports.isPropertyBasedQuery = exports.isALinkToken = exports.or = exports.and = exports.property = exports.sort = exports.pagination = exports.take = exports.queryBuilder = void 0;
|
|
7
|
+
const merge_1 = __importDefault(require("lodash/merge"));
|
|
8
|
+
const omit_1 = __importDefault(require("lodash/omit"));
|
|
9
|
+
const types_1 = require("./types");
|
|
10
|
+
const _objectize = (key, value) => {
|
|
11
|
+
return value
|
|
12
|
+
? {
|
|
13
|
+
[key]: value,
|
|
14
|
+
}
|
|
15
|
+
: {};
|
|
16
|
+
};
|
|
17
|
+
const _additionalLink = (data) => {
|
|
18
|
+
const inner = _builderV2(data);
|
|
19
|
+
const partialLink = (0, omit_1.default)(_link(data), ['and', 'or']);
|
|
20
|
+
// @ts-ignore
|
|
21
|
+
return Object.assign(Object.assign({}, inner), partialLink);
|
|
22
|
+
};
|
|
23
|
+
const _link = (data) => {
|
|
24
|
+
return {
|
|
25
|
+
and: () => {
|
|
26
|
+
return _queryBuilder(Object.assign(Object.assign({}, data), { query: data.query.concat('AND') }));
|
|
27
|
+
},
|
|
28
|
+
or: () => {
|
|
29
|
+
return _queryBuilder(Object.assign(Object.assign({}, data), { query: data.query.concat('OR') }));
|
|
30
|
+
},
|
|
31
|
+
compile: () => {
|
|
32
|
+
return data;
|
|
33
|
+
},
|
|
34
|
+
take: (num) => {
|
|
35
|
+
return _additionalLink(Object.assign(Object.assign({}, data), { take: take(num) }));
|
|
36
|
+
},
|
|
37
|
+
sort: (key, order = types_1.SortOrder.asc) => {
|
|
38
|
+
return _additionalLink(Object.assign(Object.assign({}, data), { sort: sort(key, order) }));
|
|
39
|
+
},
|
|
40
|
+
pagination: (value) => {
|
|
41
|
+
return _additionalLink(Object.assign(Object.assign({}, data), { page: pagination(value) }));
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
const _canCompile = (obj) => {
|
|
46
|
+
return Boolean(obj.compile);
|
|
47
|
+
};
|
|
48
|
+
const _builderV2 = (data) => {
|
|
49
|
+
const _myProperty = (name, value, options) => {
|
|
50
|
+
// @ts-ignore
|
|
51
|
+
const p = property(name, value, options);
|
|
52
|
+
return _link((0, merge_1.default)(data, { query: data.query.concat(p) }));
|
|
53
|
+
};
|
|
54
|
+
const complex = (subBuilderFunc) => {
|
|
55
|
+
const subBuilder = _queryBuilder();
|
|
56
|
+
const result = subBuilderFunc(subBuilder);
|
|
57
|
+
if (_canCompile(result)) {
|
|
58
|
+
const queryTokens = [result.compile().query];
|
|
59
|
+
return _link((0, merge_1.default)(data, {
|
|
60
|
+
query: data.query.concat(queryTokens),
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
63
|
+
// @ts-ignore
|
|
64
|
+
return _link((0, merge_1.default)(data, { query: data.query.concat([result.query]) }));
|
|
65
|
+
};
|
|
66
|
+
const thisDatesBefore = (key, jsDate, { valueType = types_1.DatastoreValueType.string, equalToAndBefore = true } = {}) => {
|
|
67
|
+
const p = datesBefore(key, jsDate, { valueType, equalToAndBefore });
|
|
68
|
+
return _link((0, merge_1.default)(data, { query: data.query.concat(p) }));
|
|
69
|
+
};
|
|
70
|
+
const thisDatesAfter = (key, jsDate, { valueType = types_1.DatastoreValueType.string, equalToAndAfter = true } = {}) => {
|
|
71
|
+
const p = datesAfter(key, jsDate, { valueType, equalToAndAfter });
|
|
72
|
+
return _link((0, merge_1.default)(data, { query: data.query.concat(p) }));
|
|
73
|
+
};
|
|
74
|
+
return {
|
|
75
|
+
datesBefore: thisDatesBefore,
|
|
76
|
+
datesAfter: thisDatesAfter,
|
|
77
|
+
complex,
|
|
78
|
+
property: _myProperty,
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
const _queryBuilder = (data = undefined) => {
|
|
82
|
+
const theData = (0, merge_1.default)({
|
|
83
|
+
query: [],
|
|
84
|
+
}, data);
|
|
85
|
+
const builder = _builderV2(theData);
|
|
86
|
+
const linkData = _additionalLink(theData);
|
|
87
|
+
// @ts-ignore
|
|
88
|
+
return Object.assign(Object.assign(Object.assign({}, builder), linkData), { compile: () => {
|
|
89
|
+
return Object.assign(Object.assign(Object.assign(Object.assign({}, _objectize('take', theData.take)), _objectize('sort', theData.sort)), _objectize('page', theData.page)), { query: [] });
|
|
90
|
+
} });
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Creates a property query.
|
|
94
|
+
* @param key - The property's name/key/column to match on
|
|
95
|
+
* @param value - The value to match
|
|
96
|
+
* @param options - Additional options for changing this property query.
|
|
97
|
+
*/
|
|
98
|
+
const property = (key, value, options = {}) => {
|
|
99
|
+
const { equalitySymbol = types_1.EqualitySymbol.eq, caseSensitive, startsWith, endsWith, type, } = options;
|
|
100
|
+
const typeToUse = type || types_1.DatastoreValueType.string;
|
|
101
|
+
if (!types_1.AllowableEqualitySymbols.includes(equalitySymbol)) {
|
|
102
|
+
throw new Error(`${equalitySymbol} is not a valid symbol`);
|
|
103
|
+
}
|
|
104
|
+
if (equalitySymbol !== types_1.EqualitySymbol.eq &&
|
|
105
|
+
typeToUse === types_1.DatastoreValueType.string) {
|
|
106
|
+
throw new Error(`Cannot use a non = symbol for a string type`);
|
|
107
|
+
}
|
|
108
|
+
const propertyEntry = {
|
|
109
|
+
type: 'property',
|
|
110
|
+
key,
|
|
111
|
+
value,
|
|
112
|
+
valueType: typeToUse,
|
|
113
|
+
equalitySymbol,
|
|
114
|
+
options: Object.assign(Object.assign(Object.assign({}, _objectize('caseSensitive', caseSensitive)), _objectize('startsWith', startsWith)), _objectize('endsWith', endsWith)),
|
|
115
|
+
};
|
|
116
|
+
return propertyEntry;
|
|
117
|
+
};
|
|
118
|
+
exports.property = property;
|
|
119
|
+
/**
|
|
120
|
+
* Limits the number of results to the provided count.
|
|
121
|
+
* @param max - The maximum results to find
|
|
122
|
+
*/
|
|
123
|
+
const take = (max) => {
|
|
124
|
+
const parsed = parseInt(`${max}`, 10);
|
|
125
|
+
if (Number.isNaN(parsed)) {
|
|
126
|
+
throw new Error(`Number "${max}" is not integerable`);
|
|
127
|
+
}
|
|
128
|
+
return parsed;
|
|
129
|
+
};
|
|
130
|
+
exports.take = take;
|
|
131
|
+
/**
|
|
132
|
+
* Creates a sort query
|
|
133
|
+
* @param key - The key to sort on
|
|
134
|
+
* @param order - The order of the sort.
|
|
135
|
+
*/
|
|
136
|
+
const sort = (key, order = types_1.SortOrder.asc) => {
|
|
137
|
+
if (order !== types_1.SortOrder.asc && order !== types_1.SortOrder.dsc) {
|
|
138
|
+
throw new Error('Sort must be either asc or dsc');
|
|
139
|
+
}
|
|
140
|
+
return {
|
|
141
|
+
key,
|
|
142
|
+
order,
|
|
143
|
+
};
|
|
144
|
+
};
|
|
145
|
+
exports.sort = sort;
|
|
146
|
+
/**
|
|
147
|
+
* Creates a pagination query.
|
|
148
|
+
* @param value - Anything
|
|
149
|
+
*/
|
|
150
|
+
const pagination = (value) => {
|
|
151
|
+
return value;
|
|
152
|
+
};
|
|
153
|
+
exports.pagination = pagination;
|
|
154
|
+
/**
|
|
155
|
+
* Creates a query that looks at dated objects after the given date.
|
|
156
|
+
* @param key - The property's key
|
|
157
|
+
* @param jsDate - The date value being examined
|
|
158
|
+
* @param options - Additional options
|
|
159
|
+
*/
|
|
160
|
+
const datesAfter = (key, jsDate, options = {
|
|
161
|
+
valueType: types_1.DatastoreValueType.string,
|
|
162
|
+
equalToAndAfter: true,
|
|
163
|
+
}) => {
|
|
164
|
+
const { valueType = types_1.DatastoreValueType.string, equalToAndAfter = true } = options;
|
|
165
|
+
return {
|
|
166
|
+
type: 'datesAfter',
|
|
167
|
+
key,
|
|
168
|
+
date: isDate(jsDate) ? jsDate.toISOString() : jsDate,
|
|
169
|
+
valueType,
|
|
170
|
+
options: {
|
|
171
|
+
equalToAndAfter,
|
|
172
|
+
},
|
|
173
|
+
};
|
|
174
|
+
};
|
|
175
|
+
exports.datesAfter = datesAfter;
|
|
176
|
+
/**
|
|
177
|
+
* Determines if the object is a Date
|
|
178
|
+
* @param obj - Date or string
|
|
179
|
+
*/
|
|
180
|
+
const isDate = (obj) => {
|
|
181
|
+
// @ts-ignore
|
|
182
|
+
return Boolean(obj.toISOString);
|
|
183
|
+
};
|
|
184
|
+
/**
|
|
185
|
+
* Creates a search query that looks at dates before the given date.
|
|
186
|
+
* @param key - The property's key
|
|
187
|
+
* @param jsDate - The date value being examined.
|
|
188
|
+
* @param options - Additional options
|
|
189
|
+
*/
|
|
190
|
+
const datesBefore = (key, jsDate, options = {
|
|
191
|
+
valueType: types_1.DatastoreValueType.string,
|
|
192
|
+
equalToAndBefore: true,
|
|
193
|
+
}) => {
|
|
194
|
+
const { valueType = types_1.DatastoreValueType.string, equalToAndBefore = true } = options;
|
|
195
|
+
return {
|
|
196
|
+
type: 'datesBefore',
|
|
197
|
+
key,
|
|
198
|
+
date: isDate(jsDate) ? jsDate.toISOString() : jsDate,
|
|
199
|
+
valueType,
|
|
200
|
+
options: {
|
|
201
|
+
equalToAndBefore,
|
|
202
|
+
},
|
|
203
|
+
};
|
|
204
|
+
};
|
|
205
|
+
exports.datesBefore = datesBefore;
|
|
206
|
+
/**
|
|
207
|
+
* Creates a builder that can create search queries.
|
|
208
|
+
* This is a structured way to build search queries.
|
|
209
|
+
*/
|
|
210
|
+
const queryBuilder = () => {
|
|
211
|
+
return _queryBuilder();
|
|
212
|
+
};
|
|
213
|
+
exports.queryBuilder = queryBuilder;
|
|
214
|
+
/**
|
|
215
|
+
* Determines if the value is an Orm Property based statement
|
|
216
|
+
* @param value
|
|
217
|
+
*/
|
|
218
|
+
const isPropertyBasedQuery = (value) => {
|
|
219
|
+
if (!value) {
|
|
220
|
+
return false;
|
|
221
|
+
}
|
|
222
|
+
return (value === 'property' || value === 'datesBefore' || value === 'datesAfter');
|
|
223
|
+
};
|
|
224
|
+
exports.isPropertyBasedQuery = isPropertyBasedQuery;
|
|
225
|
+
/**
|
|
226
|
+
* Determines if the value is a boolean
|
|
227
|
+
* @param value - The value to examine.
|
|
228
|
+
*/
|
|
229
|
+
const isALinkToken = (value) => {
|
|
230
|
+
if (!value) {
|
|
231
|
+
return false;
|
|
232
|
+
}
|
|
233
|
+
value = value.toLowerCase();
|
|
234
|
+
return value === 'and' || value === 'or';
|
|
235
|
+
};
|
|
236
|
+
exports.isALinkToken = isALinkToken;
|
|
237
|
+
/**
|
|
238
|
+
* Creates an AND
|
|
239
|
+
*/
|
|
240
|
+
const and = () => 'AND';
|
|
241
|
+
exports.and = and;
|
|
242
|
+
/**
|
|
243
|
+
* Creates an OR
|
|
244
|
+
*/
|
|
245
|
+
const or = () => 'OR';
|
|
246
|
+
exports.or = or;
|
|
247
|
+
/**
|
|
248
|
+
* A helper query that is text based.
|
|
249
|
+
* @param key - The property key/name
|
|
250
|
+
* @param value - The value to match
|
|
251
|
+
* @param options - Additional text based options
|
|
252
|
+
*/
|
|
253
|
+
const textQuery = (key, value, options) => property(key, value, Object.assign({}, options, {
|
|
254
|
+
equalitySymbol: undefined,
|
|
255
|
+
type: types_1.DatastoreValueType.string,
|
|
256
|
+
}));
|
|
257
|
+
exports.textQuery = textQuery;
|
|
258
|
+
/**
|
|
259
|
+
* A helper query that is number based.
|
|
260
|
+
* @param key - The property key/name
|
|
261
|
+
* @param value - The value to match
|
|
262
|
+
* @param equalitySymbol - A matching symbol for the number
|
|
263
|
+
*/
|
|
264
|
+
const numberQuery = (key, value, equalitySymbol = types_1.EqualitySymbol.eq) => property(key, value, {
|
|
265
|
+
equalitySymbol,
|
|
266
|
+
type: types_1.DatastoreValueType.number,
|
|
267
|
+
});
|
|
268
|
+
exports.numberQuery = numberQuery;
|
|
269
|
+
/**
|
|
270
|
+
* A helper query that is for boolean values.
|
|
271
|
+
* @param key - The property key/name
|
|
272
|
+
* @param value - The value to match
|
|
273
|
+
*/
|
|
274
|
+
const booleanQuery = (key, value) => property(key, value, {
|
|
275
|
+
type: types_1.DatastoreValueType.boolean,
|
|
276
|
+
equalitySymbol: types_1.EqualitySymbol.eq,
|
|
277
|
+
});
|
|
278
|
+
exports.booleanQuery = booleanQuery;
|
|
279
|
+
//# sourceMappingURL=query.js.map
|
package/orm/query.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/orm/query.ts"],"names":[],"mappings":"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"}
|