@ceramicnetwork/indexing 1.1.0-rc.0
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/README.md +31 -0
- package/lib/__tests__/chunks.util.d.ts +2 -0
- package/lib/__tests__/chunks.util.d.ts.map +1 -0
- package/lib/__tests__/chunks.util.js +8 -0
- package/lib/__tests__/chunks.util.js.map +1 -0
- package/lib/__tests__/read-csv-fixture.util.d.ts +5 -0
- package/lib/__tests__/read-csv-fixture.util.d.ts.map +1 -0
- package/lib/__tests__/read-csv-fixture.util.js +35 -0
- package/lib/__tests__/read-csv-fixture.util.js.map +1 -0
- package/lib/as-table-name.util.d.ts +3 -0
- package/lib/as-table-name.util.d.ts.map +1 -0
- package/lib/as-table-name.util.js +4 -0
- package/lib/as-table-name.util.js.map +1 -0
- package/lib/build-indexing.d.ts +13 -0
- package/lib/build-indexing.d.ts.map +1 -0
- package/lib/build-indexing.js +55 -0
- package/lib/build-indexing.js.map +1 -0
- package/lib/column-name.util.d.ts +2 -0
- package/lib/column-name.util.d.ts.map +1 -0
- package/lib/column-name.util.js +5 -0
- package/lib/column-name.util.js.map +1 -0
- package/lib/config.d.ts +2 -0
- package/lib/config.d.ts.map +1 -0
- package/lib/config.js +2 -0
- package/lib/config.js.map +1 -0
- package/lib/database-index-api.d.ts +94 -0
- package/lib/database-index-api.d.ts.map +1 -0
- package/lib/database-index-api.js +228 -0
- package/lib/database-index-api.js.map +1 -0
- package/lib/history-sync/interfaces.d.ts +52 -0
- package/lib/history-sync/interfaces.d.ts.map +1 -0
- package/lib/history-sync/interfaces.js +11 -0
- package/lib/history-sync/interfaces.js.map +1 -0
- package/lib/history-sync/sync-api.d.ts +82 -0
- package/lib/history-sync/sync-api.d.ts.map +1 -0
- package/lib/history-sync/sync-api.js +276 -0
- package/lib/history-sync/sync-api.js.map +1 -0
- package/lib/history-sync/utils.d.ts +15 -0
- package/lib/history-sync/utils.d.ts.map +1 -0
- package/lib/history-sync/utils.js +23 -0
- package/lib/history-sync/utils.js.map +1 -0
- package/lib/history-sync/workers/rebuild-anchor.d.ts +15 -0
- package/lib/history-sync/workers/rebuild-anchor.d.ts.map +1 -0
- package/lib/history-sync/workers/rebuild-anchor.js +96 -0
- package/lib/history-sync/workers/rebuild-anchor.js.map +1 -0
- package/lib/history-sync/workers/sync.d.ts +24 -0
- package/lib/history-sync/workers/sync.d.ts.map +1 -0
- package/lib/history-sync/workers/sync.js +77 -0
- package/lib/history-sync/workers/sync.js.map +1 -0
- package/lib/index-query-not-available.error.d.ts +5 -0
- package/lib/index-query-not-available.error.d.ts.map +1 -0
- package/lib/index-query-not-available.error.js +6 -0
- package/lib/index-query-not-available.error.js.map +1 -0
- package/lib/index.d.ts +7 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +6 -0
- package/lib/index.js.map +1 -0
- package/lib/insertion-order.d.ts +15 -0
- package/lib/insertion-order.d.ts.map +1 -0
- package/lib/insertion-order.js +180 -0
- package/lib/insertion-order.js.map +1 -0
- package/lib/local-index-api.d.ts +30 -0
- package/lib/local-index-api.d.ts.map +1 -0
- package/lib/local-index-api.js +118 -0
- package/lib/local-index-api.js.map +1 -0
- package/lib/make-index-api.d.ts +9 -0
- package/lib/make-index-api.d.ts.map +1 -0
- package/lib/make-index-api.js +27 -0
- package/lib/make-index-api.js.map +1 -0
- package/lib/migrations/1-create-model-table.d.ts +34 -0
- package/lib/migrations/1-create-model-table.d.ts.map +1 -0
- package/lib/migrations/1-create-model-table.js +243 -0
- package/lib/migrations/1-create-model-table.js.map +1 -0
- package/lib/migrations/cdb-schema-verification.d.ts +15 -0
- package/lib/migrations/cdb-schema-verification.d.ts.map +1 -0
- package/lib/migrations/cdb-schema-verification.js +272 -0
- package/lib/migrations/cdb-schema-verification.js.map +1 -0
- package/lib/parse-pagination.d.ts +18 -0
- package/lib/parse-pagination.d.ts.map +1 -0
- package/lib/parse-pagination.js +23 -0
- package/lib/parse-pagination.js.map +1 -0
- package/lib/query-filter-converter.d.ts +12 -0
- package/lib/query-filter-converter.d.ts.map +1 -0
- package/lib/query-filter-converter.js +231 -0
- package/lib/query-filter-converter.js.map +1 -0
- package/lib/query-filter-parser.d.ts +63 -0
- package/lib/query-filter-parser.d.ts.map +1 -0
- package/lib/query-filter-parser.js +178 -0
- package/lib/query-filter-parser.js.map +1 -0
- package/lib/tables-manager.d.ts +44 -0
- package/lib/tables-manager.d.ts.map +1 -0
- package/lib/tables-manager.js +218 -0
- package/lib/tables-manager.js.map +1 -0
- package/lib/unsupported-ordering-error.d.ts +4 -0
- package/lib/unsupported-ordering-error.d.ts.map +1 -0
- package/lib/unsupported-ordering-error.js +6 -0
- package/lib/unsupported-ordering-error.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import { getValueType, } from './query-filter-parser.js';
|
|
2
|
+
export const DATA_FIELD = 'stream_content';
|
|
3
|
+
export function contentKey(field) {
|
|
4
|
+
return `${DATA_FIELD}->>'${field}'`;
|
|
5
|
+
}
|
|
6
|
+
var Combinator;
|
|
7
|
+
(function (Combinator) {
|
|
8
|
+
Combinator[Combinator["And"] = 0] = "And";
|
|
9
|
+
Combinator[Combinator["Or"] = 1] = "Or";
|
|
10
|
+
})(Combinator || (Combinator = {}));
|
|
11
|
+
function nextState(state, next) {
|
|
12
|
+
return {
|
|
13
|
+
filter: next,
|
|
14
|
+
negated: state.negated,
|
|
15
|
+
combinator: state.combinator,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function handleQuery(query, func, first, negated, combinator) {
|
|
19
|
+
const opFunc = (bldr) => {
|
|
20
|
+
if (first) {
|
|
21
|
+
return bldr.where(func);
|
|
22
|
+
}
|
|
23
|
+
else if (combinator && combinator == Combinator.Or) {
|
|
24
|
+
return bldr.orWhere(func);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
return bldr.andWhere(func);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
if (negated) {
|
|
31
|
+
return query.whereNot(opFunc);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
return query.where(opFunc);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
function typeAsCast(tpe) {
|
|
38
|
+
switch (tpe) {
|
|
39
|
+
case 'boolean':
|
|
40
|
+
return 'boolean';
|
|
41
|
+
default:
|
|
42
|
+
return nonBooleanTypeAsCast(tpe);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function nonBooleanTypeAsCast(tpe) {
|
|
46
|
+
switch (tpe) {
|
|
47
|
+
case 'number':
|
|
48
|
+
return 'numeric';
|
|
49
|
+
case 'string':
|
|
50
|
+
return 'varchar';
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function handleIn(query, key, tpe, value, first, negated, combinator) {
|
|
54
|
+
const cast = nonBooleanTypeAsCast(tpe);
|
|
55
|
+
let arrValue;
|
|
56
|
+
if (cast == 'varchar') {
|
|
57
|
+
arrValue = value.map((v) => `'${v}'`).join(',');
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
arrValue = value.map((v) => `${v}`).join(',');
|
|
61
|
+
}
|
|
62
|
+
const inner = (bldr) => {
|
|
63
|
+
let op = ' in ';
|
|
64
|
+
if (negated) {
|
|
65
|
+
op = ` not${op}`;
|
|
66
|
+
}
|
|
67
|
+
const raw = bldr.client.raw(`cast(${key} as ${cast})${op}(${arrValue})`);
|
|
68
|
+
bldr.whereRaw(raw);
|
|
69
|
+
};
|
|
70
|
+
if (first) {
|
|
71
|
+
return query.where(inner);
|
|
72
|
+
}
|
|
73
|
+
else if (combinator && combinator == Combinator.Or) {
|
|
74
|
+
return query.orWhere(inner);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
return query.andWhere(inner);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
function handleWhereQuery(state) {
|
|
81
|
+
let first = true;
|
|
82
|
+
let where = (bldr) => bldr;
|
|
83
|
+
const select = [];
|
|
84
|
+
let combinator = state.combinator;
|
|
85
|
+
let negated = state.negated;
|
|
86
|
+
if (Object.keys(state.filter).length > 1) {
|
|
87
|
+
combinator = Combinator.And;
|
|
88
|
+
negated = false;
|
|
89
|
+
}
|
|
90
|
+
for (const filterKey in state.filter) {
|
|
91
|
+
select.push(filterKey);
|
|
92
|
+
const value = state.filter[filterKey];
|
|
93
|
+
const key = contentKey(filterKey);
|
|
94
|
+
switch (value.op) {
|
|
95
|
+
case 'null': {
|
|
96
|
+
const isFirst = first;
|
|
97
|
+
const old = where;
|
|
98
|
+
where = (bldr) => {
|
|
99
|
+
const b = old(bldr);
|
|
100
|
+
let nullQuery = 'is not null';
|
|
101
|
+
if (value.value) {
|
|
102
|
+
nullQuery = 'is null';
|
|
103
|
+
}
|
|
104
|
+
return handleQuery(b, (b) => {
|
|
105
|
+
const raw = b.client.raw(`${key} ${nullQuery}`);
|
|
106
|
+
return b.whereRaw(raw);
|
|
107
|
+
}, isFirst, negated, combinator);
|
|
108
|
+
};
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
case 'in':
|
|
112
|
+
case 'nin': {
|
|
113
|
+
if (value.value.length == 0) {
|
|
114
|
+
throw new Error('Expected an array with at least one item');
|
|
115
|
+
}
|
|
116
|
+
const isFirst = first;
|
|
117
|
+
const old = where;
|
|
118
|
+
let inNegated = negated;
|
|
119
|
+
if (value.op == 'nin') {
|
|
120
|
+
inNegated = !inNegated;
|
|
121
|
+
}
|
|
122
|
+
where = (bldr) => {
|
|
123
|
+
const b = old(bldr);
|
|
124
|
+
return handleIn(b, key, value.type, value.value, isFirst, negated, combinator);
|
|
125
|
+
};
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
default: {
|
|
129
|
+
const isFirst = first;
|
|
130
|
+
const cast = typeAsCast(getValueType(value.value));
|
|
131
|
+
const old = where;
|
|
132
|
+
where = (bldr) => {
|
|
133
|
+
const b = old(bldr);
|
|
134
|
+
let queryValue = value.value;
|
|
135
|
+
if (cast == 'varchar') {
|
|
136
|
+
queryValue = `'${queryValue}'`;
|
|
137
|
+
}
|
|
138
|
+
return handleQuery(b, (b) => {
|
|
139
|
+
const raw = b.client.raw(`cast(${key} as ${cast})${value.op}${queryValue}`);
|
|
140
|
+
return b.whereRaw(raw);
|
|
141
|
+
}, isFirst, negated, combinator);
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
first = false;
|
|
146
|
+
}
|
|
147
|
+
if (Object.keys(state.filter).length > 1 && state.negated) {
|
|
148
|
+
const old = where;
|
|
149
|
+
where = (bldr) => {
|
|
150
|
+
return bldr.whereNot(old);
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
return {
|
|
154
|
+
select,
|
|
155
|
+
where,
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
function handleCombinator(state, negated) {
|
|
159
|
+
let where = (bldr) => bldr;
|
|
160
|
+
let select = [];
|
|
161
|
+
let first = true;
|
|
162
|
+
const filters = state.filter.value;
|
|
163
|
+
for (const filter of filters) {
|
|
164
|
+
const next = nextState(state, filter);
|
|
165
|
+
const res = convert(next);
|
|
166
|
+
select = select.concat(res.select);
|
|
167
|
+
const old = where;
|
|
168
|
+
where = (bldr) => {
|
|
169
|
+
const b = old(bldr);
|
|
170
|
+
if (first) {
|
|
171
|
+
return b.where(res.where);
|
|
172
|
+
}
|
|
173
|
+
else if (state.combinator && state.combinator == Combinator.Or) {
|
|
174
|
+
return b.orWhere(res.where);
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
return b.andWhere(res.where);
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
first = false;
|
|
181
|
+
}
|
|
182
|
+
if (negated) {
|
|
183
|
+
const old = where;
|
|
184
|
+
where = (bldr) => {
|
|
185
|
+
return bldr.whereNot(old);
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
return {
|
|
189
|
+
where,
|
|
190
|
+
select,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
function convert(state) {
|
|
194
|
+
switch (state.filter.type) {
|
|
195
|
+
case 'where': {
|
|
196
|
+
const filter = state.filter.value;
|
|
197
|
+
return handleWhereQuery(nextState(state, filter));
|
|
198
|
+
}
|
|
199
|
+
case 'and': {
|
|
200
|
+
const newState = nextState(state, state.filter);
|
|
201
|
+
newState.combinator = Combinator.And;
|
|
202
|
+
newState.negated = false;
|
|
203
|
+
return handleCombinator(newState, state.negated);
|
|
204
|
+
}
|
|
205
|
+
case 'or': {
|
|
206
|
+
const newState = nextState(state, state.filter);
|
|
207
|
+
newState.combinator = Combinator.Or;
|
|
208
|
+
newState.negated = false;
|
|
209
|
+
return handleCombinator(newState, state.negated);
|
|
210
|
+
}
|
|
211
|
+
case 'not': {
|
|
212
|
+
const next = nextState(state, state.filter.value);
|
|
213
|
+
next.negated = !state.negated;
|
|
214
|
+
return convert(next);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
export function convertQueryFilter(filter) {
|
|
219
|
+
if (filter) {
|
|
220
|
+
const state = {
|
|
221
|
+
filter: filter,
|
|
222
|
+
negated: false,
|
|
223
|
+
};
|
|
224
|
+
return convert(state);
|
|
225
|
+
}
|
|
226
|
+
return {
|
|
227
|
+
select: [],
|
|
228
|
+
where: (bldr) => bldr,
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=query-filter-converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-filter-converter.js","sourceRoot":"","sources":["../src/query-filter-converter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { QueryFilters as ApiQueryFilters, ObjectFilter as ApiObjectFilter, NonEmptyArray } from '@ceramicnetwork/common';
|
|
2
|
+
export declare type NonBooleanValueFilterType = 'number' | 'string';
|
|
3
|
+
export declare type ValueFilterType = 'boolean' | 'number' | 'string';
|
|
4
|
+
export declare type ValueFilter<T extends boolean | number | string = boolean | number | string> = {
|
|
5
|
+
type: ValueFilterType;
|
|
6
|
+
op: 'null';
|
|
7
|
+
value: boolean;
|
|
8
|
+
} | {
|
|
9
|
+
type: ValueFilterType;
|
|
10
|
+
op: '=';
|
|
11
|
+
value: T;
|
|
12
|
+
} | {
|
|
13
|
+
type: ValueFilterType;
|
|
14
|
+
op: '!=';
|
|
15
|
+
value: T;
|
|
16
|
+
};
|
|
17
|
+
export declare type NonBooleanValueFilter<T extends number | string = number | string> = {
|
|
18
|
+
type: NonBooleanValueFilterType;
|
|
19
|
+
op: 'in';
|
|
20
|
+
value: Array<T>;
|
|
21
|
+
} | {
|
|
22
|
+
type: NonBooleanValueFilterType;
|
|
23
|
+
op: 'nin';
|
|
24
|
+
value: Array<T>;
|
|
25
|
+
} | {
|
|
26
|
+
type: NonBooleanValueFilterType;
|
|
27
|
+
op: '>';
|
|
28
|
+
value: T;
|
|
29
|
+
} | {
|
|
30
|
+
type: NonBooleanValueFilterType;
|
|
31
|
+
op: '>=';
|
|
32
|
+
value: T;
|
|
33
|
+
} | {
|
|
34
|
+
type: NonBooleanValueFilterType;
|
|
35
|
+
op: '<';
|
|
36
|
+
value: T;
|
|
37
|
+
} | {
|
|
38
|
+
type: NonBooleanValueFilterType;
|
|
39
|
+
op: '<=';
|
|
40
|
+
value: T;
|
|
41
|
+
};
|
|
42
|
+
export declare type AllValueFilter = ValueFilter | NonBooleanValueFilter;
|
|
43
|
+
declare type ParsedObjectFilter = Record<string, NonEmptyArray<AllValueFilter>>;
|
|
44
|
+
export declare type ObjectFilter = Record<string, AllValueFilter>;
|
|
45
|
+
export declare type QueryFilters = {
|
|
46
|
+
type: 'where';
|
|
47
|
+
value: ObjectFilter;
|
|
48
|
+
} | {
|
|
49
|
+
type: 'and';
|
|
50
|
+
value: Array<QueryFilters>;
|
|
51
|
+
} | {
|
|
52
|
+
type: 'or';
|
|
53
|
+
value: Array<QueryFilters>;
|
|
54
|
+
} | {
|
|
55
|
+
type: 'not';
|
|
56
|
+
value: QueryFilters;
|
|
57
|
+
};
|
|
58
|
+
export declare function getNonBooleanValueType<T extends number | string>(value: T): NonBooleanValueFilterType;
|
|
59
|
+
export declare function getValueType<T extends boolean | number | string>(value: T): ValueFilterType;
|
|
60
|
+
export declare function parseObjectFilter(filter: ApiObjectFilter): ParsedObjectFilter;
|
|
61
|
+
export declare function parseQueryFilters(filter: ApiQueryFilters): QueryFilters;
|
|
62
|
+
export {};
|
|
63
|
+
//# sourceMappingURL=query-filter-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-filter-parser.d.ts","sourceRoot":"","sources":["../src/query-filter-parser.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,IAAI,eAAe,EAC/B,YAAY,IAAI,eAAe,EAC/B,aAAa,EACd,MAAM,wBAAwB,CAAA;AAE/B,oBAAY,yBAAyB,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAC3D,oBAAY,eAAe,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAC7D,oBAAY,WAAW,CAAC,CAAC,SAAS,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,IACnF;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,EAAE,EAAE,GAAG,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAA;AAEjD,oBAAY,qBAAqB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,IACzE;IAAE,IAAI,EAAE,yBAAyB,CAAC;IAAC,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,yBAAyB,CAAC;IAAC,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,yBAAyB,CAAC;IAAC,EAAE,EAAE,GAAG,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,yBAAyB,CAAC;IAAC,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,yBAAyB,CAAC;IAAC,EAAE,EAAE,GAAG,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GACtD;IAAE,IAAI,EAAE,yBAAyB,CAAC;IAAC,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAA;AAE3D,oBAAY,cAAc,GAAG,WAAW,GAAG,qBAAqB,CAAA;AAEhE,aAAK,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC,CAAA;AAKvE,oBAAY,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;AAKzD,oBAAY,YAAY,GACpB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,CAAA;AAExC,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAC9D,KAAK,EAAE,CAAC,GACP,yBAAyB,CAM3B;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,OAAO,GAAG,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,eAAe,CAM3F;AAoBD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,kBAAkB,CAuF7E;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,YAAY,CA0DvE"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
export function getNonBooleanValueType(value) {
|
|
2
|
+
if (typeof value == 'number') {
|
|
3
|
+
return 'number';
|
|
4
|
+
}
|
|
5
|
+
else {
|
|
6
|
+
return 'string';
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export function getValueType(value) {
|
|
10
|
+
if (typeof value == 'boolean') {
|
|
11
|
+
return 'boolean';
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
return getNonBooleanValueType(value);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
function validateCombinedOps(ops) {
|
|
18
|
+
if (ops.length <= 1) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (ops.length > 2) {
|
|
22
|
+
throw new Error('Cannot combine more than 2 value filters');
|
|
23
|
+
}
|
|
24
|
+
ops.sort();
|
|
25
|
+
if (!ops[0].startsWith('greaterThan') || !ops[1].startsWith('lessThan')) {
|
|
26
|
+
throw new Error('Can only combine value filters representing valid range boundaries ex. greaterThan[orEqualto] and lessThan[orEqualTo]');
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export function parseObjectFilter(filter) {
|
|
30
|
+
const entries = {};
|
|
31
|
+
const keys = Object.keys(filter);
|
|
32
|
+
for (const key of keys) {
|
|
33
|
+
const childFilter = filter[key];
|
|
34
|
+
const childKeys = Object.keys(childFilter);
|
|
35
|
+
if (childKeys.length > 1) {
|
|
36
|
+
validateCombinedOps(childKeys);
|
|
37
|
+
}
|
|
38
|
+
entries[key] = [];
|
|
39
|
+
for (const childKey of childKeys) {
|
|
40
|
+
if (childKey === 'isNull' && 'isNull' in childFilter) {
|
|
41
|
+
const value = childFilter.isNull;
|
|
42
|
+
entries[key].push({
|
|
43
|
+
type: getValueType(value),
|
|
44
|
+
op: 'null',
|
|
45
|
+
value: value,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
else if (childKey === 'equalTo' && 'equalTo' in childFilter) {
|
|
49
|
+
const value = childFilter.equalTo;
|
|
50
|
+
entries[key].push({
|
|
51
|
+
type: getValueType(value),
|
|
52
|
+
op: '=',
|
|
53
|
+
value: value,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
else if (childKey === 'notEqualTo' && 'notEqualTo' in childFilter) {
|
|
57
|
+
const value = childFilter.notEqualTo;
|
|
58
|
+
entries[key].push({
|
|
59
|
+
type: getValueType(value),
|
|
60
|
+
op: '!=',
|
|
61
|
+
value: value,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
else if (childKey === 'lessThan' && 'lessThan' in childFilter) {
|
|
65
|
+
const value = childFilter.lessThan;
|
|
66
|
+
entries[key].push({
|
|
67
|
+
type: getNonBooleanValueType(value),
|
|
68
|
+
op: '<',
|
|
69
|
+
value: value,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
else if (childKey === 'lessThanOrEqualTo' && 'lessThanOrEqualTo' in childFilter) {
|
|
73
|
+
const value = childFilter.lessThanOrEqualTo;
|
|
74
|
+
entries[key].push({
|
|
75
|
+
type: getNonBooleanValueType(value),
|
|
76
|
+
op: '<=',
|
|
77
|
+
value: value,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
else if (childKey === 'greaterThan' && 'greaterThan' in childFilter) {
|
|
81
|
+
const value = childFilter.greaterThan;
|
|
82
|
+
entries[key].push({
|
|
83
|
+
type: getNonBooleanValueType(value),
|
|
84
|
+
op: '>',
|
|
85
|
+
value: value,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
else if (childKey === 'greaterThanOrEqualTo' && 'greaterThanOrEqualTo' in childFilter) {
|
|
89
|
+
const value = childFilter.greaterThanOrEqualTo;
|
|
90
|
+
entries[key].push({
|
|
91
|
+
type: getNonBooleanValueType(value),
|
|
92
|
+
op: '>=',
|
|
93
|
+
value: value,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
else if (childKey === 'in' && 'in' in childFilter) {
|
|
97
|
+
const value = childFilter.in;
|
|
98
|
+
if (value.length == 0) {
|
|
99
|
+
throw new Error('In query specified without array values');
|
|
100
|
+
}
|
|
101
|
+
entries[key].push({
|
|
102
|
+
type: getNonBooleanValueType(value[0]),
|
|
103
|
+
op: 'in',
|
|
104
|
+
value: value,
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
else if (childKey === 'notIn' && 'notIn' in childFilter) {
|
|
108
|
+
const value = childFilter.notIn;
|
|
109
|
+
if (value.length == 0) {
|
|
110
|
+
throw new Error('Not In query specified without array values');
|
|
111
|
+
}
|
|
112
|
+
entries[key].push({
|
|
113
|
+
type: getNonBooleanValueType(value[0]),
|
|
114
|
+
op: 'nin',
|
|
115
|
+
value: value,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
throw new Error(`Invalid op ${childKey}`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return entries;
|
|
124
|
+
}
|
|
125
|
+
export function parseQueryFilters(filter) {
|
|
126
|
+
const keys = Object.keys(filter);
|
|
127
|
+
if (keys.length > 1) {
|
|
128
|
+
throw new Error('Only one of where, and, or, and not can be used per query filter level');
|
|
129
|
+
}
|
|
130
|
+
if ('where' in filter) {
|
|
131
|
+
const value = parseObjectFilter(filter.where);
|
|
132
|
+
const childWhereValues = Object.entries(value).map(([childKey, childValue]) => {
|
|
133
|
+
if (childValue.length > 1) {
|
|
134
|
+
return {
|
|
135
|
+
type: 'and',
|
|
136
|
+
value: childValue.map((subChildValue) => ({
|
|
137
|
+
type: 'where',
|
|
138
|
+
value: { [childKey]: subChildValue },
|
|
139
|
+
})),
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
type: 'where',
|
|
144
|
+
value: { [childKey]: childValue[0] },
|
|
145
|
+
};
|
|
146
|
+
});
|
|
147
|
+
if (childWhereValues.length > 1) {
|
|
148
|
+
return {
|
|
149
|
+
type: 'and',
|
|
150
|
+
value: childWhereValues,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
return childWhereValues[0];
|
|
154
|
+
}
|
|
155
|
+
else if ('and' in filter) {
|
|
156
|
+
const value = filter.and.map(parseQueryFilters);
|
|
157
|
+
return {
|
|
158
|
+
type: 'and',
|
|
159
|
+
value,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
else if ('or' in filter) {
|
|
163
|
+
const value = filter.or.map(parseQueryFilters);
|
|
164
|
+
return {
|
|
165
|
+
type: 'or',
|
|
166
|
+
value,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
else if ('not' in filter) {
|
|
170
|
+
const value = parseQueryFilters(filter.not);
|
|
171
|
+
return {
|
|
172
|
+
type: 'not',
|
|
173
|
+
value,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
throw new Error(`Invalid query: ${keys[0]}`);
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=query-filter-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-filter-parser.js","sourceRoot":"","sources":["../src/query-filter-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { DatabaseType } from './migrations/1-create-model-table.js';
|
|
2
|
+
import { Knex } from 'knex';
|
|
3
|
+
import { DiagnosticsLogger, Networks } from '@ceramicnetwork/common';
|
|
4
|
+
import { IndexModelArgs } from './database-index-api.js';
|
|
5
|
+
declare type ConfigTable = {
|
|
6
|
+
readonly tableName: string;
|
|
7
|
+
readonly validSchema: object;
|
|
8
|
+
};
|
|
9
|
+
export declare class TablesManager {
|
|
10
|
+
readonly dbType: DatabaseType;
|
|
11
|
+
readonly dataSource: Knex;
|
|
12
|
+
readonly logger: DiagnosticsLogger;
|
|
13
|
+
constructor(dbType: DatabaseType, dataSource: Knex, logger: DiagnosticsLogger);
|
|
14
|
+
listMidTables(): Promise<Array<string>>;
|
|
15
|
+
initMidTables(_modelsToIndex: Array<IndexModelArgs>): Promise<void>;
|
|
16
|
+
hasMidIndices(_tableName: string, _args: IndexModelArgs): Promise<boolean>;
|
|
17
|
+
hasJsonBSupport(): boolean;
|
|
18
|
+
listConfigTables(): Array<ConfigTable>;
|
|
19
|
+
initConfigTables(network: Networks): Promise<void>;
|
|
20
|
+
initConfigTable(table: ConfigTable, network: Networks): Promise<void>;
|
|
21
|
+
_verifyConfigTables(): Promise<void>;
|
|
22
|
+
_verifyConfigTable(table: ConfigTable): Promise<void>;
|
|
23
|
+
_verifyMidTables(modelsToIndex: Array<IndexModelArgs>): Promise<void>;
|
|
24
|
+
_verifyMidTable(tableName: string, modelsToIndex: Array<IndexModelArgs>): Promise<void>;
|
|
25
|
+
verifyTables(modelsToIndex: Array<IndexModelArgs>): Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
export declare class PostgresTablesManager extends TablesManager {
|
|
28
|
+
constructor(dataSource: Knex, logger: DiagnosticsLogger);
|
|
29
|
+
listMidTables(): Promise<Array<string>>;
|
|
30
|
+
initMidTables(modelsToIndex: Array<IndexModelArgs>): Promise<void>;
|
|
31
|
+
initMidTable(modelIndexArgs: IndexModelArgs): Promise<void>;
|
|
32
|
+
hasMidIndices(tableName: string, args: IndexModelArgs): Promise<boolean>;
|
|
33
|
+
hasJsonBSupport(): boolean;
|
|
34
|
+
}
|
|
35
|
+
export declare class SqliteTablesManager extends TablesManager {
|
|
36
|
+
constructor(dataSource: Knex, logger: DiagnosticsLogger);
|
|
37
|
+
listMidTables(): Promise<Array<string>>;
|
|
38
|
+
initMidTables(modelsToIndex: Array<IndexModelArgs>): Promise<void>;
|
|
39
|
+
initMidTable(modelIndexArgs: IndexModelArgs, existingTables: Array<string>): Promise<void>;
|
|
40
|
+
hasMidIndices(tableName: string, args: IndexModelArgs): Promise<boolean>;
|
|
41
|
+
hasJsonBSupport(): boolean;
|
|
42
|
+
}
|
|
43
|
+
export {};
|
|
44
|
+
//# sourceMappingURL=tables-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tables-manager.d.ts","sourceRoot":"","sources":["../src/tables-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EAUb,MAAM,sCAAsC,CAAA;AAE7C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE3B,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACpE,OAAO,EAEL,cAAc,EAEf,MAAM,yBAAyB,CAAA;AAQhC,aAAK,WAAW,GAAG;IACjB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;CAC7B,CAAA;AAcD,qBAAa,aAAa;IAEtB,QAAQ,CAAC,MAAM,EAAE,YAAY;IAC7B,QAAQ,CAAC,UAAU,EAAE,IAAI;IACzB,QAAQ,CAAC,MAAM,EAAE,iBAAiB;gBAFzB,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,IAAI,EAChB,MAAM,EAAE,iBAAiB;IAM9B,aAAa,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAOvC,aAAa,CAAC,cAAc,EAAE,KAAK,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IASnE,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAOhF,eAAe,IAAI,OAAO;IAO1B,gBAAgB,IAAI,KAAK,CAAC,WAAW,CAAC;IAchC,gBAAgB,CAAC,OAAO,EAAE,QAAQ;IAYlC,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ;IAwBrD,mBAAmB;IAYnB,kBAAkB,CAAC,KAAK,EAAE,WAAW;IAerC,gBAAgB,CAAC,aAAa,EAAE,KAAK,CAAC,cAAc,CAAC;IAYrD,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,KAAK,CAAC,cAAc,CAAC;IAmCvE,YAAY,CAAC,aAAa,EAAE,KAAK,CAAC,cAAc,CAAC;CAGxD;AAED,qBAAa,qBAAsB,SAAQ,aAAa;gBAC1C,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,iBAAiB;IAOxC,aAAa,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAavC,aAAa,CAAC,aAAa,EAAE,KAAK,CAAC,cAAc,CAAC;IAW3D,YAAY,CAAC,cAAc,EAAE,cAAc;IAwBlC,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB9E,eAAe,IAAI,OAAO;CAGpC;AAED,qBAAa,mBAAoB,SAAQ,aAAa;gBACxC,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,iBAAiB;IAOxC,aAAa,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAYvC,aAAa,CAAC,aAAa,EAAE,KAAK,CAAC,cAAc,CAAC;IAY3D,YAAY,CAAC,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC;IAkBjE,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAmB9E,eAAe,IAAI,OAAO;CAGpC"}
|