inibase 1.1.24 → 1.1.26

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 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
- if (criteria.and && Utils.isObject(criteria.and)) {
939
- const [searchResult, lineNumbers] = await this.applyCriteria(tableName, options, criteria.and, true, searchIn);
940
- if (searchResult) {
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, allTrue ? searchIn : undefined, { ...field, databasePath: this.databasePath }, options.perPage, (options.page - 1) * options.perPage + 1, true);
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,20 +1020,23 @@ 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 && !allTrue)
1028
- for (const lineNumber of linesNumbers)
1029
- searchIn.add(lineNumber);
1030
- else
1031
- searchIn = linesNumbers;
1032
- }
1023
+ if (linesNumbers?.size && allTrue)
1024
+ searchIn = linesNumbers;
1033
1025
  }
1034
1026
  else if (allTrue)
1035
- return [null, null];
1027
+ return null;
1036
1028
  }
1037
1029
  }
1030
+ if (criteriaAND && Utils.isObject(criteriaAND)) {
1031
+ const searchResult = await this.applyCriteria(tableName, options, criteriaAND, true, searchIn);
1032
+ if (searchResult) {
1033
+ RETURN = Utils.deepMerge(RETURN, Object.fromEntries(Object.entries(searchResult).filter(([_k, v], _i) => Object.keys(v).filter((key) => Object.keys(criteriaAND).includes(key)).length)));
1034
+ }
1035
+ else
1036
+ return null;
1037
+ }
1038
1038
  if (criteriaOR && Utils.isObject(criteriaOR)) {
1039
- const [searchResult, lineNumbers] = await this.applyCriteria(tableName, options, criteriaOR, false, searchIn);
1039
+ const searchResult = await this.applyCriteria(tableName, options, criteriaOR, false, searchIn);
1040
1040
  if (searchResult) {
1041
1041
  RETURN = Utils.deepMerge(RETURN, searchResult);
1042
1042
  if (!Object.keys(RETURN).length)
@@ -1045,10 +1045,9 @@ export default class Inibase {
1045
1045
  Object.keys(criteriaOR).some((criteriaKey) => criteriaKey.startsWith(`${key}.`))).length));
1046
1046
  if (!Object.keys(RETURN).length)
1047
1047
  RETURN = {};
1048
- searchIn = lineNumbers;
1049
1048
  }
1050
1049
  }
1051
- return [Object.keys(RETURN).length ? RETURN : null, searchIn];
1050
+ return Object.keys(RETURN).length ? RETURN : null;
1052
1051
  }
1053
1052
  _filterSchemaByColumns(schema, columns) {
1054
1053
  return schema
@@ -1282,22 +1281,22 @@ export default class Inibase {
1282
1281
  .map(Number), options, onlyOne, undefined, true);
1283
1282
  }
1284
1283
  }
1285
- const [LineNumberDataMap, linesNumbers] = await this.applyCriteria(tableName, options, where);
1286
- if (LineNumberDataMap && linesNumbers?.size) {
1284
+ const LineNumberDataObj = await this.applyCriteria(tableName, options, where);
1285
+ if (LineNumberDataObj) {
1287
1286
  if (!this.totalItems.has(`${tableName}-*`))
1288
- this.totalItems.set(`${tableName}-*`, linesNumbers.size);
1287
+ this.totalItems.set(`${tableName}-*`, Object.keys(LineNumberDataObj).length);
1289
1288
  if (onlyLinesNumbers)
1290
1289
  return onlyOne
1291
- ? linesNumbers.values().next().value
1292
- : Array.from(linesNumbers);
1293
- const alreadyExistsColumns = Object.keys(Object.values(LineNumberDataMap)[0]);
1290
+ ? Number(Object.keys(LineNumberDataObj)[0])
1291
+ : Object.keys(LineNumberDataObj).map(Number);
1292
+ const alreadyExistsColumns = Object.keys(Object.values(LineNumberDataObj)[0]);
1294
1293
  const alreadyExistsColumnsIDs = Utils.flattenSchema(schema)
1295
1294
  .filter(({ key }) => alreadyExistsColumns.includes(key))
1296
1295
  .map(({ id }) => id);
1297
- RETURN = Object.values(Utils.deepMerge(LineNumberDataMap, await this.processSchemaData(tableName, Utils.filterSchema(schema, (field) => !alreadyExistsColumnsIDs.includes(field.id) ||
1298
- Utils.isFieldType(field, "table")), Object.keys(LineNumberDataMap).map(Number), options)));
1296
+ RETURN = Object.values(Utils.deepMerge(LineNumberDataObj, await this.processSchemaData(tableName, Utils.filterSchema(schema, (field) => !alreadyExistsColumnsIDs.includes(field.id) ||
1297
+ Utils.isFieldType(field, "table")), Object.keys(LineNumberDataObj).map(Number), options)));
1299
1298
  if (globalConfig[this.databasePath].tables.get(tableName).config.cache)
1300
- await writeFile(cachedFilePath, Array.from(linesNumbers).join(","));
1299
+ await writeFile(cachedFilePath, Object.keys(LineNumberDataObj).join(","));
1301
1300
  }
1302
1301
  }
1303
1302
  if (!RETURN ||
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "inibase",
3
- "version": "1.1.24",
3
+ "version": "1.1.26",
4
4
  "type": "module",
5
5
  "author": {
6
6
  "name": "Karim Amahtil",