inibase 1.1.24 → 1.1.25
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/file.js +2 -2
- package/dist/index.js +30 -26
- package/package.json +1 -1
package/dist/file.js
CHANGED
|
@@ -155,15 +155,15 @@ const decodeHelper = (value, field) => {
|
|
|
155
155
|
}));
|
|
156
156
|
break;
|
|
157
157
|
case "table":
|
|
158
|
+
case "id":
|
|
158
159
|
return isNumber(value) &&
|
|
159
160
|
(!field.table ||
|
|
160
161
|
!field.databasePath ||
|
|
162
|
+
field.key !== "id" ||
|
|
161
163
|
!globalConfig[field.databasePath].tables?.get(field.table)?.config
|
|
162
164
|
.decodeID)
|
|
163
165
|
? encodeID(value)
|
|
164
166
|
: value;
|
|
165
|
-
case "id":
|
|
166
|
-
return isNumber(value) ? encodeID(value) : value;
|
|
167
167
|
default:
|
|
168
168
|
return value;
|
|
169
169
|
}
|
package/dist/index.js
CHANGED
|
@@ -935,16 +935,9 @@ export default class Inibase {
|
|
|
935
935
|
let RETURN = {};
|
|
936
936
|
if (!criteria)
|
|
937
937
|
return [null, null];
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
RETURN = Utils.deepMerge(RETURN, Object.fromEntries(Object.entries(searchResult).filter(([_k, v], _i) => Object.keys(v).filter((key) => Object.keys(criteria.and).includes(key)).length)));
|
|
942
|
-
delete criteria.and;
|
|
943
|
-
searchIn = lineNumbers;
|
|
944
|
-
}
|
|
945
|
-
else
|
|
946
|
-
return [null, null];
|
|
947
|
-
}
|
|
938
|
+
const criteriaAND = criteria.and;
|
|
939
|
+
if (criteriaAND)
|
|
940
|
+
delete criteria.and;
|
|
948
941
|
const criteriaOR = criteria.or;
|
|
949
942
|
if (criteriaOR)
|
|
950
943
|
delete criteria.or;
|
|
@@ -1012,7 +1005,11 @@ export default class Inibase {
|
|
|
1012
1005
|
searchOperator = "=";
|
|
1013
1006
|
searchComparedAtValue = value;
|
|
1014
1007
|
}
|
|
1015
|
-
const [searchResult, totalLines, linesNumbers] = await File.search(join(tablePath, `${key}${this.getFileExtension(tableName)}`), searchOperator ?? "=", searchComparedAtValue ?? null, searchLogicalOperator,
|
|
1008
|
+
const [searchResult, totalLines, linesNumbers] = await File.search(join(tablePath, `${key}${this.getFileExtension(tableName)}`), searchOperator ?? "=", searchComparedAtValue ?? null, searchLogicalOperator, searchIn, {
|
|
1009
|
+
...field,
|
|
1010
|
+
databasePath: this.databasePath,
|
|
1011
|
+
table: field.table ?? tableName,
|
|
1012
|
+
}, options.perPage, (options.page - 1) * options.perPage + 1, true);
|
|
1016
1013
|
if (searchResult) {
|
|
1017
1014
|
const formatedSearchResult = Object.fromEntries(Object.entries(searchResult).map(([id, value]) => {
|
|
1018
1015
|
const nestedObj = {};
|
|
@@ -1023,8 +1020,8 @@ export default class Inibase {
|
|
|
1023
1020
|
? formatedSearchResult
|
|
1024
1021
|
: Utils.deepMerge(RETURN, formatedSearchResult);
|
|
1025
1022
|
this.totalItems.set(`${tableName}-${key}`, totalLines);
|
|
1026
|
-
if (linesNumbers?.size) {
|
|
1027
|
-
if (searchIn
|
|
1023
|
+
if (linesNumbers?.size && allTrue) {
|
|
1024
|
+
if (searchIn)
|
|
1028
1025
|
for (const lineNumber of linesNumbers)
|
|
1029
1026
|
searchIn.add(lineNumber);
|
|
1030
1027
|
else
|
|
@@ -1032,11 +1029,19 @@ export default class Inibase {
|
|
|
1032
1029
|
}
|
|
1033
1030
|
}
|
|
1034
1031
|
else if (allTrue)
|
|
1035
|
-
return
|
|
1032
|
+
return null;
|
|
1033
|
+
}
|
|
1034
|
+
}
|
|
1035
|
+
if (criteriaAND && Utils.isObject(criteriaAND)) {
|
|
1036
|
+
const searchResult = await this.applyCriteria(tableName, options, criteriaAND, true, searchIn);
|
|
1037
|
+
if (searchResult) {
|
|
1038
|
+
RETURN = Utils.deepMerge(RETURN, Object.fromEntries(Object.entries(searchResult).filter(([_k, v], _i) => Object.keys(v).filter((key) => Object.keys(criteriaAND).includes(key)).length)));
|
|
1036
1039
|
}
|
|
1040
|
+
else
|
|
1041
|
+
return null;
|
|
1037
1042
|
}
|
|
1038
1043
|
if (criteriaOR && Utils.isObject(criteriaOR)) {
|
|
1039
|
-
const
|
|
1044
|
+
const searchResult = await this.applyCriteria(tableName, options, criteriaOR, false, searchIn);
|
|
1040
1045
|
if (searchResult) {
|
|
1041
1046
|
RETURN = Utils.deepMerge(RETURN, searchResult);
|
|
1042
1047
|
if (!Object.keys(RETURN).length)
|
|
@@ -1045,10 +1050,9 @@ export default class Inibase {
|
|
|
1045
1050
|
Object.keys(criteriaOR).some((criteriaKey) => criteriaKey.startsWith(`${key}.`))).length));
|
|
1046
1051
|
if (!Object.keys(RETURN).length)
|
|
1047
1052
|
RETURN = {};
|
|
1048
|
-
searchIn = lineNumbers;
|
|
1049
1053
|
}
|
|
1050
1054
|
}
|
|
1051
|
-
return
|
|
1055
|
+
return Object.keys(RETURN).length ? RETURN : null;
|
|
1052
1056
|
}
|
|
1053
1057
|
_filterSchemaByColumns(schema, columns) {
|
|
1054
1058
|
return schema
|
|
@@ -1282,22 +1286,22 @@ export default class Inibase {
|
|
|
1282
1286
|
.map(Number), options, onlyOne, undefined, true);
|
|
1283
1287
|
}
|
|
1284
1288
|
}
|
|
1285
|
-
const
|
|
1286
|
-
if (
|
|
1289
|
+
const LineNumberDataObj = await this.applyCriteria(tableName, options, where);
|
|
1290
|
+
if (LineNumberDataObj) {
|
|
1287
1291
|
if (!this.totalItems.has(`${tableName}-*`))
|
|
1288
|
-
this.totalItems.set(`${tableName}-*`,
|
|
1292
|
+
this.totalItems.set(`${tableName}-*`, Object.keys(LineNumberDataObj).length);
|
|
1289
1293
|
if (onlyLinesNumbers)
|
|
1290
1294
|
return onlyOne
|
|
1291
|
-
?
|
|
1292
|
-
:
|
|
1293
|
-
const alreadyExistsColumns = Object.keys(Object.values(
|
|
1295
|
+
? Number(Object.keys(LineNumberDataObj)[0])
|
|
1296
|
+
: Object.keys(LineNumberDataObj).map(Number);
|
|
1297
|
+
const alreadyExistsColumns = Object.keys(Object.values(LineNumberDataObj)[0]);
|
|
1294
1298
|
const alreadyExistsColumnsIDs = Utils.flattenSchema(schema)
|
|
1295
1299
|
.filter(({ key }) => alreadyExistsColumns.includes(key))
|
|
1296
1300
|
.map(({ id }) => id);
|
|
1297
|
-
RETURN = Object.values(Utils.deepMerge(
|
|
1298
|
-
Utils.isFieldType(field, "table")), Object.keys(
|
|
1301
|
+
RETURN = Object.values(Utils.deepMerge(LineNumberDataObj, await this.processSchemaData(tableName, Utils.filterSchema(schema, (field) => !alreadyExistsColumnsIDs.includes(field.id) ||
|
|
1302
|
+
Utils.isFieldType(field, "table")), Object.keys(LineNumberDataObj).map(Number), options)));
|
|
1299
1303
|
if (globalConfig[this.databasePath].tables.get(tableName).config.cache)
|
|
1300
|
-
await writeFile(cachedFilePath,
|
|
1304
|
+
await writeFile(cachedFilePath, Object.keys(LineNumberDataObj).join(","));
|
|
1301
1305
|
}
|
|
1302
1306
|
}
|
|
1303
1307
|
if (!RETURN ||
|