@peerbit/indexer-sqlite3 3.0.2 → 3.0.4
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/index.min.js +43 -8
- package/dist/index.min.js.map +2 -2
- package/dist/src/engine.d.ts.map +1 -1
- package/dist/src/engine.js +3 -3
- package/dist/src/engine.js.map +1 -1
- package/dist/src/schema.d.ts +2 -0
- package/dist/src/schema.d.ts.map +1 -1
- package/dist/src/schema.js +48 -6
- package/dist/src/schema.js.map +1 -1
- package/package.json +4 -4
- package/src/engine.ts +4 -2
- package/src/schema.ts +59 -6
package/src/engine.ts
CHANGED
|
@@ -12,6 +12,8 @@ import {
|
|
|
12
12
|
MissingFieldError,
|
|
13
13
|
type Table,
|
|
14
14
|
buildJoin,
|
|
15
|
+
coerceLocalQueries,
|
|
16
|
+
coerceLocalSorts,
|
|
15
17
|
convertCountRequestToQuery,
|
|
16
18
|
convertDeleteRequestToQuery,
|
|
17
19
|
convertFromSQLType,
|
|
@@ -582,8 +584,8 @@ export class SQLiteIndex<T extends Record<string, any>>
|
|
|
582
584
|
let sqlFetch: string | undefined = undefined;
|
|
583
585
|
|
|
584
586
|
const normalizedQuery = new PlannableQuery({
|
|
585
|
-
query:
|
|
586
|
-
sort: request?.sort,
|
|
587
|
+
query: coerceLocalQueries(request?.query),
|
|
588
|
+
sort: coerceLocalSorts(request?.sort),
|
|
587
589
|
});
|
|
588
590
|
let planningScope: ReturnType<QueryPlanner["scope"]>;
|
|
589
591
|
|
package/src/schema.ts
CHANGED
|
@@ -58,6 +58,53 @@ export type BindableValue =
|
|
|
58
58
|
let JSON_GROUP_ARRAY = "json_group_array";
|
|
59
59
|
let JSON_OBJECT = "distinct json_object";
|
|
60
60
|
|
|
61
|
+
const coerceLocalQuery = (query: types.Query): types.Query => {
|
|
62
|
+
if (query instanceof types.Query) {
|
|
63
|
+
return query;
|
|
64
|
+
}
|
|
65
|
+
return deserialize(serialize(query), types.Query);
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
export const coerceLocalQueries = (
|
|
69
|
+
query?:
|
|
70
|
+
| types.Query[]
|
|
71
|
+
| types.Query
|
|
72
|
+
| Record<string, string | number | bigint | Uint8Array | boolean | null | undefined>,
|
|
73
|
+
): types.Query[] => {
|
|
74
|
+
if (!query) {
|
|
75
|
+
return [];
|
|
76
|
+
}
|
|
77
|
+
if (Array.isArray(query)) {
|
|
78
|
+
return query.map((entry) => coerceLocalQuery(entry));
|
|
79
|
+
}
|
|
80
|
+
if (query instanceof types.Query) {
|
|
81
|
+
return [query];
|
|
82
|
+
}
|
|
83
|
+
try {
|
|
84
|
+
return [coerceLocalQuery(query as unknown as types.Query)];
|
|
85
|
+
} catch {
|
|
86
|
+
return types.toQuery(query).map((entry) => coerceLocalQuery(entry));
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
export const coerceLocalSorts = (
|
|
91
|
+
sort?: types.Sort[] | types.Sort,
|
|
92
|
+
): types.Sort[] | types.Sort | undefined => {
|
|
93
|
+
if (!sort) {
|
|
94
|
+
return undefined;
|
|
95
|
+
}
|
|
96
|
+
if (Array.isArray(sort)) {
|
|
97
|
+
return sort.map((entry) =>
|
|
98
|
+
entry instanceof types.Sort
|
|
99
|
+
? entry
|
|
100
|
+
: deserialize(serialize(entry), types.Sort),
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
return sort instanceof types.Sort
|
|
104
|
+
? sort
|
|
105
|
+
: deserialize(serialize(sort), types.Sort);
|
|
106
|
+
};
|
|
107
|
+
|
|
61
108
|
export const u64ToI64 = (u64: bigint | number) => {
|
|
62
109
|
return (typeof u64 === "number" ? BigInt(u64) : u64) - 9223372036854775808n;
|
|
63
110
|
};
|
|
@@ -1521,7 +1568,7 @@ export const convertDeleteRequestToQuery = (
|
|
|
1521
1568
|
): { sql: string; bindable: any[] } => {
|
|
1522
1569
|
const { query, bindable } = convertRequestToQuery(
|
|
1523
1570
|
"delete",
|
|
1524
|
-
{ query:
|
|
1571
|
+
{ query: coerceLocalQueries(request.query) },
|
|
1525
1572
|
tables,
|
|
1526
1573
|
table,
|
|
1527
1574
|
);
|
|
@@ -1538,7 +1585,7 @@ export const convertSumRequestToQuery = (
|
|
|
1538
1585
|
): { sql: string; bindable: any[] } => {
|
|
1539
1586
|
const { query, bindable } = convertRequestToQuery(
|
|
1540
1587
|
"sum",
|
|
1541
|
-
{ query:
|
|
1588
|
+
{ query: coerceLocalQueries(request.query), key: request.key },
|
|
1542
1589
|
tables,
|
|
1543
1590
|
table,
|
|
1544
1591
|
);
|
|
@@ -1563,7 +1610,7 @@ export const convertCountRequestToQuery = (
|
|
|
1563
1610
|
): { sql: string; bindable: any[] } => {
|
|
1564
1611
|
const { query, bindable } = convertRequestToQuery(
|
|
1565
1612
|
"count",
|
|
1566
|
-
{ query: request?.query
|
|
1613
|
+
{ query: coerceLocalQueries(request?.query) },
|
|
1567
1614
|
tables,
|
|
1568
1615
|
table,
|
|
1569
1616
|
);
|
|
@@ -1645,6 +1692,12 @@ export const convertSearchRequestToQuery = (
|
|
|
1645
1692
|
planner?: PlanningSession;
|
|
1646
1693
|
},
|
|
1647
1694
|
): { sql: string; bindable: any[] } => {
|
|
1695
|
+
const normalizedRequest = request
|
|
1696
|
+
? {
|
|
1697
|
+
query: coerceLocalQueries(request.query),
|
|
1698
|
+
sort: coerceLocalSorts(request.sort),
|
|
1699
|
+
}
|
|
1700
|
+
: undefined;
|
|
1648
1701
|
let unionBuilder = "";
|
|
1649
1702
|
let orderByClause: string = "";
|
|
1650
1703
|
|
|
@@ -1659,7 +1712,7 @@ export const convertSearchRequestToQuery = (
|
|
|
1659
1712
|
|
|
1660
1713
|
try {
|
|
1661
1714
|
const { orderByBuilder } = buildOrderBy(
|
|
1662
|
-
|
|
1715
|
+
normalizedRequest?.sort,
|
|
1663
1716
|
tables,
|
|
1664
1717
|
table,
|
|
1665
1718
|
joins,
|
|
@@ -1689,7 +1742,7 @@ export const convertSearchRequestToQuery = (
|
|
|
1689
1742
|
|
|
1690
1743
|
const selectQuery = generateSelectQuery(table, selects);
|
|
1691
1744
|
|
|
1692
|
-
for (const flattenRequest of flattenQuery(
|
|
1745
|
+
for (const flattenRequest of flattenQuery(normalizedRequest)) {
|
|
1693
1746
|
try {
|
|
1694
1747
|
const { query, bindable } = convertRequestToQuery(
|
|
1695
1748
|
"iterate",
|
|
@@ -1799,7 +1852,7 @@ const convertRequestToQuery = <
|
|
|
1799
1852
|
|
|
1800
1853
|
getOrSetRootTable(joinBuilder, table);
|
|
1801
1854
|
|
|
1802
|
-
const coercedQuery =
|
|
1855
|
+
const coercedQuery = coerceLocalQueries(request?.query);
|
|
1803
1856
|
if (coercedQuery.length === 1) {
|
|
1804
1857
|
const { where, bindable } = convertQueryToSQLQuery(
|
|
1805
1858
|
coercedQuery[0],
|