@goatlab/fluent-loki 0.7.10 → 0.7.12
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/dist/Loki.d.ts +23 -0
- package/dist/Loki.js +67 -0
- package/dist/Loki.js.map +1 -0
- package/dist/LokiConnector.d.ts +69 -0
- package/dist/LokiConnector.js +618 -0
- package/dist/LokiConnector.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/test/loki.datasource.d.ts +1 -0
- package/dist/test/loki.datasource.js +10 -0
- package/dist/test/loki.datasource.js.map +1 -0
- package/dist/test/loki.repository.factory.d.ts +8 -0
- package/dist/test/loki.repository.factory.js +27 -0
- package/dist/test/loki.repository.factory.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +10 -12
|
@@ -0,0 +1,618 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LokiConnector = void 0;
|
|
4
|
+
const js_utils_1 = require("@goatlab/js-utils");
|
|
5
|
+
const dates_1 = require("@goatlab/dates");
|
|
6
|
+
const fluent_1 = require("@goatlab/fluent");
|
|
7
|
+
class LokiConnector extends fluent_1.BaseConnector {
|
|
8
|
+
collection;
|
|
9
|
+
dataSource;
|
|
10
|
+
inputSchema;
|
|
11
|
+
outputSchema;
|
|
12
|
+
entity;
|
|
13
|
+
constructor({ entity, dataSource, inputSchema, outputSchema }) {
|
|
14
|
+
super();
|
|
15
|
+
this.dataSource = dataSource;
|
|
16
|
+
this.inputSchema = inputSchema;
|
|
17
|
+
this.outputSchema =
|
|
18
|
+
outputSchema || inputSchema;
|
|
19
|
+
this.entity = entity;
|
|
20
|
+
const dbModels = [];
|
|
21
|
+
for (const collection of dataSource.collections) {
|
|
22
|
+
dbModels.push(collection.name);
|
|
23
|
+
}
|
|
24
|
+
if (!dbModels.includes(entity.name)) {
|
|
25
|
+
dataSource.addCollection(entity.name);
|
|
26
|
+
}
|
|
27
|
+
this.dataSource = dataSource;
|
|
28
|
+
this.collection = dataSource.getCollection(entity.name);
|
|
29
|
+
const relationShipBuilder = fluent_1.modelGeneratorDataSource.getRepository(entity);
|
|
30
|
+
const { relations } = (0, fluent_1.getRelationsFromModelGenerator)(relationShipBuilder);
|
|
31
|
+
this.modelRelations = relations;
|
|
32
|
+
this.outputKeys = (0, fluent_1.getOutputKeys)(relationShipBuilder) || [];
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Insert the data object into the database.
|
|
36
|
+
* @param data
|
|
37
|
+
*/
|
|
38
|
+
async insert(data) {
|
|
39
|
+
const _data = js_utils_1.Objects.clone(data);
|
|
40
|
+
// Validate Input
|
|
41
|
+
const validatedData = this.inputSchema.parse(_data);
|
|
42
|
+
const id = js_utils_1.Ids.uuid();
|
|
43
|
+
const now = new Date();
|
|
44
|
+
const inserted = {
|
|
45
|
+
id,
|
|
46
|
+
created: now,
|
|
47
|
+
createdAt: now,
|
|
48
|
+
updatedAt: now,
|
|
49
|
+
...validatedData
|
|
50
|
+
};
|
|
51
|
+
await this.collection.insert(inserted);
|
|
52
|
+
// Validate Output
|
|
53
|
+
return this.outputSchema.parse(js_utils_1.Objects.clearEmpties(js_utils_1.Objects.deleteNulls(inserted)));
|
|
54
|
+
}
|
|
55
|
+
async insertMany(data) {
|
|
56
|
+
const validatedData = this.inputSchema.array().parse(data);
|
|
57
|
+
const insertedElements = [];
|
|
58
|
+
for (const data of validatedData) {
|
|
59
|
+
const now = new Date();
|
|
60
|
+
insertedElements.push({
|
|
61
|
+
...data,
|
|
62
|
+
id: js_utils_1.Ids.uuid(),
|
|
63
|
+
created: now,
|
|
64
|
+
createdAt: now,
|
|
65
|
+
updatedAt: now
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
await this.collection.insert(insertedElements);
|
|
69
|
+
return this.outputSchema.array().parse(insertedElements.map(d => {
|
|
70
|
+
return js_utils_1.Objects.clearEmpties(js_utils_1.Objects.deleteNulls(d));
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
*
|
|
75
|
+
* Returns the TypeOrm Repository, you can use it
|
|
76
|
+
* form more complex queries and to get
|
|
77
|
+
* the TypeOrm query builder
|
|
78
|
+
*
|
|
79
|
+
* @param query
|
|
80
|
+
*/
|
|
81
|
+
raw() {
|
|
82
|
+
return this.collection;
|
|
83
|
+
}
|
|
84
|
+
async findMany(query) {
|
|
85
|
+
const where = this.getLokiWhere(query?.where);
|
|
86
|
+
const sort = [];
|
|
87
|
+
let baseQuery = this.collection
|
|
88
|
+
.chain()
|
|
89
|
+
.find(where);
|
|
90
|
+
// Pagination
|
|
91
|
+
if (query?.paginated) {
|
|
92
|
+
baseQuery.limit(query.paginated.perPage);
|
|
93
|
+
baseQuery.offset((query.paginated?.page - 1) * query.paginated.perPage);
|
|
94
|
+
}
|
|
95
|
+
if (query?.orderBy) {
|
|
96
|
+
for (const order of query?.orderBy) {
|
|
97
|
+
const flattenObject = js_utils_1.Objects.flatten(order);
|
|
98
|
+
for (const attribute of Object.keys(flattenObject)) {
|
|
99
|
+
const isDecending = flattenObject[attribute] === 'desc';
|
|
100
|
+
sort.push([attribute, isDecending]);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
baseQuery = baseQuery.compoundsort(sort);
|
|
104
|
+
}
|
|
105
|
+
// Apply offset and limit after sorting
|
|
106
|
+
if (query?.offset) {
|
|
107
|
+
baseQuery = baseQuery.offset(query.offset);
|
|
108
|
+
}
|
|
109
|
+
if (query?.limit) {
|
|
110
|
+
baseQuery = baseQuery.limit(query.limit);
|
|
111
|
+
}
|
|
112
|
+
else if (!query?.paginated) {
|
|
113
|
+
// Default limit if no pagination
|
|
114
|
+
baseQuery = baseQuery.limit(10);
|
|
115
|
+
}
|
|
116
|
+
let found = baseQuery.data();
|
|
117
|
+
found.map(d => {
|
|
118
|
+
js_utils_1.Objects.clearEmpties(js_utils_1.Objects.deleteNulls(d));
|
|
119
|
+
});
|
|
120
|
+
if (query?.paginated) {
|
|
121
|
+
const paginationInfo = {
|
|
122
|
+
total: 0,
|
|
123
|
+
perPage: query.paginated.perPage,
|
|
124
|
+
currentPage: query.paginated.page,
|
|
125
|
+
nextPage: query.paginated.page + 1,
|
|
126
|
+
firstPage: 1,
|
|
127
|
+
lastPage: Math.ceil(1 / query.paginated.perPage),
|
|
128
|
+
prevPage: query.paginated.page === 1 ? null : query.paginated.page - 1,
|
|
129
|
+
from: (query.paginated.page - 1) * query.paginated.perPage + 1,
|
|
130
|
+
to: query.paginated.perPage * query.paginated.page,
|
|
131
|
+
data: found
|
|
132
|
+
};
|
|
133
|
+
return paginationInfo;
|
|
134
|
+
}
|
|
135
|
+
if (query?.select) {
|
|
136
|
+
const selectedAttributes = this.jsApplySelect(query?.select, found);
|
|
137
|
+
// TODO: validate based on the select properties
|
|
138
|
+
return selectedAttributes;
|
|
139
|
+
}
|
|
140
|
+
// Validate Output against schema
|
|
141
|
+
// Use partial schema to handle objects that may have been replaced with partial data
|
|
142
|
+
const validatedResults = found.map(item => {
|
|
143
|
+
try {
|
|
144
|
+
return this.outputSchema.parse(item);
|
|
145
|
+
}
|
|
146
|
+
catch (e) {
|
|
147
|
+
// If full validation fails, try partial validation
|
|
148
|
+
return this.outputSchema.partial().parse(item);
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
return validatedResults;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
*
|
|
155
|
+
* @param id
|
|
156
|
+
* @returns
|
|
157
|
+
*/
|
|
158
|
+
async deleteById(id) {
|
|
159
|
+
await this.collection.findAndRemove({ id });
|
|
160
|
+
return id;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* PATCH operation
|
|
164
|
+
* @param data
|
|
165
|
+
*/
|
|
166
|
+
async updateById(id, data) {
|
|
167
|
+
const dataToInsert = this.outputKeys.includes('updated')
|
|
168
|
+
? {
|
|
169
|
+
...data,
|
|
170
|
+
...{ updated: new Date() }
|
|
171
|
+
}
|
|
172
|
+
: data;
|
|
173
|
+
// For PATCH operations, use partial validation
|
|
174
|
+
const partialSchema = this.inputSchema.partial();
|
|
175
|
+
const validatedData = partialSchema.parse(dataToInsert);
|
|
176
|
+
const local = await this.collection.findOne({ id });
|
|
177
|
+
const mod = {
|
|
178
|
+
...local,
|
|
179
|
+
...validatedData,
|
|
180
|
+
modified: dates_1.Dates.currentIsoString()
|
|
181
|
+
};
|
|
182
|
+
const dbResult = await this.collection.update(mod);
|
|
183
|
+
// const dbResult = await this.collection.findOne({ id })
|
|
184
|
+
// Validate Output
|
|
185
|
+
return this.outputSchema?.parse(js_utils_1.Objects.clearEmpties(js_utils_1.Objects.deleteNulls(dbResult)));
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
*
|
|
189
|
+
* PUT operation. All fields not included in the data
|
|
190
|
+
* param will be set to null
|
|
191
|
+
*
|
|
192
|
+
* @param id
|
|
193
|
+
* @param data
|
|
194
|
+
*/
|
|
195
|
+
async replaceById(id, data) {
|
|
196
|
+
let value = await this.collection.findOne({ id });
|
|
197
|
+
const flatValue = js_utils_1.Objects.flatten(JSON.parse(JSON.stringify(value)));
|
|
198
|
+
Object.keys(flatValue).forEach(key => {
|
|
199
|
+
flatValue[key] = null;
|
|
200
|
+
});
|
|
201
|
+
const nullObject = js_utils_1.Objects.nest(flatValue);
|
|
202
|
+
const newValue = { ...nullObject, ...data };
|
|
203
|
+
delete newValue._id;
|
|
204
|
+
delete newValue.id;
|
|
205
|
+
delete newValue.created;
|
|
206
|
+
delete newValue.updated;
|
|
207
|
+
const dataToInsert = this.outputKeys.includes('updated')
|
|
208
|
+
? {
|
|
209
|
+
...data,
|
|
210
|
+
...{ updated: new Date() }
|
|
211
|
+
}
|
|
212
|
+
: data;
|
|
213
|
+
// For replace operations, use partial validation since we're replacing with only provided fields
|
|
214
|
+
const partialSchema = this.inputSchema.partial();
|
|
215
|
+
const validatedData = partialSchema.parse(dataToInsert);
|
|
216
|
+
// Keep LokiJS metadata when updating
|
|
217
|
+
const updatedValue = {
|
|
218
|
+
...value, // Keep all LokiJS metadata
|
|
219
|
+
...validatedData
|
|
220
|
+
};
|
|
221
|
+
// Remove all fields except LokiJS metadata and validated fields
|
|
222
|
+
const lokiMetaFields = ['$loki', 'meta'];
|
|
223
|
+
const allowedFields = [...lokiMetaFields, 'id', 'created', ...Object.keys(validatedData)];
|
|
224
|
+
Object.keys(updatedValue).forEach(key => {
|
|
225
|
+
if (!allowedFields.includes(key)) {
|
|
226
|
+
delete updatedValue[key];
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
await this.collection.update(updatedValue);
|
|
230
|
+
const val = await this.collection.findOne({ id });
|
|
231
|
+
// For replace operations, use partial output schema since we only have the replaced fields
|
|
232
|
+
const partialOutputSchema = this.outputSchema.partial();
|
|
233
|
+
return partialOutputSchema.parse(js_utils_1.Objects.clearEmpties(js_utils_1.Objects.deleteNulls(val)));
|
|
234
|
+
}
|
|
235
|
+
getLokiWhere(where) {
|
|
236
|
+
/*
|
|
237
|
+
|
|
238
|
+
if (this.relationQuery && this.relationQuery.data) {
|
|
239
|
+
const ids = this.relationQuery.data.map(
|
|
240
|
+
d => Ids.objectID(d.id) as unknown as ObjectID
|
|
241
|
+
)
|
|
242
|
+
|
|
243
|
+
andFilters.push([
|
|
244
|
+
this.relationQuery.relation.inverseSidePropertyPath,
|
|
245
|
+
'in',
|
|
246
|
+
ids
|
|
247
|
+
])
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
if (!andFilters || andFilters.length === 0) {
|
|
251
|
+
return filters
|
|
252
|
+
}
|
|
253
|
+
*/
|
|
254
|
+
if (!where || Object.keys(where).length === 0) {
|
|
255
|
+
return {};
|
|
256
|
+
}
|
|
257
|
+
const Filters = {
|
|
258
|
+
where: { $or: [{ $and: [] }] }
|
|
259
|
+
};
|
|
260
|
+
const orConditions = (0, fluent_1.extractConditions)((where['OR'] || []));
|
|
261
|
+
const andConditions = (0, fluent_1.extractConditions)((where['AND'] || []));
|
|
262
|
+
const copy = js_utils_1.Objects.clone(where);
|
|
263
|
+
if (!!copy['AND']) {
|
|
264
|
+
delete copy['AND'];
|
|
265
|
+
}
|
|
266
|
+
if (!!copy['OR']) {
|
|
267
|
+
delete copy['OR'];
|
|
268
|
+
}
|
|
269
|
+
const rootLevelConditions = (0, fluent_1.extractConditions)([copy]);
|
|
270
|
+
// Process AND conditions
|
|
271
|
+
for (const condition of andConditions) {
|
|
272
|
+
let { element, operator, value } = condition;
|
|
273
|
+
if (element === 'id') {
|
|
274
|
+
// element = '_id'
|
|
275
|
+
/*
|
|
276
|
+
value = (Array.isArray(value)
|
|
277
|
+
? value.map(v => Ids.objectID(v) as unknown as ObjectID)
|
|
278
|
+
: (Ids.objectID(value) as unknown as ObjectID) as unknown as PrimitivesArray | Primitives)
|
|
279
|
+
*/
|
|
280
|
+
}
|
|
281
|
+
// Handle nested properties for LokiJS
|
|
282
|
+
if (element.includes('.')) {
|
|
283
|
+
const parts = element.split('.');
|
|
284
|
+
const nestedFilter = {};
|
|
285
|
+
let current = nestedFilter;
|
|
286
|
+
for (let i = 0; i < parts.length - 1; i++) {
|
|
287
|
+
current[parts[i]] = {};
|
|
288
|
+
current = current[parts[i]];
|
|
289
|
+
}
|
|
290
|
+
const lastPart = parts[parts.length - 1];
|
|
291
|
+
switch (operator) {
|
|
292
|
+
case fluent_1.LogicOperator.equals:
|
|
293
|
+
current[lastPart] = value;
|
|
294
|
+
break;
|
|
295
|
+
case fluent_1.LogicOperator.isNot:
|
|
296
|
+
current[lastPart] = { $ne: value };
|
|
297
|
+
break;
|
|
298
|
+
case fluent_1.LogicOperator.greaterThan:
|
|
299
|
+
current[lastPart] = { $gt: value };
|
|
300
|
+
break;
|
|
301
|
+
case fluent_1.LogicOperator.greaterOrEqualThan:
|
|
302
|
+
current[lastPart] = { $gte: value };
|
|
303
|
+
break;
|
|
304
|
+
case fluent_1.LogicOperator.lessThan:
|
|
305
|
+
current[lastPart] = { $lt: value };
|
|
306
|
+
break;
|
|
307
|
+
case fluent_1.LogicOperator.lessOrEqualThan:
|
|
308
|
+
current[lastPart] = { $lte: value };
|
|
309
|
+
break;
|
|
310
|
+
case fluent_1.LogicOperator.in:
|
|
311
|
+
current[lastPart] = { $in: value };
|
|
312
|
+
break;
|
|
313
|
+
case fluent_1.LogicOperator.notIn:
|
|
314
|
+
current[lastPart] = { $nin: value };
|
|
315
|
+
break;
|
|
316
|
+
case fluent_1.LogicOperator.exists:
|
|
317
|
+
current[lastPart] = { $exists: true };
|
|
318
|
+
break;
|
|
319
|
+
case fluent_1.LogicOperator.notExists:
|
|
320
|
+
current[lastPart] = { $exists: false };
|
|
321
|
+
break;
|
|
322
|
+
case fluent_1.LogicOperator.regexp:
|
|
323
|
+
current[lastPart] = { $regex: value };
|
|
324
|
+
break;
|
|
325
|
+
}
|
|
326
|
+
Filters.where.$or[0].$and.push(nestedFilter);
|
|
327
|
+
}
|
|
328
|
+
else {
|
|
329
|
+
switch (operator) {
|
|
330
|
+
case fluent_1.LogicOperator.equals:
|
|
331
|
+
Filters.where.$or[0].$and.push({ [element]: { $eq: value } });
|
|
332
|
+
break;
|
|
333
|
+
case fluent_1.LogicOperator.isNot:
|
|
334
|
+
Filters.where.$or[0].$and.push({ [element]: { $neq: value } });
|
|
335
|
+
break;
|
|
336
|
+
case fluent_1.LogicOperator.greaterThan:
|
|
337
|
+
Filters.where.$or[0].$and.push({ [element]: { $gt: value } });
|
|
338
|
+
break;
|
|
339
|
+
case fluent_1.LogicOperator.greaterOrEqualThan:
|
|
340
|
+
Filters.where.$or[0].$and.push({ [element]: { $gte: value } });
|
|
341
|
+
break;
|
|
342
|
+
case fluent_1.LogicOperator.lessThan:
|
|
343
|
+
Filters.where.$or[0].$and.push({ [element]: { $lt: value } });
|
|
344
|
+
break;
|
|
345
|
+
case fluent_1.LogicOperator.lessOrEqualThan:
|
|
346
|
+
Filters.where.$or[0].$and.push({ [element]: { $lte: value } });
|
|
347
|
+
break;
|
|
348
|
+
case fluent_1.LogicOperator.in:
|
|
349
|
+
Filters.where.$or[0].$and.push({ [element]: { $in: value } });
|
|
350
|
+
break;
|
|
351
|
+
case fluent_1.LogicOperator.notIn:
|
|
352
|
+
Filters.where.$or[0].$and.push({
|
|
353
|
+
[element]: { $not: { $in: value } }
|
|
354
|
+
});
|
|
355
|
+
break;
|
|
356
|
+
case fluent_1.LogicOperator.exists:
|
|
357
|
+
Filters.where.$or[0].$and.push({ [element]: { $exists: true } });
|
|
358
|
+
break;
|
|
359
|
+
case fluent_1.LogicOperator.notExists:
|
|
360
|
+
Filters.where.$or[0].$and.push({ [element]: { $exists: false } });
|
|
361
|
+
break;
|
|
362
|
+
case fluent_1.LogicOperator.regexp:
|
|
363
|
+
Filters.where.$or[0].$and.push({ [element]: { $regex: value } });
|
|
364
|
+
break;
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
for (const condition of rootLevelConditions) {
|
|
369
|
+
let { element, operator, value } = condition;
|
|
370
|
+
if (element === 'id') {
|
|
371
|
+
// element = '_id'
|
|
372
|
+
/*
|
|
373
|
+
value = (Array.isArray(value)
|
|
374
|
+
? value.map(v => Ids.objectID(v) as unknown as ObjectID)
|
|
375
|
+
: (Ids.objectID(value) as unknown as ObjectID) as unknown as PrimitivesArray | Primitives)
|
|
376
|
+
*/
|
|
377
|
+
}
|
|
378
|
+
// Handle nested properties for LokiJS
|
|
379
|
+
if (element.includes('.')) {
|
|
380
|
+
const parts = element.split('.');
|
|
381
|
+
const nestedFilter = {};
|
|
382
|
+
let current = nestedFilter;
|
|
383
|
+
for (let i = 0; i < parts.length - 1; i++) {
|
|
384
|
+
current[parts[i]] = {};
|
|
385
|
+
current = current[parts[i]];
|
|
386
|
+
}
|
|
387
|
+
const lastPart = parts[parts.length - 1];
|
|
388
|
+
switch (operator) {
|
|
389
|
+
case fluent_1.LogicOperator.equals:
|
|
390
|
+
current[lastPart] = value;
|
|
391
|
+
break;
|
|
392
|
+
case fluent_1.LogicOperator.isNot:
|
|
393
|
+
current[lastPart] = { $ne: value };
|
|
394
|
+
break;
|
|
395
|
+
case fluent_1.LogicOperator.greaterThan:
|
|
396
|
+
current[lastPart] = { $gt: value };
|
|
397
|
+
break;
|
|
398
|
+
case fluent_1.LogicOperator.greaterOrEqualThan:
|
|
399
|
+
current[lastPart] = { $gte: value };
|
|
400
|
+
break;
|
|
401
|
+
case fluent_1.LogicOperator.lessThan:
|
|
402
|
+
current[lastPart] = { $lt: value };
|
|
403
|
+
break;
|
|
404
|
+
case fluent_1.LogicOperator.lessOrEqualThan:
|
|
405
|
+
current[lastPart] = { $lte: value };
|
|
406
|
+
break;
|
|
407
|
+
case fluent_1.LogicOperator.in:
|
|
408
|
+
current[lastPart] = { $in: value };
|
|
409
|
+
break;
|
|
410
|
+
case fluent_1.LogicOperator.notIn:
|
|
411
|
+
current[lastPart] = { $nin: value };
|
|
412
|
+
break;
|
|
413
|
+
case fluent_1.LogicOperator.exists:
|
|
414
|
+
current[lastPart] = { $exists: true };
|
|
415
|
+
break;
|
|
416
|
+
case fluent_1.LogicOperator.notExists:
|
|
417
|
+
current[lastPart] = { $exists: false };
|
|
418
|
+
break;
|
|
419
|
+
case fluent_1.LogicOperator.regexp:
|
|
420
|
+
current[lastPart] = { $regex: value };
|
|
421
|
+
break;
|
|
422
|
+
}
|
|
423
|
+
Filters.where.$or[0].$and.push(nestedFilter);
|
|
424
|
+
}
|
|
425
|
+
else {
|
|
426
|
+
switch (operator) {
|
|
427
|
+
case fluent_1.LogicOperator.equals:
|
|
428
|
+
Filters.where.$or[0].$and.push({ [element]: { $eq: value } });
|
|
429
|
+
break;
|
|
430
|
+
case fluent_1.LogicOperator.isNot:
|
|
431
|
+
Filters.where.$or[0].$and.push({ [element]: { $neq: value } });
|
|
432
|
+
break;
|
|
433
|
+
case fluent_1.LogicOperator.greaterThan:
|
|
434
|
+
Filters.where.$or[0].$and.push({ [element]: { $gt: value } });
|
|
435
|
+
break;
|
|
436
|
+
case fluent_1.LogicOperator.greaterOrEqualThan:
|
|
437
|
+
Filters.where.$or[0].$and.push({ [element]: { $gte: value } });
|
|
438
|
+
break;
|
|
439
|
+
case fluent_1.LogicOperator.lessThan:
|
|
440
|
+
Filters.where.$or[0].$and.push({ [element]: { $lt: value } });
|
|
441
|
+
break;
|
|
442
|
+
case fluent_1.LogicOperator.lessOrEqualThan:
|
|
443
|
+
Filters.where.$or[0].$and.push({ [element]: { $lte: value } });
|
|
444
|
+
break;
|
|
445
|
+
case fluent_1.LogicOperator.in:
|
|
446
|
+
Filters.where.$or[0].$and.push({ [element]: { $in: value } });
|
|
447
|
+
break;
|
|
448
|
+
case fluent_1.LogicOperator.notIn:
|
|
449
|
+
Filters.where.$or[0].$and.push({
|
|
450
|
+
[element]: { $not: { $in: value } }
|
|
451
|
+
});
|
|
452
|
+
break;
|
|
453
|
+
case fluent_1.LogicOperator.exists:
|
|
454
|
+
Filters.where.$or[0].$and.push({ [element]: { $exists: true } });
|
|
455
|
+
break;
|
|
456
|
+
case fluent_1.LogicOperator.notExists:
|
|
457
|
+
Filters.where.$or[0].$and.push({ [element]: { $exists: false } });
|
|
458
|
+
break;
|
|
459
|
+
case fluent_1.LogicOperator.regexp:
|
|
460
|
+
Filters.where.$or[0].$and.push({ [element]: { $regex: value } });
|
|
461
|
+
break;
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
for (const condition of orConditions) {
|
|
466
|
+
let { element, operator, value } = condition;
|
|
467
|
+
switch (operator) {
|
|
468
|
+
case fluent_1.LogicOperator.equals:
|
|
469
|
+
Filters.where.$or.push({ [element]: { $eq: value } });
|
|
470
|
+
break;
|
|
471
|
+
case fluent_1.LogicOperator.isNot:
|
|
472
|
+
Filters.where.$or.push({ [element]: { $neq: value } });
|
|
473
|
+
break;
|
|
474
|
+
case fluent_1.LogicOperator.greaterThan:
|
|
475
|
+
Filters.where.$or.push({ [element]: { $gt: value } });
|
|
476
|
+
break;
|
|
477
|
+
case fluent_1.LogicOperator.greaterOrEqualThan:
|
|
478
|
+
Filters.where.$or.push({ [element]: { $gte: value } });
|
|
479
|
+
break;
|
|
480
|
+
case fluent_1.LogicOperator.lessThan:
|
|
481
|
+
Filters.where.$or.push({ [element]: { $lt: value } });
|
|
482
|
+
break;
|
|
483
|
+
case fluent_1.LogicOperator.lessOrEqualThan:
|
|
484
|
+
Filters.where.$or.push({ [element]: { $lte: value } });
|
|
485
|
+
break;
|
|
486
|
+
case fluent_1.LogicOperator.in:
|
|
487
|
+
Filters.where.$or.push({ [element]: { $in: value } });
|
|
488
|
+
break;
|
|
489
|
+
case fluent_1.LogicOperator.notIn:
|
|
490
|
+
Filters.where.$or.push({
|
|
491
|
+
[element]: { $not: { $in: value } }
|
|
492
|
+
});
|
|
493
|
+
break;
|
|
494
|
+
case fluent_1.LogicOperator.exists:
|
|
495
|
+
Filters.where.$or.push({ [element]: { $exists: true } });
|
|
496
|
+
break;
|
|
497
|
+
case fluent_1.LogicOperator.notExists:
|
|
498
|
+
Filters.where.$or.push({ [element]: { $exists: false } });
|
|
499
|
+
break;
|
|
500
|
+
case fluent_1.LogicOperator.regexp:
|
|
501
|
+
Filters.where.$or.push({ [element]: { $regex: value } });
|
|
502
|
+
break;
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
// For simple queries without OR conditions, return a simpler format
|
|
506
|
+
if (Filters.where.$or.length === 1 && Filters.where.$or[0].$and.length === 1) {
|
|
507
|
+
const filter = Filters.where.$or[0].$and[0];
|
|
508
|
+
// For nested objects, LokiJS needs { "breed.family": "Angora" } format
|
|
509
|
+
// Check if this is a nested object filter
|
|
510
|
+
const keys = Object.keys(filter);
|
|
511
|
+
if (keys.length === 1 && typeof filter[keys[0]] === 'object' && !filter[keys[0]].$eq && !filter[keys[0]].$ne && !filter[keys[0]].$gt && !filter[keys[0]].$gte && !filter[keys[0]].$lt && !filter[keys[0]].$lte && !filter[keys[0]].$in && !filter[keys[0]].$nin && !filter[keys[0]].$exists && !filter[keys[0]].$regex) {
|
|
512
|
+
// This is a nested object filter like { breed: { family: "Angora" } }
|
|
513
|
+
// Convert to dot notation for LokiJS
|
|
514
|
+
const result = {};
|
|
515
|
+
const flattenNestedObject = (obj, prefix = '') => {
|
|
516
|
+
for (const key in obj) {
|
|
517
|
+
const fullKey = prefix ? `${prefix}.${key}` : key;
|
|
518
|
+
if (typeof obj[key] === 'object' && obj[key] !== null && !Array.isArray(obj[key]) && !obj[key].$eq && !obj[key].$ne && !obj[key].$gt && !obj[key].$gte && !obj[key].$lt && !obj[key].$lte && !obj[key].$in && !obj[key].$nin && !obj[key].$exists && !obj[key].$regex) {
|
|
519
|
+
flattenNestedObject(obj[key], fullKey);
|
|
520
|
+
}
|
|
521
|
+
else {
|
|
522
|
+
result[fullKey] = obj[key];
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
};
|
|
526
|
+
flattenNestedObject(filter);
|
|
527
|
+
return result;
|
|
528
|
+
}
|
|
529
|
+
return filter;
|
|
530
|
+
}
|
|
531
|
+
// For empty AND conditions, return empty object
|
|
532
|
+
if (Filters.where.$or.length === 1 && Filters.where.$or[0].$and.length === 0) {
|
|
533
|
+
return {};
|
|
534
|
+
}
|
|
535
|
+
// For multiple AND conditions without OR, combine them
|
|
536
|
+
if (Filters.where.$or.length === 1 && Filters.where.$or[0].$and.length > 1) {
|
|
537
|
+
return { $and: Filters.where.$or[0].$and };
|
|
538
|
+
}
|
|
539
|
+
// For OR conditions, return the full structure
|
|
540
|
+
if (Filters.where.$or.length > 1) {
|
|
541
|
+
return { $or: Filters.where.$or };
|
|
542
|
+
}
|
|
543
|
+
return js_utils_1.Objects.clearEmpties(Filters.where);
|
|
544
|
+
}
|
|
545
|
+
loadFirst(query) {
|
|
546
|
+
// Create a clone of the original class
|
|
547
|
+
// to avoid polluting attributes (relatedQuery)
|
|
548
|
+
const detachedClass = Object.assign(Object.create(Object.getPrototypeOf(this)), this);
|
|
549
|
+
detachedClass.setRelatedQuery({
|
|
550
|
+
entity: this.entity,
|
|
551
|
+
repository: this,
|
|
552
|
+
query
|
|
553
|
+
});
|
|
554
|
+
return detachedClass;
|
|
555
|
+
}
|
|
556
|
+
clone() {
|
|
557
|
+
return new this.constructor();
|
|
558
|
+
}
|
|
559
|
+
loadById(id) {
|
|
560
|
+
// Create a new instance to avoid polluting the original one
|
|
561
|
+
const newInstance = this.clone();
|
|
562
|
+
newInstance.setRelatedQuery({
|
|
563
|
+
entity: this.entity,
|
|
564
|
+
repository: this,
|
|
565
|
+
query: {
|
|
566
|
+
where: {
|
|
567
|
+
id
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
});
|
|
571
|
+
return newInstance;
|
|
572
|
+
}
|
|
573
|
+
async clear() {
|
|
574
|
+
this.collection.clear({ removeIndices: true });
|
|
575
|
+
return true;
|
|
576
|
+
}
|
|
577
|
+
/**
|
|
578
|
+
* Override pluck to filter out undefined values
|
|
579
|
+
*/
|
|
580
|
+
async pluck(path, query) {
|
|
581
|
+
const data = await this.findMany(query);
|
|
582
|
+
// Handle both string and object path formats
|
|
583
|
+
const pathKey = typeof path === 'string' ? path : Object.keys(js_utils_1.Objects.flatten(path))[0];
|
|
584
|
+
const result = [];
|
|
585
|
+
for (const item of data) {
|
|
586
|
+
const extracted = js_utils_1.Objects.getFromPath(item, String(pathKey), undefined);
|
|
587
|
+
if (typeof extracted.value !== 'undefined') {
|
|
588
|
+
result.push(extracted.value);
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
return result;
|
|
592
|
+
}
|
|
593
|
+
getLokiOperator(operator) {
|
|
594
|
+
const lokiOperators = {
|
|
595
|
+
'=': '$eq',
|
|
596
|
+
'<': '$lt',
|
|
597
|
+
'>': '$gt',
|
|
598
|
+
'<=': '$lte',
|
|
599
|
+
'>=': '$gte',
|
|
600
|
+
'<>': '$ne',
|
|
601
|
+
'!=': '$ne',
|
|
602
|
+
in: '$in',
|
|
603
|
+
nin: '$nin',
|
|
604
|
+
like: '$aeq',
|
|
605
|
+
regexp: '$regex',
|
|
606
|
+
startsWith: '$regex|^{{$var}}',
|
|
607
|
+
endsWith: '$regex|{{$var}}$',
|
|
608
|
+
contains: '$regex|{{$var}}'
|
|
609
|
+
};
|
|
610
|
+
const converted = js_utils_1.Objects.get(() => lokiOperators[operator], undefined);
|
|
611
|
+
if (!converted) {
|
|
612
|
+
throw new Error(`The operator "${operator}" is not supported in Loki `);
|
|
613
|
+
}
|
|
614
|
+
return converted;
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
exports.LokiConnector = LokiConnector;
|
|
618
|
+
//# sourceMappingURL=LokiConnector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LokiConnector.js","sourceRoot":"","sources":["../src/LokiConnector.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Loki = exports.LokiConnector = void 0;
|
|
4
|
+
const LokiConnector_1 = require("./LokiConnector");
|
|
5
|
+
Object.defineProperty(exports, "LokiConnector", { enumerable: true, get: function () { return LokiConnector_1.LokiConnector; } });
|
|
6
|
+
const Loki_1 = require("./Loki");
|
|
7
|
+
Object.defineProperty(exports, "Loki", { enumerable: true, get: function () { return Loki_1.Loki; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|