@node-c/data-redis 1.0.0-alpha62

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.
Files changed (83) hide show
  1. package/LICENSE +1 -0
  2. package/README.md +4 -0
  3. package/coverage/base.css +224 -0
  4. package/coverage/block-navigation.js +87 -0
  5. package/coverage/clover.xml +580 -0
  6. package/coverage/common/definitions/common.constants.ts.html +121 -0
  7. package/coverage/common/definitions/index.html +131 -0
  8. package/coverage/common/definitions/index.ts.html +88 -0
  9. package/coverage/coverage-final.json +13 -0
  10. package/coverage/entityService/index.html +131 -0
  11. package/coverage/entityService/index.ts.html +91 -0
  12. package/coverage/entityService/redis.entity.service.ts.html +454 -0
  13. package/coverage/favicon.png +0 -0
  14. package/coverage/index.html +176 -0
  15. package/coverage/module/index.html +131 -0
  16. package/coverage/module/index.ts.html +91 -0
  17. package/coverage/module/redis.module.ts.html +169 -0
  18. package/coverage/prettify.css +1 -0
  19. package/coverage/prettify.js +2 -0
  20. package/coverage/repository/index.html +146 -0
  21. package/coverage/repository/index.ts.html +94 -0
  22. package/coverage/repository/redis.repository.module.ts.html +181 -0
  23. package/coverage/repository/redis.repository.service.ts.html +784 -0
  24. package/coverage/sort-arrow-sprite.png +0 -0
  25. package/coverage/sorter.js +196 -0
  26. package/coverage/store/index.html +146 -0
  27. package/coverage/store/index.ts.html +94 -0
  28. package/coverage/store/redis.store.module.ts.html +181 -0
  29. package/coverage/store/redis.store.service.ts.html +586 -0
  30. package/dist/common/definitions/common.constants.d.ts +6 -0
  31. package/dist/common/definitions/common.constants.js +11 -0
  32. package/dist/common/definitions/common.constants.js.map +1 -0
  33. package/dist/common/definitions/index.d.ts +1 -0
  34. package/dist/common/definitions/index.js +18 -0
  35. package/dist/common/definitions/index.js.map +1 -0
  36. package/dist/entityService/index.d.ts +2 -0
  37. package/dist/entityService/index.js +19 -0
  38. package/dist/entityService/index.js.map +1 -0
  39. package/dist/entityService/redis.entity.service.d.ts +19 -0
  40. package/dist/entityService/redis.entity.service.definitions.d.ts +44 -0
  41. package/dist/entityService/redis.entity.service.definitions.js +3 -0
  42. package/dist/entityService/redis.entity.service.definitions.js.map +1 -0
  43. package/dist/entityService/redis.entity.service.js +231 -0
  44. package/dist/entityService/redis.entity.service.js.map +1 -0
  45. package/dist/index.d.ts +5 -0
  46. package/dist/index.js +22 -0
  47. package/dist/index.js.map +1 -0
  48. package/dist/module/index.d.ts +2 -0
  49. package/dist/module/index.js +19 -0
  50. package/dist/module/index.js.map +1 -0
  51. package/dist/module/redis.module.d.ts +5 -0
  52. package/dist/module/redis.module.definitions.d.ts +16 -0
  53. package/dist/module/redis.module.definitions.js +3 -0
  54. package/dist/module/redis.module.definitions.js.map +1 -0
  55. package/dist/module/redis.module.js +30 -0
  56. package/dist/module/redis.module.js.map +1 -0
  57. package/dist/repository/index.d.ts +3 -0
  58. package/dist/repository/index.js +20 -0
  59. package/dist/repository/index.js.map +1 -0
  60. package/dist/repository/redis.repository.definitions.d.ts +74 -0
  61. package/dist/repository/redis.repository.definitions.js +20 -0
  62. package/dist/repository/redis.repository.definitions.js.map +1 -0
  63. package/dist/repository/redis.repository.module.d.ts +5 -0
  64. package/dist/repository/redis.repository.module.js +43 -0
  65. package/dist/repository/redis.repository.module.js.map +1 -0
  66. package/dist/repository/redis.repository.service.d.ts +39 -0
  67. package/dist/repository/redis.repository.service.js +496 -0
  68. package/dist/repository/redis.repository.service.js.map +1 -0
  69. package/dist/store/index.d.ts +3 -0
  70. package/dist/store/index.js +20 -0
  71. package/dist/store/index.js.map +1 -0
  72. package/dist/store/redis.store.definitions.d.ts +21 -0
  73. package/dist/store/redis.store.definitions.js +3 -0
  74. package/dist/store/redis.store.definitions.js.map +1 -0
  75. package/dist/store/redis.store.module.d.ts +5 -0
  76. package/dist/store/redis.store.module.js +51 -0
  77. package/dist/store/redis.store.module.js.map +1 -0
  78. package/dist/store/redis.store.service.d.ts +30 -0
  79. package/dist/store/redis.store.service.js +376 -0
  80. package/dist/store/redis.store.service.js.map +1 -0
  81. package/package.json +27 -0
  82. package/tsconfig.build.json +9 -0
  83. package/tsconfig.json +9 -0
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var RedisRepositoryModule_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.RedisRepositoryModule = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const core_1 = require("@node-c/core");
13
+ const redis_repository_service_1 = require("./redis.repository.service");
14
+ const definitions_1 = require("../common/definitions");
15
+ const store_1 = require("../store");
16
+ let RedisRepositoryModule = RedisRepositoryModule_1 = class RedisRepositoryModule {
17
+ static register(options) {
18
+ const { dataModuleName, schema } = options;
19
+ return {
20
+ module: RedisRepositoryModule_1,
21
+ imports: [],
22
+ providers: [
23
+ {
24
+ provide: definitions_1.Constants.REDIS_REPOSITORY_SCHEMA,
25
+ useValue: schema
26
+ },
27
+ { provide: core_1.Constants.PERSISTANCE_MODULE_NAME, useValue: dataModuleName },
28
+ {
29
+ provide: store_1.RedisStoreService,
30
+ useFactory: (redisStoreService) => redisStoreService,
31
+ inject: [`${dataModuleName}${definitions_1.Constants.REDIS_CLIENT_STORE_SERVICE_SUFFIX}`]
32
+ },
33
+ (redis_repository_service_1.RedisRepositoryService)
34
+ ],
35
+ exports: [(redis_repository_service_1.RedisRepositoryService), store_1.RedisStoreService]
36
+ };
37
+ }
38
+ };
39
+ exports.RedisRepositoryModule = RedisRepositoryModule;
40
+ exports.RedisRepositoryModule = RedisRepositoryModule = RedisRepositoryModule_1 = __decorate([
41
+ (0, common_1.Module)({})
42
+ ], RedisRepositoryModule);
43
+ //# sourceMappingURL=redis.repository.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis.repository.module.js","sourceRoot":"","sources":["../../src/repository/redis.repository.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAuD;AAEvD,uCAA0D;AAG1D,yEAAoE;AAEpE,uDAAkD;AAClD,oCAA6C;AAGtC,IAAM,qBAAqB,6BAA3B,MAAM,qBAAqB;IAChC,MAAM,CAAC,QAAQ,CAAS,OAAqC;QAC3D,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAC3C,OAAO;YACL,MAAM,EAAE,uBAAqB;YAC7B,OAAO,EAAE,EAAE;YACX,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,uBAAS,CAAC,uBAAuB;oBAC1C,QAAQ,EAAE,MAAM;iBACjB;gBACD,EAAE,OAAO,EAAE,gBAAa,CAAC,uBAAuB,EAAE,QAAQ,EAAE,cAAc,EAAE;gBAC5E;oBACE,OAAO,EAAE,yBAAiB;oBAC1B,UAAU,EAAE,CAAC,iBAAoC,EAAE,EAAE,CAAC,iBAAiB;oBACvE,MAAM,EAAE,CAAC,GAAG,cAAc,GAAG,uBAAS,CAAC,iCAAiC,EAAE,CAAC;iBAC5E;gBACD,CAAA,iDAA8B,CAAA;aAC/B;YACD,OAAO,EAAE,CAAC,CAAA,iDAA8B,CAAA,EAAE,yBAAiB,CAAC;SAC7D,CAAC;IACJ,CAAC;CACF,CAAA;AAtBY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,qBAAqB,CAsBjC"}
@@ -0,0 +1,39 @@
1
+ import { AppConfigCommonDataNoSQLValidationSettings, ConfigProviderService, GenericObject } from '@node-c/core';
2
+ import { ValidationSchema } from 'class-validator';
3
+ import { EntitySchema, FilterItemOptions, GetValuesFromResultsOptions, PrepareOptions, RepositoryFindOptions, RepositoryFindPrivateOptions, SaveOptions } from './redis.repository.definitions';
4
+ import { RedisStoreService } from '../store';
5
+ export declare class RedisRepositoryService<Entity> {
6
+ protected configProvider: ConfigProviderService;
7
+ protected _dataModuleName: string;
8
+ protected schema: EntitySchema;
9
+ protected store: RedisStoreService;
10
+ protected _columnNames: string[];
11
+ protected _innerPrimaryKeys: string[];
12
+ protected _innerPrimaryKeysMap: GenericObject<boolean>;
13
+ protected _primaryKeys: string[];
14
+ protected _primaryKeysMap: GenericObject<boolean>;
15
+ protected defaultTTL?: number;
16
+ protected defaultIndividualSearchEnabled: boolean;
17
+ protected experimentalDeletionEnabled: boolean;
18
+ protected storeDelimiter: string;
19
+ protected validationSchemaProperties: ValidationSchema['properties'];
20
+ protected validationSettings: AppConfigCommonDataNoSQLValidationSettings;
21
+ get columnNames(): string[];
22
+ get innerPrimaryKeys(): string[];
23
+ get innerPrimaryKeysMap(): GenericObject<boolean>;
24
+ get dataModuleName(): string;
25
+ get primaryKeys(): string[];
26
+ get primaryKeysMap(): GenericObject<boolean>;
27
+ constructor(configProvider: ConfigProviderService, _dataModuleName: string, schema: EntitySchema, store: RedisStoreService);
28
+ find<ResultItem extends Entity | string = Entity>(options: RepositoryFindOptions, privateOptions?: RepositoryFindPrivateOptions): Promise<{
29
+ items: ResultItem[];
30
+ more: boolean;
31
+ }>;
32
+ protected filterItem<Item>(item: Item, filters: GenericObject<unknown>, options?: FilterItemOptions): boolean;
33
+ protected getValuesFromResults<ResultItem>(inputData: ResultItem[], options?: GetValuesFromResultsOptions): ResultItem[];
34
+ protected prepare(data: Entity, options?: PrepareOptions): Promise<{
35
+ data: Entity;
36
+ storeEntityKey: string;
37
+ }>;
38
+ save<ResultItem extends Entity | string = Entity>(data: Entity | Entity[], options?: SaveOptions): Promise<ResultItem[]>;
39
+ }
@@ -0,0 +1,496 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
15
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16
+ return new (P || (P = Promise))(function (resolve, reject) {
17
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
18
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
19
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
20
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
21
+ });
22
+ };
23
+ var __importDefault = (this && this.__importDefault) || function (mod) {
24
+ return (mod && mod.__esModule) ? mod : { "default": mod };
25
+ };
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.RedisRepositoryService = void 0;
28
+ const common_1 = require("@nestjs/common");
29
+ const core_1 = require("@node-c/core");
30
+ const class_validator_1 = require("class-validator");
31
+ const lodash_1 = __importDefault(require("lodash"));
32
+ const uuid_1 = require("uuid");
33
+ const redis_repository_definitions_1 = require("./redis.repository.definitions");
34
+ const definitions_1 = require("../common/definitions");
35
+ const store_1 = require("../store");
36
+ let RedisRepositoryService = class RedisRepositoryService {
37
+ get columnNames() {
38
+ return this._columnNames;
39
+ }
40
+ get innerPrimaryKeys() {
41
+ return this._innerPrimaryKeys;
42
+ }
43
+ get innerPrimaryKeysMap() {
44
+ return this._innerPrimaryKeysMap;
45
+ }
46
+ get dataModuleName() {
47
+ return this._dataModuleName;
48
+ }
49
+ get primaryKeys() {
50
+ return this._primaryKeys;
51
+ }
52
+ get primaryKeysMap() {
53
+ return this._primaryKeysMap;
54
+ }
55
+ constructor(configProvider, _dataModuleName, schema, store) {
56
+ var _a, _b, _c;
57
+ this.configProvider = configProvider;
58
+ this._dataModuleName = _dataModuleName;
59
+ this.schema = schema;
60
+ this.store = store;
61
+ this.experimentalDeletionEnabled = false;
62
+ const { defaultIndividualSearchEnabled, defaultTTL, storeDelimiter, settingsPerEntity } = configProvider.config
63
+ .data[_dataModuleName];
64
+ const { columns, name: entityName } = schema;
65
+ const columnNames = [];
66
+ const innerPrimaryKeys = [];
67
+ const innerPrimaryKeysMap = {};
68
+ const primaryKeys = [];
69
+ const primaryKeysMap = {};
70
+ const validationSchemaProperties = {};
71
+ for (const columnName in columns) {
72
+ const { isInnerPrimary, primary, primaryOrder, validationProperties } = columns[columnName];
73
+ columnNames.push(columnName);
74
+ if (primary) {
75
+ if (typeof primaryOrder === 'undefined') {
76
+ throw new core_1.ApplicationError(`At schema "${entityName}", column "${columnName}": the field "primaryOrder" is required for primary key columns.`);
77
+ }
78
+ primaryKeys.push(columnName);
79
+ primaryKeysMap[columnName] = true;
80
+ }
81
+ else if (isInnerPrimary) {
82
+ innerPrimaryKeys.push(columnName);
83
+ innerPrimaryKeysMap[columnName] = true;
84
+ }
85
+ if (validationProperties) {
86
+ validationSchemaProperties[columnName] = validationProperties;
87
+ }
88
+ }
89
+ this._columnNames = columnNames;
90
+ this._innerPrimaryKeys = innerPrimaryKeys;
91
+ this._innerPrimaryKeysMap = innerPrimaryKeysMap;
92
+ this._primaryKeys = primaryKeys.sort((columnName0, columnName1) => columns[columnName0].primaryOrder - columns[columnName1].primaryOrder);
93
+ this._primaryKeysMap = primaryKeysMap;
94
+ this.defaultTTL = ((_a = settingsPerEntity === null || settingsPerEntity === void 0 ? void 0 : settingsPerEntity[entityName]) === null || _a === void 0 ? void 0 : _a.ttl) || defaultTTL;
95
+ if (typeof ((_b = settingsPerEntity === null || settingsPerEntity === void 0 ? void 0 : settingsPerEntity[entityName]) === null || _b === void 0 ? void 0 : _b.defaultIndividualSearchEnabled) !== 'undefined') {
96
+ this.defaultIndividualSearchEnabled = (_c = settingsPerEntity === null || settingsPerEntity === void 0 ? void 0 : settingsPerEntity[entityName]) === null || _c === void 0 ? void 0 : _c.defaultIndividualSearchEnabled;
97
+ }
98
+ else if (typeof defaultIndividualSearchEnabled !== 'undefined') {
99
+ this.defaultIndividualSearchEnabled = defaultIndividualSearchEnabled;
100
+ }
101
+ else {
102
+ this.defaultIndividualSearchEnabled = false;
103
+ }
104
+ this.storeDelimiter = storeDelimiter || definitions_1.Constants.DEFAULT_STORE_DELIMITER;
105
+ this.validationSchemaProperties = validationSchemaProperties;
106
+ (0, class_validator_1.registerSchema)({ name: entityName, properties: validationSchemaProperties });
107
+ }
108
+ find(options, privateOptions) {
109
+ return __awaiter(this, void 0, void 0, function* () {
110
+ const { primaryKeys, schema, store, storeDelimiter } = this;
111
+ const { name: entityName, storeKey: entityStoreKey } = schema;
112
+ const { filters, findAll, individualSearch, withValues: optWithValues } = options;
113
+ const { requirePrimaryKeys } = privateOptions || {};
114
+ const individualSearchEnabled = typeof individualSearch !== 'undefined' ? individualSearch : this.defaultIndividualSearchEnabled;
115
+ const primaryKeyFiltersToForceCheck = {};
116
+ const storeEntityKeys = [];
117
+ const withValues = typeof optWithValues === 'undefined' || optWithValues === true ? true : false;
118
+ let hasNonPrimaryKeyFilters = false;
119
+ let primaryKeyFiltersCount = 0;
120
+ if (filters && Object.keys(filters).length) {
121
+ storeEntityKeys.push('');
122
+ primaryKeys.forEach(field => {
123
+ const value = filters[field];
124
+ if (typeof value !== 'undefined' && typeof value !== 'object' && (typeof value !== 'string' || value.length)) {
125
+ primaryKeyFiltersCount++;
126
+ storeEntityKeys.forEach((_key, keyIndex) => {
127
+ storeEntityKeys[keyIndex] += `${storeDelimiter}${value}`;
128
+ });
129
+ return;
130
+ }
131
+ if (value instanceof Array) {
132
+ const finalValues = [];
133
+ value.forEach(valueItem => {
134
+ if ((typeof valueItem === 'string' && !valueItem.length) ||
135
+ (typeof valueItem !== 'string' && typeof valueItem !== 'number')) {
136
+ return;
137
+ }
138
+ finalValues.push(valueItem);
139
+ });
140
+ if (finalValues.length) {
141
+ if (individualSearchEnabled) {
142
+ if (storeEntityKeys.length <= 1) {
143
+ const baseStoreEntityKey = storeEntityKeys[0] || '';
144
+ primaryKeyFiltersCount++;
145
+ finalValues.forEach((finalValue, finalValueIndex) => {
146
+ const fullFinalValue = `${baseStoreEntityKey}${storeDelimiter}${finalValue}`;
147
+ if (typeof storeEntityKeys[finalValueIndex] === 'undefined') {
148
+ storeEntityKeys.push(fullFinalValue);
149
+ return;
150
+ }
151
+ storeEntityKeys[finalValueIndex] = fullFinalValue;
152
+ });
153
+ return;
154
+ }
155
+ }
156
+ else {
157
+ hasNonPrimaryKeyFilters = true;
158
+ primaryKeyFiltersToForceCheck[field] = true;
159
+ storeEntityKeys[0] += `${storeDelimiter}*`;
160
+ return;
161
+ }
162
+ }
163
+ }
164
+ if (requirePrimaryKeys) {
165
+ throw new core_1.ApplicationError(`[RedisRepositoryService ${entityName}][Find Error]: ` +
166
+ `The primary key field ${field} is required when requirePrimaryKeys is set to true.`);
167
+ }
168
+ if (individualSearchEnabled) {
169
+ throw new core_1.ApplicationError(`[RedisRepositoryService ${entityName}][Find Error]: ` +
170
+ `The primary key field ${field} is required when individualSearchEnabled ` +
171
+ 'is set to true.');
172
+ }
173
+ storeEntityKeys[0] += `${storeDelimiter}*`;
174
+ });
175
+ if (!hasNonPrimaryKeyFilters) {
176
+ hasNonPrimaryKeyFilters = primaryKeyFiltersCount === Object.keys(filters).length;
177
+ }
178
+ }
179
+ else if (!findAll) {
180
+ throw new core_1.ApplicationError(`[RedisRepositoryService ${entityName}][Error]: ` +
181
+ 'Either filters or findAll is required when calling the find method.');
182
+ }
183
+ if (findAll) {
184
+ if (individualSearchEnabled && !primaryKeyFiltersCount && primaryKeys.length) {
185
+ throw new core_1.ApplicationError(`[RedisRepositoryService ${entityName}][Error]: ` +
186
+ 'Primary key filters are required when findAll and individualSearchEnabled ' +
187
+ 'are enabled in the find method.');
188
+ }
189
+ let initialResults = [];
190
+ if (individualSearchEnabled) {
191
+ initialResults = (yield Promise.all(storeEntityKeys.map(key => store.get(`${entityStoreKey}${key}`, { parseToJSON: true }))));
192
+ }
193
+ else {
194
+ const scanData = yield store.scan(`${entityStoreKey}${storeEntityKeys[0]}`, {
195
+ parseToJSON: true,
196
+ scanAll: findAll,
197
+ withValues
198
+ });
199
+ initialResults = scanData.values;
200
+ }
201
+ return {
202
+ items: this.getValuesFromResults(initialResults, {
203
+ filters,
204
+ hasNonPrimaryKeyFilters,
205
+ primaryKeyFiltersToForceCheck
206
+ }),
207
+ more: false
208
+ };
209
+ }
210
+ const { page, perPage } = options || {};
211
+ const [storeEntityKey] = storeEntityKeys;
212
+ const count = perPage || 100;
213
+ const limit = count + 1;
214
+ let cursor = (page ? page - 1 : 0) * count;
215
+ let more = false;
216
+ let results = [];
217
+ while (results.length < limit) {
218
+ let endReached = false;
219
+ let iterationResults = [];
220
+ if (individualSearchEnabled) {
221
+ const iterationLimit = cursor + limit;
222
+ const iterationPromises = [];
223
+ for (let i = cursor; i < iterationLimit; i++) {
224
+ const key = storeEntityKeys[i];
225
+ if (!key) {
226
+ endReached = true;
227
+ break;
228
+ }
229
+ iterationPromises.push(store.get(`${entityStoreKey}${key}`, { parseToJSON: true }));
230
+ }
231
+ iterationResults = (yield Promise.all(iterationPromises));
232
+ cursor = iterationLimit;
233
+ }
234
+ else {
235
+ const { cursor: newCursor, values: innerResults } = yield store.scan(`${entityStoreKey}${storeEntityKey}`, {
236
+ count,
237
+ cursor,
238
+ parseToJSON: true,
239
+ scanAll: false,
240
+ withValues
241
+ });
242
+ iterationResults = innerResults;
243
+ if (newCursor === 0) {
244
+ endReached = true;
245
+ }
246
+ else {
247
+ cursor = newCursor;
248
+ }
249
+ }
250
+ results = results.concat(this.getValuesFromResults(iterationResults, {
251
+ filters,
252
+ hasNonPrimaryKeyFilters,
253
+ primaryKeyFiltersToForceCheck
254
+ }));
255
+ if (endReached) {
256
+ break;
257
+ }
258
+ }
259
+ if (results.length > count) {
260
+ more = true;
261
+ results = results.slice(0, count);
262
+ }
263
+ return { items: results, more };
264
+ });
265
+ }
266
+ filterItem(item, filters, options) {
267
+ if (typeof item === 'undefined' || item === null) {
268
+ return false;
269
+ }
270
+ const { keysToSkip, skippableKeysToForceCheck } = options || {};
271
+ let filterResult = true;
272
+ for (const key in filters) {
273
+ if ((keysToSkip === null || keysToSkip === void 0 ? void 0 : keysToSkip[key]) && !(skippableKeysToForceCheck === null || skippableKeysToForceCheck === void 0 ? void 0 : skippableKeysToForceCheck[key])) {
274
+ continue;
275
+ }
276
+ const filterValue = filters[key];
277
+ const itemValue = item[key];
278
+ if (filterValue instanceof Array) {
279
+ if (!filterValue.includes(itemValue)) {
280
+ filterResult = false;
281
+ break;
282
+ }
283
+ continue;
284
+ }
285
+ if (filterValue !== itemValue) {
286
+ filterResult = false;
287
+ break;
288
+ }
289
+ }
290
+ return filterResult;
291
+ }
292
+ getValuesFromResults(inputData, options) {
293
+ const { primaryKeysMap, schema } = this;
294
+ const { isArray, nestedObjectContainerPath } = schema;
295
+ const { filters, flattenArray, hasNonPrimaryKeyFilters, primaryKeyFiltersToForceCheck } = options || {};
296
+ let initialResults = [...inputData];
297
+ if (nestedObjectContainerPath) {
298
+ initialResults = initialResults.map(item => {
299
+ if (item && typeof item === 'object' && !(item instanceof Date)) {
300
+ return (0, core_1.getNested)(item, nestedObjectContainerPath, { removeNestedFieldEscapeSign: true }).unifiedValue;
301
+ }
302
+ return item;
303
+ });
304
+ }
305
+ if (isArray && (flattenArray || typeof flattenArray === 'undefined')) {
306
+ initialResults = initialResults.flat();
307
+ }
308
+ if (!hasNonPrimaryKeyFilters || !filters) {
309
+ return initialResults.filter(item => typeof item !== 'undefined' && item !== null);
310
+ }
311
+ return initialResults.filter(item => this.filterItem(item, filters, {
312
+ keysToSkip: primaryKeysMap,
313
+ skippableKeysToForceCheck: primaryKeyFiltersToForceCheck
314
+ }));
315
+ }
316
+ prepare(data, options) {
317
+ return __awaiter(this, void 0, void 0, function* () {
318
+ const { primaryKeys, schema, store, storeDelimiter } = this;
319
+ const { columns, name: entityName, storeKey: entityStoreKey } = schema;
320
+ const opt = options || {};
321
+ const { generatePrimaryKeys, onConflict: optOnConflict, validate: optValidate } = opt;
322
+ const onConflict = optOnConflict || redis_repository_definitions_1.SaveOptionsOnConflict.ThrowError;
323
+ let allPKValuesExist = true;
324
+ let preparedData = lodash_1.default.cloneDeep(data);
325
+ let storeEntityKey = '';
326
+ for (const columnName of primaryKeys) {
327
+ const { generated, type } = columns[columnName];
328
+ const value = preparedData[columnName];
329
+ const valueExists = !(typeof value === 'undefined' ||
330
+ (typeof value === 'string' && !value.length) ||
331
+ typeof value === 'object');
332
+ if (generated) {
333
+ if (valueExists) {
334
+ storeEntityKey += `${value}${storeDelimiter}`;
335
+ continue;
336
+ }
337
+ if (allPKValuesExist) {
338
+ allPKValuesExist = false;
339
+ }
340
+ if (!generatePrimaryKeys) {
341
+ throw new core_1.ApplicationError(`[RedisRepositoryService ${entityName}][Validation Error]: ` +
342
+ `A value is required for generated PK column ${columnName} when the generatePrimaryKeys is set to false.`);
343
+ }
344
+ if (type === redis_repository_definitions_1.EntitySchemaColumnType.Integer) {
345
+ let currentMaxValue = (yield store.get(`${entityStoreKey}${storeDelimiter}increment${storeDelimiter}${columnName}`, {
346
+ parseToJSON: true
347
+ })) || 0;
348
+ currentMaxValue++;
349
+ yield store.set(`${entityStoreKey}${storeDelimiter}increment${storeDelimiter}${columnName}`, currentMaxValue);
350
+ preparedData[columnName] = currentMaxValue;
351
+ storeEntityKey += `${currentMaxValue}${storeDelimiter}`;
352
+ continue;
353
+ }
354
+ if (type === redis_repository_definitions_1.EntitySchemaColumnType.UUIDV4) {
355
+ let newValue = (0, uuid_1.v4)();
356
+ if (storeDelimiter === '-') {
357
+ newValue = newValue.replace(/-/g, '_');
358
+ }
359
+ preparedData[columnName] = newValue;
360
+ storeEntityKey += `${newValue}${storeDelimiter}`;
361
+ continue;
362
+ }
363
+ throw new core_1.ApplicationError(`[RedisRepositoryService ${entityName}][Validation Error]: ` +
364
+ `Unrecognized type "${type}" for PK column ${columnName}`);
365
+ }
366
+ if (!valueExists) {
367
+ throw new core_1.ApplicationError(`[RedisRepositoryService ${entityName}][Validation Error]: ` +
368
+ `A value is required for non-generated PK column ${columnName}`);
369
+ }
370
+ storeEntityKey += `${value}${storeDelimiter}`;
371
+ }
372
+ if (storeEntityKey.endsWith(storeDelimiter)) {
373
+ storeEntityKey = storeEntityKey.substring(0, storeEntityKey.length - storeDelimiter.length);
374
+ }
375
+ if (optValidate) {
376
+ const validationErrors = yield (0, class_validator_1.validate)(entityName, data);
377
+ if (validationErrors.length) {
378
+ throw new core_1.ApplicationError(`[RedisRepositoryService ${entityName}][Validation Error]: ${validationErrors.join('\n')}`);
379
+ }
380
+ }
381
+ if (onConflict !== redis_repository_definitions_1.SaveOptionsOnConflict.DoNothing && allPKValuesExist) {
382
+ const hasValue = yield store.get(storeEntityKey, { withValues: false });
383
+ if (hasValue) {
384
+ if (onConflict === redis_repository_definitions_1.SaveOptionsOnConflict.ThrowError) {
385
+ throw new core_1.ApplicationError(`[RedisRepositoryService ${entityName}][Unique Error]: An entry already exists for key ${storeEntityKey}.`);
386
+ }
387
+ if (onConflict === redis_repository_definitions_1.SaveOptionsOnConflict.Update) {
388
+ const existingData = yield store.get(storeEntityKey, { parseToJSON: true });
389
+ preparedData = lodash_1.default.merge(existingData, preparedData);
390
+ }
391
+ else {
392
+ throw new core_1.ApplicationError(`[RedisRepositoryService ${entityName}][Execution Error]: ` +
393
+ `Invalid value "${onConflict}" provided for onConflict.`);
394
+ }
395
+ }
396
+ }
397
+ return { data: preparedData, storeEntityKey };
398
+ });
399
+ }
400
+ save(data, options) {
401
+ return __awaiter(this, void 0, void 0, function* () {
402
+ const { defaultTTL, experimentalDeletionEnabled, innerPrimaryKeys, primaryKeysMap, schema, store, storeDelimiter } = this;
403
+ const { isArray, nestedObjectContainerPath, storeKey: entityStoreKey } = schema;
404
+ const { delete: optDelete, generatePrimaryKeys, onConflict, transactionId, ttl, validate } = options || {};
405
+ const actualData = data instanceof Array ? data : [data];
406
+ if (optDelete) {
407
+ const prepareOptions = {
408
+ generatePrimaryKeys: false,
409
+ onConflict: redis_repository_definitions_1.SaveOptionsOnConflict.DoNothing,
410
+ validate: false
411
+ };
412
+ const deleteKeys = [];
413
+ for (const i in actualData) {
414
+ deleteKeys.push(`${entityStoreKey}${storeDelimiter}${(yield this.prepare(actualData[i], prepareOptions)).storeEntityKey}`);
415
+ }
416
+ if (experimentalDeletionEnabled &&
417
+ (isArray || nestedObjectContainerPath) &&
418
+ innerPrimaryKeys.length &&
419
+ deleteKeys.length) {
420
+ const results = yield Promise.all(deleteKeys.map(key => store.get(key, { parseToJSON: true })));
421
+ const newResults = [];
422
+ results.forEach((resultItem, resultItemIndex) => {
423
+ if (!resultItem || typeof resultItem !== 'object' || resultItem instanceof Date) {
424
+ newResults.push(resultItem);
425
+ return;
426
+ }
427
+ let innerPaths = [];
428
+ let innerValues = [];
429
+ if (nestedObjectContainerPath) {
430
+ const { paths, values } = (0, core_1.getNested)(resultItem, nestedObjectContainerPath, {
431
+ removeNestedFieldEscapeSign: true
432
+ });
433
+ innerPaths = paths;
434
+ innerValues = values;
435
+ }
436
+ else if (isArray) {
437
+ innerValues = resultItem;
438
+ }
439
+ else {
440
+ innerValues = [resultItem];
441
+ }
442
+ innerValues.forEach((innerValue, innerValueIndex) => {
443
+ const shouldDelete = this.filterItem(innerValue, actualData[resultItemIndex], {
444
+ keysToSkip: primaryKeysMap
445
+ });
446
+ if (!shouldDelete) {
447
+ return;
448
+ }
449
+ if (innerPaths[innerValueIndex]) {
450
+ (0, core_1.setNested)(results[resultItemIndex], innerPaths[innerValueIndex], undefined, {
451
+ removeNestedFieldEscapeSign: true
452
+ });
453
+ return;
454
+ }
455
+ if (isArray) {
456
+ (0, core_1.setNested)(results, `${resultItemIndex}`, resultItem.splice(innerValueIndex, 1), {
457
+ removeNestedFieldEscapeSign: true
458
+ });
459
+ return;
460
+ }
461
+ results.splice(resultItemIndex, 1);
462
+ });
463
+ });
464
+ return [];
465
+ }
466
+ if (deleteKeys.length) {
467
+ yield store.delete(deleteKeys, { transactionId });
468
+ }
469
+ return deleteKeys;
470
+ }
471
+ const prepareOptions = {
472
+ generatePrimaryKeys,
473
+ onConflict,
474
+ validate
475
+ };
476
+ const results = [];
477
+ for (const i in actualData) {
478
+ const { data: validatedEntity, storeEntityKey } = yield this.prepare(actualData[i], prepareOptions);
479
+ yield store.set(`${entityStoreKey}${storeDelimiter}${storeEntityKey}`, validatedEntity, {
480
+ transactionId,
481
+ ttl: ttl || defaultTTL
482
+ });
483
+ results.push(validatedEntity);
484
+ }
485
+ return results;
486
+ });
487
+ }
488
+ };
489
+ exports.RedisRepositoryService = RedisRepositoryService;
490
+ exports.RedisRepositoryService = RedisRepositoryService = __decorate([
491
+ (0, common_1.Injectable)(),
492
+ __param(1, (0, common_1.Inject)(core_1.Constants.PERSISTANCE_MODULE_NAME)),
493
+ __param(2, (0, common_1.Inject)(definitions_1.Constants.REDIS_REPOSITORY_SCHEMA)),
494
+ __metadata("design:paramtypes", [core_1.ConfigProviderService, String, Object, store_1.RedisStoreService])
495
+ ], RedisRepositoryService);
496
+ //# sourceMappingURL=redis.repository.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis.repository.service.js","sourceRoot":"","sources":["../../src/repository/redis.repository.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './redis.store.definitions';
2
+ export * from './redis.store.module';
3
+ export * from './redis.store.service';
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./redis.store.definitions"), exports);
18
+ __exportStar(require("./redis.store.module"), exports);
19
+ __exportStar(require("./redis.store.service"), exports);
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/store/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4DAA0C;AAC1C,uDAAqC;AACrC,wDAAsC"}