@peerbit/indexer-sqlite3 1.0.2 → 1.0.3

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.
@@ -39,6 +39,12 @@ export const convertToSQLType = (value, type) => {
39
39
  };
40
40
  const nullAsUndefined = (value) => (value === null ? undefined : value);
41
41
  export const escapeColumnName = (name) => `"${name}"`;
42
+ export class MissingFieldError extends Error {
43
+ constructor(message) {
44
+ super(message);
45
+ this.name = "MissingFieldError";
46
+ }
47
+ }
42
48
  export const convertFromSQLType = (value, type) => {
43
49
  if (type === "bool") {
44
50
  if (value === 0 ||
@@ -562,7 +568,18 @@ export const insert = async (insertFn, obj, tables, table, fields, handleNestedC
562
568
  };
563
569
  export const getTablePrefixedField = (table, key, skipPrefix = false) => `${skipPrefix ? "" : table.name + "#"}${getInlineTableFieldName(table.path.slice(1), key)}`;
564
570
  export const getTableNameFromPrefixedField = (prefixedField) => prefixedField.split("#")[0];
565
- export const getInlineTableFieldName = (path, key) => (path && path.length > 0 ? `${path.join("_")}__${key}` : key);
571
+ export const getInlineTableFieldName = (path, key) => {
572
+ if (key) {
573
+ return path && path.length > 0 ? `${path.join("_")}__${key}` : key;
574
+ }
575
+ else {
576
+ // last element in the path is the key, the rest is the path
577
+ // join key with __ , rest with _
578
+ return path.length > 2
579
+ ? `${path.slice(0, -1).join("_")}__${path[path.length - 1]}`
580
+ : path.join("__");
581
+ }
582
+ };
566
583
  const matchFieldInShape = (shape, path, field) => {
567
584
  if (!shape) {
568
585
  return true;
@@ -586,7 +603,43 @@ const matchFieldInShape = (shape, path, field) => {
586
603
  throw new Error("Unexpected");
587
604
  };
588
605
  export const selectChildren = (childrenTable) => "select * from " + childrenTable.name + " where " + PARENT_TABLE_ID + " = ?";
589
- export const selectAllFields = (table, shape) => {
606
+ export const generateSelectQuery = (table, selects) => {
607
+ return `SELECT ${selects.map((x) => `${x.from} as ${x.as}`).join(", ")} FROM ${table.name}`;
608
+ };
609
+ export const selectAllFieldsFromTables = (tables, shape) => {
610
+ const selectsPerTable = [];
611
+ for (const table of tables) {
612
+ const { selects, join: joinFromSelect } = selectAllFieldsFromTable(table, shape);
613
+ selectsPerTable.push({ selects, joins: joinFromSelect });
614
+ }
615
+ // pad with empty selects to make sure all selects have the same length
616
+ /* const maxSelects = Math.max(...selectsPerTable.map(x => x.selects.length)); */
617
+ let newSelects = [];
618
+ for (const [i, selects] of selectsPerTable.entries()) {
619
+ const newSelect = [];
620
+ for (const [j, selectsOther] of selectsPerTable.entries()) {
621
+ if (i !== j) {
622
+ for (const select of selectsOther.selects) {
623
+ newSelect.push({ from: "NULL", as: select.as });
624
+ }
625
+ }
626
+ else {
627
+ selects.selects.forEach((select) => newSelect.push(select));
628
+ }
629
+ }
630
+ newSelects.push(newSelect);
631
+ /* let pad = 0;
632
+ while (select.selects.length < maxSelects) {
633
+ select.selects.push({ from: "NULL", as: `'pad#${++pad}'` });
634
+ } */
635
+ }
636
+ // also return table name
637
+ for (const [i, selects] of selectsPerTable.entries()) {
638
+ selects.selects = newSelects[i];
639
+ }
640
+ return selectsPerTable;
641
+ };
642
+ export const selectAllFieldsFromTable = (table, shape) => {
590
643
  let stack = [{ table, shape }];
591
644
  let join = new Map();
592
645
  const fieldResolvers = [];
@@ -596,8 +649,10 @@ export const selectAllFields = (table, shape) => {
596
649
  if (field.isPrimary ||
597
650
  !tableAndShape.shape ||
598
651
  matchFieldInShape(tableAndShape.shape, [], field)) {
599
- const value = `${tableAndShape.table.name}.${escapeColumnName(field.name)} as '${getTablePrefixedField(tableAndShape.table, field.name)}'`;
600
- fieldResolvers.push(value);
652
+ fieldResolvers.push({
653
+ from: `${tableAndShape.table.name}.${escapeColumnName(field.name)}`,
654
+ as: `'${getTablePrefixedField(tableAndShape.table, field.name)}'`,
655
+ });
601
656
  }
602
657
  }
603
658
  }
@@ -626,7 +681,7 @@ export const selectAllFields = (table, shape) => {
626
681
  throw new Error("No fields to resolve");
627
682
  }
628
683
  return {
629
- query: `SELECT ${fieldResolvers.join(", ")} FROM ${table.name}`,
684
+ selects: fieldResolvers, // `SELECT ${fieldResolvers.join(", ")} FROM ${table.name}`,
630
685
  join,
631
686
  };
632
687
  };
@@ -763,21 +818,43 @@ export const convertDeleteRequestToQuery = (request, tables, table) => {
763
818
  return `DELETE FROM ${table.name} WHERE ${table.primary} IN (SELECT ${table.primary} from ${table.name} ${convertRequestToQuery(request, tables, table).query}) returning ${table.primary}`;
764
819
  };
765
820
  export const convertSumRequestToQuery = (request, tables, table) => {
766
- return `SELECT SUM(${table.name}.${request.key.join(".")}) as sum FROM ${table.name} ${convertRequestToQuery(request, tables, table).query}`;
821
+ return `SELECT SUM(${table.name}.${getInlineTableFieldName(request.key)}) as sum FROM ${table.name} ${convertRequestToQuery(request, tables, table).query}`;
767
822
  };
768
823
  export const convertCountRequestToQuery = (request, tables, table) => {
769
824
  return `SELECT count(*) as count FROM ${table.name} ${convertRequestToQuery(request, tables, table).query}`;
770
825
  };
771
826
  export const convertSearchRequestToQuery = (request, tables, rootTables, shape) => {
772
827
  let unionBuilder = "";
773
- let orderByClause = undefined;
774
- for (const table of rootTables) {
775
- const { query: selectQuery, join: joinFromSelect } = selectAllFields(table, shape);
776
- const { orderBy, query } = convertRequestToQuery(request, tables, table, joinFromSelect);
777
- unionBuilder += `${unionBuilder.length > 0 ? " UNION ALL " : ""} ${selectQuery} ${query}`;
778
- orderByClause = orderBy?.length > 0 ? orderBy : orderByClause;
779
- }
780
- return `${unionBuilder} ${orderByClause ? orderByClause : ""} limit ? offset ?`;
828
+ let orderByClause = "";
829
+ let matchedOnce = false;
830
+ let lastError = undefined;
831
+ const selectsPerTable = selectAllFieldsFromTables(rootTables, shape);
832
+ for (const [i, table] of rootTables.entries()) {
833
+ const { selects, joins: joinFromSelect } = selectsPerTable[i];
834
+ const selectQuery = generateSelectQuery(table, selects);
835
+ try {
836
+ const { orderBy, query } = convertRequestToQuery(request, tables, table, joinFromSelect);
837
+ unionBuilder += `${unionBuilder.length > 0 ? " UNION ALL " : ""} ${selectQuery} ${query}`;
838
+ orderByClause =
839
+ orderBy?.length > 0
840
+ ? orderByClause.length > 0
841
+ ? orderByClause + ", " + orderBy
842
+ : orderBy
843
+ : orderByClause;
844
+ matchedOnce = true;
845
+ }
846
+ catch (error) {
847
+ if (error instanceof MissingFieldError) {
848
+ lastError = error;
849
+ continue;
850
+ }
851
+ throw error;
852
+ }
853
+ }
854
+ if (!matchedOnce) {
855
+ throw lastError;
856
+ }
857
+ return `${unionBuilder} ${orderByClause ? "ORDER BY " + orderByClause : ""} limit ? offset ?`;
781
858
  };
782
859
  const convertRequestToQuery = (request, tables, table, extraJoin, path = []) => {
783
860
  let whereBuilder = "";
@@ -794,9 +871,7 @@ const convertRequestToQuery = (request, tables, table, extraJoin, path = []) =>
794
871
  }
795
872
  if (request instanceof types.SearchRequest) {
796
873
  if (request.sort.length > 0) {
797
- if (request.sort.length > 0) {
798
- orderByBuilder = "ORDER BY ";
799
- }
874
+ orderByBuilder = "";
800
875
  let once = false;
801
876
  for (const sort of request.sort) {
802
877
  const { foreignTables, queryKey } = resolveTableToQuery(table, tables, joinBuilder, [...path, ...sort.key], undefined, true);
@@ -917,7 +992,7 @@ const resolveTableToQuery = (table, tables, join, path, alias, searchSelf) => {
917
992
  // multiple keys in the path can correspond to a field in a inline table
918
993
  // this means we need to also check if the key is a field in the current table
919
994
  if (searchSelf) {
920
- const inlineName = getInlineTableFieldName(path.slice(0, -1), path[path.length - 1]);
995
+ const inlineName = getInlineTableFieldName(path);
921
996
  let field = table.fields.find((x) => x.name === inlineName);
922
997
  if (field) {
923
998
  return {
@@ -937,7 +1012,7 @@ const resolveTableToQuery = (table, tables, join, path, alias, searchSelf) => {
937
1012
  const field = schema.fields.find((x) => x.key === key);
938
1013
  if (!field && currentTable.children.length > 0) {
939
1014
  // second arg is needed because of polymorphic fields we might end up here intentially to check what tables to query
940
- throw new Error(`Property with key "${key}" is not found in the schema ${JSON.stringify(schema.fields.map((x) => x.key))}`);
1015
+ throw new MissingFieldError(`Property with key "${key}" is not found in the schema ${JSON.stringify(schema.fields.map((x) => x.key))}`);
941
1016
  }
942
1017
  for (const child of currentTable.children) {
943
1018
  const tableNameAs = createTableReferenceName(child, alias, field.type, join.size);
@@ -976,6 +1051,9 @@ const resolveTableToQuery = (table, tables, join, path, alias, searchSelf) => {
976
1051
  throw new Error("Unexpected");
977
1052
  }
978
1053
  let foreignTables = currentTables.filter((x) => x.table.fields.find((x) => x.key === path[path.length - 1]));
1054
+ if (foreignTables.length === 0) {
1055
+ throw new MissingFieldError("Failed to find field to join");
1056
+ }
979
1057
  let tableToQuery = foreignTables[foreignTables.length - 1].table;
980
1058
  let queryKeyPath = [path[path.length - 1]];
981
1059
  while (tableToQuery?.inline) {
@@ -983,13 +1061,13 @@ const resolveTableToQuery = (table, tables, join, path, alias, searchSelf) => {
983
1061
  tableToQuery = tableToQuery.parent;
984
1062
  }
985
1063
  let queryKey = queryKeyPath.length > 0
986
- ? getInlineTableFieldName(queryKeyPath.slice(0, -1), queryKeyPath[queryKeyPath.length - 1])
1064
+ ? getInlineTableFieldName(queryKeyPath)
987
1065
  : FOREIGN_VALUE_PROPERTY;
988
1066
  return { queryKey, foreignTables };
989
1067
  };
990
1068
  const convertStateFieldQuery = (query, tables, table, join, path, tableAlias = undefined) => {
991
1069
  // if field id represented as foreign table, do join and compare
992
- const inlinedName = getInlineTableFieldName(query.key.slice(0, query.key.length - 1), query.key[query.key.length - 1]);
1070
+ const inlinedName = getInlineTableFieldName(query.key);
993
1071
  const tableField = table.fields.find((x) => x.name === inlinedName); /* stringArraysEquals(query.key, [...table.parentPath, x.name]) )*/
994
1072
  const isForeign = !tableField; // table.fields.find(x => x.name === query.key[query.key.length - 1])
995
1073
  if (isForeign) {
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/schema.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peerbit/indexer-sqlite3",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "SQLite index for document store",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -75,6 +75,6 @@
75
75
  },
76
76
  "devDependencies": {
77
77
  "@types/better-sqlite3": "^7.6.11",
78
- "@peerbit/indexer-tests": "^1.0.0"
78
+ "@peerbit/indexer-tests": "^1.0.1"
79
79
  }
80
80
  }
package/src/engine.ts CHANGED
@@ -12,6 +12,7 @@ import type {
12
12
  import * as types from "@peerbit/indexer-interface";
13
13
  import { v4 as uuid } from "uuid";
14
14
  import {
15
+ MissingFieldError,
15
16
  type Table,
16
17
  buildJoin,
17
18
  convertCountRequestToQuery,
@@ -20,13 +21,14 @@ import {
20
21
  /* getTableName, */
21
22
  convertSumRequestToQuery,
22
23
  escapeColumnName,
24
+ generateSelectQuery,
23
25
  getInlineTableFieldName,
24
26
  getSQLTable,
25
27
  getTablePrefixedField,
26
28
  insert,
27
29
  resolveInstanceFromValue,
28
30
  resolveTable,
29
- selectAllFields,
31
+ selectAllFieldsFromTable,
30
32
  selectChildren,
31
33
  } from "./schema.js";
32
34
  import type { Database, Statement } from "./types.js";
@@ -124,10 +126,7 @@ export class SQLLiteIndex<T extends Record<string, any>>
124
126
  throw new Error("Missing schema");
125
127
  }
126
128
 
127
- this.primaryKeyString = getInlineTableFieldName(
128
- this.primaryKeyArr.slice(0, this.primaryKeyArr.length - 1),
129
- this.primaryKeyArr[this.primaryKeyArr.length - 1],
130
- );
129
+ this.primaryKeyString = getInlineTableFieldName(this.primaryKeyArr);
131
130
 
132
131
  return this;
133
132
  }
@@ -152,10 +151,7 @@ export class SQLLiteIndex<T extends Record<string, any>>
152
151
  const tables = getSQLTable(
153
152
  this.properties.schema!,
154
153
  this.scopeString ? [this.scopeString] : [],
155
- getInlineTableFieldName(
156
- this.primaryKeyArr.slice(0, -1),
157
- this.primaryKeyArr[this.primaryKeyArr.length - 1],
158
- ), // TODO fix this, should be array
154
+ getInlineTableFieldName(this.primaryKeyArr), // TODO fix this, should be array
159
155
  false,
160
156
  undefined,
161
157
  false,
@@ -164,10 +160,6 @@ export class SQLLiteIndex<T extends Record<string, any>>
164
160
 
165
161
  this._rootTables = tables.filter((x) => x.parent == null);
166
162
 
167
- if (this._rootTables.length > 1) {
168
- throw new Error("Multiple root tables not supported (yet)");
169
- }
170
-
171
163
  const allTables = tables;
172
164
 
173
165
  for (const table of allTables) {
@@ -284,8 +276,11 @@ export class SQLLiteIndex<T extends Record<string, any>>
284
276
  options?: { shape: Shape },
285
277
  ): Promise<IndexedResult<T> | undefined> {
286
278
  for (const table of this._rootTables) {
287
- const { join: joinMap, query } = selectAllFields(table, options?.shape);
288
- const sql = `${query} ${buildJoin(joinMap, true)} where ${this.primaryKeyString} = ? `;
279
+ const { join: joinMap, selects } = selectAllFieldsFromTable(
280
+ table,
281
+ options?.shape,
282
+ );
283
+ const sql = `${generateSelectQuery(table, selects)} ${buildJoin(joinMap, true)} where ${this.primaryKeyString} = ? `;
289
284
  const stmt = await this.properties.db.prepare(sql);
290
285
  const rows = await stmt.get([id.key]);
291
286
  await stmt.finalize?.();
@@ -390,9 +385,10 @@ export class SQLLiteIndex<T extends Record<string, any>>
390
385
  let results: IndexedResult<T>[] = await Promise.all(
391
386
  allResults.map(async (row: any) => {
392
387
  let selectedTable = this._rootTables.find(
393
- (table) =>
388
+ (table /* row["table_name"] === table.name, */) =>
394
389
  row[getTablePrefixedField(table, this.primaryKeyString)] != null,
395
390
  )!;
391
+
396
392
  const value = await resolveInstanceFromValue<T>(
397
393
  row,
398
394
  this.tables,
@@ -428,6 +424,7 @@ export class SQLLiteIndex<T extends Record<string, any>>
428
424
  }
429
425
  return { results, kept: iterator.kept };
430
426
  };
427
+
431
428
  const iterator = {
432
429
  kept: 0,
433
430
  fetch,
@@ -483,46 +480,104 @@ export class SQLLiteIndex<T extends Record<string, any>>
483
480
 
484
481
  async del(query: types.DeleteRequest): Promise<types.IdKey[]> {
485
482
  let ret: types.IdKey[] = [];
483
+ let once = false;
484
+ let lastError: Error | undefined = undefined;
486
485
  for (const table of this._rootTables) {
487
- const stmt = await this.properties.db.prepare(
488
- convertDeleteRequestToQuery(query, this.tables, table),
489
- );
490
- const results: any[] = await stmt.all([]);
491
- await stmt.finalize?.();
492
- // TODO types
493
- for (const result of results) {
494
- ret.push(types.toId(result[table.primary as string]));
486
+ try {
487
+ const stmt = await this.properties.db.prepare(
488
+ convertDeleteRequestToQuery(query, this.tables, table),
489
+ );
490
+ const results: any[] = await stmt.all([]);
491
+ await stmt.finalize?.();
492
+ // TODO types
493
+ for (const result of results) {
494
+ ret.push(types.toId(result[table.primary as string]));
495
+ }
496
+ once = true;
497
+ } catch (error) {
498
+ if (error instanceof MissingFieldError) {
499
+ lastError = error;
500
+ continue;
501
+ }
502
+
503
+ throw error;
495
504
  }
496
505
  }
506
+
507
+ if (!once) {
508
+ throw lastError;
509
+ }
510
+
497
511
  return ret;
498
512
  }
499
513
 
500
514
  async sum(query: types.SumRequest): Promise<number | bigint> {
501
515
  let ret: number | bigint | undefined = undefined;
516
+ let once = false;
517
+ let lastError: Error | undefined = undefined;
518
+
519
+ let inlinedName = getInlineTableFieldName(query.key);
502
520
  for (const table of this._rootTables) {
503
- const stmt = await this.properties.db.prepare(
504
- convertSumRequestToQuery(query, this.tables, table),
505
- );
506
- const result = await stmt.get();
507
- await stmt.finalize?.();
508
- if (ret == null) {
509
- (ret as any) = result.sum as number;
510
- } else {
511
- (ret as any) += result.sum as number;
521
+ try {
522
+ if (table.fields.find((x) => x.name === inlinedName) == null) {
523
+ lastError = new MissingFieldError(
524
+ "Missing field: " + query.key.join("."),
525
+ );
526
+ continue;
527
+ }
528
+
529
+ const stmt = await this.properties.db.prepare(
530
+ convertSumRequestToQuery(query, this.tables, table),
531
+ );
532
+ const result = await stmt.get();
533
+ await stmt.finalize?.();
534
+ if (ret == null) {
535
+ (ret as any) = result.sum as number;
536
+ } else {
537
+ (ret as any) += result.sum as number;
538
+ }
539
+ once = true;
540
+ } catch (error) {
541
+ if (error instanceof MissingFieldError) {
542
+ lastError = error;
543
+ continue;
544
+ }
545
+ throw error;
512
546
  }
513
547
  }
548
+
549
+ if (!once) {
550
+ throw lastError;
551
+ }
552
+
514
553
  return ret != null ? ret : 0;
515
554
  }
516
555
 
517
556
  async count(request: types.CountRequest): Promise<number> {
518
557
  let ret: number = 0;
558
+ let once = false;
559
+ let lastError: Error | undefined = undefined;
519
560
  for (const table of this._rootTables) {
520
- const stmt = await this.properties.db.prepare(
521
- convertCountRequestToQuery(request, this.tables, table),
522
- );
523
- const result = await stmt.get();
524
- await stmt.finalize?.();
525
- ret += Number(result.count);
561
+ try {
562
+ const stmt = await this.properties.db.prepare(
563
+ convertCountRequestToQuery(request, this.tables, table),
564
+ );
565
+ const result = await stmt.get();
566
+ await stmt.finalize?.();
567
+ ret += Number(result.count);
568
+ once = true;
569
+ } catch (error) {
570
+ if (error instanceof MissingFieldError) {
571
+ lastError = error;
572
+ continue;
573
+ }
574
+
575
+ throw error;
576
+ }
577
+ }
578
+
579
+ if (!once) {
580
+ throw lastError;
526
581
  }
527
582
  return ret;
528
583
  }