@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.
Files changed (98) hide show
  1. package/README.md +31 -0
  2. package/lib/__tests__/chunks.util.d.ts +2 -0
  3. package/lib/__tests__/chunks.util.d.ts.map +1 -0
  4. package/lib/__tests__/chunks.util.js +8 -0
  5. package/lib/__tests__/chunks.util.js.map +1 -0
  6. package/lib/__tests__/read-csv-fixture.util.d.ts +5 -0
  7. package/lib/__tests__/read-csv-fixture.util.d.ts.map +1 -0
  8. package/lib/__tests__/read-csv-fixture.util.js +35 -0
  9. package/lib/__tests__/read-csv-fixture.util.js.map +1 -0
  10. package/lib/as-table-name.util.d.ts +3 -0
  11. package/lib/as-table-name.util.d.ts.map +1 -0
  12. package/lib/as-table-name.util.js +4 -0
  13. package/lib/as-table-name.util.js.map +1 -0
  14. package/lib/build-indexing.d.ts +13 -0
  15. package/lib/build-indexing.d.ts.map +1 -0
  16. package/lib/build-indexing.js +55 -0
  17. package/lib/build-indexing.js.map +1 -0
  18. package/lib/column-name.util.d.ts +2 -0
  19. package/lib/column-name.util.d.ts.map +1 -0
  20. package/lib/column-name.util.js +5 -0
  21. package/lib/column-name.util.js.map +1 -0
  22. package/lib/config.d.ts +2 -0
  23. package/lib/config.d.ts.map +1 -0
  24. package/lib/config.js +2 -0
  25. package/lib/config.js.map +1 -0
  26. package/lib/database-index-api.d.ts +94 -0
  27. package/lib/database-index-api.d.ts.map +1 -0
  28. package/lib/database-index-api.js +228 -0
  29. package/lib/database-index-api.js.map +1 -0
  30. package/lib/history-sync/interfaces.d.ts +52 -0
  31. package/lib/history-sync/interfaces.d.ts.map +1 -0
  32. package/lib/history-sync/interfaces.js +11 -0
  33. package/lib/history-sync/interfaces.js.map +1 -0
  34. package/lib/history-sync/sync-api.d.ts +82 -0
  35. package/lib/history-sync/sync-api.d.ts.map +1 -0
  36. package/lib/history-sync/sync-api.js +276 -0
  37. package/lib/history-sync/sync-api.js.map +1 -0
  38. package/lib/history-sync/utils.d.ts +15 -0
  39. package/lib/history-sync/utils.d.ts.map +1 -0
  40. package/lib/history-sync/utils.js +23 -0
  41. package/lib/history-sync/utils.js.map +1 -0
  42. package/lib/history-sync/workers/rebuild-anchor.d.ts +15 -0
  43. package/lib/history-sync/workers/rebuild-anchor.d.ts.map +1 -0
  44. package/lib/history-sync/workers/rebuild-anchor.js +96 -0
  45. package/lib/history-sync/workers/rebuild-anchor.js.map +1 -0
  46. package/lib/history-sync/workers/sync.d.ts +24 -0
  47. package/lib/history-sync/workers/sync.d.ts.map +1 -0
  48. package/lib/history-sync/workers/sync.js +77 -0
  49. package/lib/history-sync/workers/sync.js.map +1 -0
  50. package/lib/index-query-not-available.error.d.ts +5 -0
  51. package/lib/index-query-not-available.error.d.ts.map +1 -0
  52. package/lib/index-query-not-available.error.js +6 -0
  53. package/lib/index-query-not-available.error.js.map +1 -0
  54. package/lib/index.d.ts +7 -0
  55. package/lib/index.d.ts.map +1 -0
  56. package/lib/index.js +6 -0
  57. package/lib/index.js.map +1 -0
  58. package/lib/insertion-order.d.ts +15 -0
  59. package/lib/insertion-order.d.ts.map +1 -0
  60. package/lib/insertion-order.js +180 -0
  61. package/lib/insertion-order.js.map +1 -0
  62. package/lib/local-index-api.d.ts +30 -0
  63. package/lib/local-index-api.d.ts.map +1 -0
  64. package/lib/local-index-api.js +118 -0
  65. package/lib/local-index-api.js.map +1 -0
  66. package/lib/make-index-api.d.ts +9 -0
  67. package/lib/make-index-api.d.ts.map +1 -0
  68. package/lib/make-index-api.js +27 -0
  69. package/lib/make-index-api.js.map +1 -0
  70. package/lib/migrations/1-create-model-table.d.ts +34 -0
  71. package/lib/migrations/1-create-model-table.d.ts.map +1 -0
  72. package/lib/migrations/1-create-model-table.js +243 -0
  73. package/lib/migrations/1-create-model-table.js.map +1 -0
  74. package/lib/migrations/cdb-schema-verification.d.ts +15 -0
  75. package/lib/migrations/cdb-schema-verification.d.ts.map +1 -0
  76. package/lib/migrations/cdb-schema-verification.js +272 -0
  77. package/lib/migrations/cdb-schema-verification.js.map +1 -0
  78. package/lib/parse-pagination.d.ts +18 -0
  79. package/lib/parse-pagination.d.ts.map +1 -0
  80. package/lib/parse-pagination.js +23 -0
  81. package/lib/parse-pagination.js.map +1 -0
  82. package/lib/query-filter-converter.d.ts +12 -0
  83. package/lib/query-filter-converter.d.ts.map +1 -0
  84. package/lib/query-filter-converter.js +231 -0
  85. package/lib/query-filter-converter.js.map +1 -0
  86. package/lib/query-filter-parser.d.ts +63 -0
  87. package/lib/query-filter-parser.d.ts.map +1 -0
  88. package/lib/query-filter-parser.js +178 -0
  89. package/lib/query-filter-parser.js.map +1 -0
  90. package/lib/tables-manager.d.ts +44 -0
  91. package/lib/tables-manager.d.ts.map +1 -0
  92. package/lib/tables-manager.js +218 -0
  93. package/lib/tables-manager.js.map +1 -0
  94. package/lib/unsupported-ordering-error.d.ts +4 -0
  95. package/lib/unsupported-ordering-error.d.ts.map +1 -0
  96. package/lib/unsupported-ordering-error.js +6 -0
  97. package/lib/unsupported-ordering-error.js.map +1 -0
  98. 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"}