@subsquid/openreader 2.1.0 → 3.1.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 (96) hide show
  1. package/lib/ir/args.d.ts +1 -1
  2. package/lib/ir/args.d.ts.map +1 -1
  3. package/lib/ir/connection.d.ts +3 -4
  4. package/lib/ir/connection.d.ts.map +1 -1
  5. package/lib/ir/connection.js.map +1 -1
  6. package/lib/ir/fields.d.ts +6 -2
  7. package/lib/ir/fields.d.ts.map +1 -1
  8. package/lib/ir/fields.js +15 -0
  9. package/lib/ir/fields.js.map +1 -1
  10. package/lib/limit.size.d.ts +4 -4
  11. package/lib/limit.size.d.ts.map +1 -1
  12. package/lib/limit.size.js +51 -20
  13. package/lib/limit.size.js.map +1 -1
  14. package/lib/main.js +0 -9
  15. package/lib/main.js.map +1 -1
  16. package/lib/model.d.ts +3 -2
  17. package/lib/model.d.ts.map +1 -1
  18. package/lib/model.schema.d.ts +2 -2
  19. package/lib/model.schema.d.ts.map +1 -1
  20. package/lib/model.schema.js +8 -3
  21. package/lib/model.schema.js.map +1 -1
  22. package/lib/model.tools.d.ts +6 -1
  23. package/lib/model.tools.d.ts.map +1 -1
  24. package/lib/model.tools.js +111 -8
  25. package/lib/model.tools.js.map +1 -1
  26. package/lib/opencrud/orderBy.d.ts +2 -2
  27. package/lib/opencrud/orderBy.d.ts.map +1 -1
  28. package/lib/opencrud/orderBy.js +13 -17
  29. package/lib/opencrud/orderBy.js.map +1 -1
  30. package/lib/opencrud/schema.d.ts +4 -4
  31. package/lib/opencrud/schema.d.ts.map +1 -1
  32. package/lib/opencrud/schema.js +56 -62
  33. package/lib/opencrud/schema.js.map +1 -1
  34. package/lib/opencrud/tree.d.ts +9 -7
  35. package/lib/opencrud/tree.d.ts.map +1 -1
  36. package/lib/opencrud/tree.js +32 -14
  37. package/lib/opencrud/tree.js.map +1 -1
  38. package/lib/scalars/BigDecimal.d.ts +3 -0
  39. package/lib/scalars/BigDecimal.d.ts.map +1 -0
  40. package/lib/scalars/BigDecimal.js +38 -0
  41. package/lib/scalars/BigDecimal.js.map +1 -0
  42. package/lib/scalars/index.d.ts +1 -0
  43. package/lib/scalars/index.d.ts.map +1 -1
  44. package/lib/scalars/index.js +2 -0
  45. package/lib/scalars/index.js.map +1 -1
  46. package/lib/server.d.ts +4 -2
  47. package/lib/server.d.ts.map +1 -1
  48. package/lib/server.js +4 -2
  49. package/lib/server.js.map +1 -1
  50. package/lib/sql/cursor.d.ts.map +1 -1
  51. package/lib/sql/cursor.js +4 -2
  52. package/lib/sql/cursor.js.map +1 -1
  53. package/lib/sql/mapping.d.ts +3 -1
  54. package/lib/sql/mapping.d.ts.map +1 -1
  55. package/lib/sql/mapping.js +16 -1
  56. package/lib/sql/mapping.js.map +1 -1
  57. package/lib/sql/printer.d.ts +29 -11
  58. package/lib/sql/printer.d.ts.map +1 -1
  59. package/lib/sql/printer.js +112 -11
  60. package/lib/sql/printer.js.map +1 -1
  61. package/lib/sql/query.d.ts +11 -11
  62. package/lib/sql/query.d.ts.map +1 -1
  63. package/lib/sql/query.js +41 -19
  64. package/lib/sql/query.js.map +1 -1
  65. package/lib/test/queryable.test.d.ts +2 -0
  66. package/lib/test/queryable.test.d.ts.map +1 -0
  67. package/lib/test/queryable.test.js +255 -0
  68. package/lib/test/queryable.test.js.map +1 -0
  69. package/lib/test/scalars.test.js +75 -1
  70. package/lib/test/scalars.test.js.map +1 -1
  71. package/lib/util/big-decimal.d.ts +5 -0
  72. package/lib/util/big-decimal.d.ts.map +1 -0
  73. package/lib/util/big-decimal.js +15 -0
  74. package/lib/util/big-decimal.js.map +1 -0
  75. package/package.json +10 -2
  76. package/src/ir/args.ts +1 -1
  77. package/src/ir/connection.ts +3 -4
  78. package/src/ir/fields.ts +22 -2
  79. package/src/limit.size.ts +55 -30
  80. package/src/main.ts +0 -11
  81. package/src/model.schema.ts +16 -9
  82. package/src/model.tools.ts +121 -8
  83. package/src/model.ts +3 -2
  84. package/src/opencrud/orderBy.ts +13 -17
  85. package/src/opencrud/schema.ts +81 -84
  86. package/src/opencrud/tree.ts +55 -26
  87. package/src/scalars/BigDecimal.ts +37 -0
  88. package/src/scalars/index.ts +2 -0
  89. package/src/server.ts +10 -7
  90. package/src/sql/cursor.ts +4 -2
  91. package/src/sql/mapping.ts +18 -1
  92. package/src/sql/printer.ts +142 -22
  93. package/src/sql/query.ts +50 -30
  94. package/src/test/queryable.test.ts +258 -0
  95. package/src/test/scalars.test.ts +78 -1
  96. package/src/util/big-decimal.ts +15 -0
@@ -0,0 +1,255 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const setup_1 = require("./setup");
4
+ describe('queryable interfaces', function () {
5
+ (0, setup_1.useDatabase)([
6
+ `create table foo (id text primary key, name text, foo int)`,
7
+ `create table bar (id text primary key, name text, bar int)`,
8
+ `create table ref (id text primary key, name text, foo_id text not null unique references foo, bar_id text not null unique references bar)`,
9
+ `create table baz (id text primary key, name text, ref_id text references ref, baz int)`,
10
+ `insert into foo (id, name, foo) values ('foo-1', 'hello-foo-1', 1)`,
11
+ `insert into foo (id, name, foo) values ('foo-2', 'hello-foo-2', 2)`,
12
+ `insert into bar (id, name, bar) values ('bar-1', 'hello-bar-1', 10)`,
13
+ `insert into bar (id, name, bar) values ('bar-2', 'hello-bar-2', 20)`,
14
+ `insert into ref (id, name, foo_id, bar_id) values ('1', 'ref-1', 'foo-1', 'bar-2')`,
15
+ `insert into ref (id, name, foo_id, bar_id) values ('2', 'ref-2', 'foo-2', 'bar-1')`,
16
+ `insert into baz (id, name, baz, ref_id) values ('baz-1', 'hello-baz-1', 100, '1')`,
17
+ `create table one (id text primary key)`,
18
+ `create table two (id text primary key)`,
19
+ `create table relation (id text primary key, one_id text references one, two_id text references two)`,
20
+ `insert into one (id) values ('1-1')`,
21
+ `insert into one (id) values ('1-2')`,
22
+ `insert into two (id) values ('2-1')`,
23
+ `insert into two (id) values ('2-2')`,
24
+ `insert into relation (id, one_id, two_id) values ('r-1', '1-1', '2-1')`,
25
+ `insert into relation (id, one_id, two_id) values ('r-2', '1-2', '2-1')`,
26
+ ]);
27
+ const client = (0, setup_1.useServer)(`
28
+ interface Entity @query {
29
+ id: ID!
30
+ name: String
31
+ ref: Ref
32
+ }
33
+
34
+ type Ref @entity {
35
+ id: ID!
36
+ name: String
37
+ foo: Foo! @unique
38
+ bar: Bar! @unique
39
+ }
40
+
41
+ type Foo implements Entity @entity {
42
+ id: ID!
43
+ name: String
44
+ ref: Ref @derivedFrom(field: "foo")
45
+ foo: Int
46
+ }
47
+
48
+ type Bar implements Entity @entity {
49
+ id: ID!
50
+ name: String
51
+ ref: Ref @derivedFrom(field: "bar")
52
+ bar: Int
53
+ }
54
+
55
+ type Baz implements Entity @entity {
56
+ id: ID!
57
+ name: String
58
+ ref: Ref
59
+ baz: Int
60
+ }
61
+
62
+ interface Number @query {
63
+ id: ID!
64
+ relations: [Relation!]!
65
+ }
66
+
67
+ type One implements Number @entity {
68
+ id: ID!
69
+ relations: [Relation!]! @derivedFrom(field: "one")
70
+ }
71
+
72
+ type Two implements Number @entity {
73
+ id: ID!
74
+ relations: [Relation!]! @derivedFrom(field: "two")
75
+ }
76
+
77
+ type Relation @entity {
78
+ id: ID!
79
+ one: One
80
+ two: Two
81
+ }
82
+ `);
83
+ it('fetching', function () {
84
+ return client.test(`
85
+ query {
86
+ entities(orderBy: id_ASC) {
87
+ id
88
+ name
89
+ ref {
90
+ id
91
+ name
92
+ }
93
+ ... on Foo { foo }
94
+ ... on Bar { bar }
95
+ ... on Baz { baz }
96
+ }
97
+ }
98
+ `, {
99
+ entities: [
100
+ {
101
+ id: 'bar-1',
102
+ name: 'hello-bar-1',
103
+ ref: {
104
+ id: '2',
105
+ name: 'ref-2'
106
+ },
107
+ bar: 10
108
+ },
109
+ {
110
+ id: 'bar-2',
111
+ name: 'hello-bar-2',
112
+ ref: {
113
+ id: '1',
114
+ name: 'ref-1'
115
+ },
116
+ bar: 20
117
+ },
118
+ {
119
+ id: 'baz-1',
120
+ name: 'hello-baz-1',
121
+ ref: {
122
+ id: '1',
123
+ name: 'ref-1'
124
+ },
125
+ baz: 100
126
+ },
127
+ {
128
+ id: 'foo-1',
129
+ name: 'hello-foo-1',
130
+ ref: {
131
+ id: '1',
132
+ name: 'ref-1'
133
+ },
134
+ foo: 1
135
+ },
136
+ {
137
+ id: 'foo-2',
138
+ name: 'hello-foo-2',
139
+ ref: {
140
+ id: '2',
141
+ name: 'ref-2'
142
+ },
143
+ foo: 2
144
+ }
145
+ ]
146
+ });
147
+ });
148
+ it('sorting by entity type', function () {
149
+ return client.test(`
150
+ query {
151
+ entities(orderBy: [_type_DESC, id_ASC]) {
152
+ id
153
+ }
154
+ }
155
+ `, {
156
+ entities: [
157
+ { id: 'foo-1' },
158
+ { id: 'foo-2' },
159
+ { id: 'baz-1' },
160
+ { id: 'bar-1' },
161
+ { id: 'bar-2' }
162
+ ]
163
+ });
164
+ });
165
+ it('pagination', function () {
166
+ return client.test(`
167
+ query {
168
+ page1: entitiesConnection(orderBy: id_ASC, first: 2) {
169
+ ...fields
170
+ }
171
+ page2: entitiesConnection(orderBy: id_ASC, first: 2, after: "2") {
172
+ ...fields
173
+ }
174
+ page3: entitiesConnection(orderBy: id_ASC, first: 2, after: "4") {
175
+ ...fields
176
+ }
177
+ }
178
+
179
+ fragment fields on EntitiesConnection {
180
+ edges {
181
+ cursor
182
+ node {
183
+ ... on Foo { foo }
184
+ ... on Bar { bar }
185
+ }
186
+ }
187
+ pageInfo {
188
+ hasNextPage
189
+ hasPreviousPage
190
+ startCursor
191
+ endCursor
192
+ }
193
+ totalCount
194
+ }
195
+ `, {
196
+ page1: {
197
+ edges: [
198
+ { cursor: '1', node: { bar: 10 } },
199
+ { cursor: '2', node: { bar: 20 } },
200
+ ],
201
+ pageInfo: {
202
+ hasNextPage: true,
203
+ hasPreviousPage: false,
204
+ startCursor: '1',
205
+ endCursor: '2'
206
+ },
207
+ totalCount: 5
208
+ },
209
+ page2: {
210
+ edges: [
211
+ { cursor: '3', node: {} },
212
+ { cursor: '4', node: { foo: 1 } },
213
+ ],
214
+ pageInfo: {
215
+ hasNextPage: true,
216
+ hasPreviousPage: true,
217
+ startCursor: '3',
218
+ endCursor: '4'
219
+ },
220
+ totalCount: 5
221
+ },
222
+ page3: {
223
+ edges: [
224
+ { cursor: '5', node: { foo: 2 } },
225
+ ],
226
+ pageInfo: {
227
+ hasNextPage: false,
228
+ hasPreviousPage: true,
229
+ startCursor: '5',
230
+ endCursor: '5'
231
+ },
232
+ totalCount: 5
233
+ }
234
+ });
235
+ });
236
+ it('list lookup fields in interfaces', function () {
237
+ return client.test(`
238
+ query {
239
+ numbers(orderBy: id_ASC) {
240
+ id
241
+ relations { id }
242
+ __typename
243
+ }
244
+ }
245
+ `, {
246
+ numbers: [
247
+ { __typename: 'One', id: '1-1', relations: [{ id: 'r-1' }] },
248
+ { __typename: 'One', id: '1-2', relations: [{ id: 'r-2' }] },
249
+ { __typename: 'Two', id: '2-1', relations: [{ id: 'r-1' }, { id: 'r-2' }] },
250
+ { __typename: 'Two', id: '2-2', relations: [] }
251
+ ]
252
+ });
253
+ });
254
+ });
255
+ //# sourceMappingURL=queryable.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queryable.test.js","sourceRoot":"","sources":["../../src/test/queryable.test.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const setup_1 = require("./setup");
4
4
  describe('scalars', function () {
5
5
  (0, setup_1.useDatabase)([
6
- `create table scalar (id text primary key, "boolean" bool, "bigint" numeric, "string" text, enum text, date_time timestamptz, "bytes" bytea, "json" jsonb, deep jsonb)`,
6
+ `create table scalar (id text primary key, "boolean" bool, "bigint" numeric, "bigdecimal" numeric, "string" text, enum text, date_time timestamptz, "bytes" bytea, "json" jsonb, deep jsonb)`,
7
7
  `insert into scalar (id, "boolean") values ('1', true)`,
8
8
  `insert into scalar (id, "boolean", deep) values ('2', false, '{"boolean": true}'::jsonb)`,
9
9
  `insert into scalar (id, "bigint", deep) values ('3', 1000000000000000000000000000000000000, '{"bigint": "1000000000000000000000000000000000000"}'::jsonb)`,
@@ -24,6 +24,9 @@ describe('scalars', function () {
24
24
  `insert into scalar (id, "enum") values ('17', 'C')`,
25
25
  `insert into scalar (id, "json") values ('18', '{"key1": "value1"}'::jsonb)`,
26
26
  `insert into scalar (id, "json") values ('19', '{"key2": "value2"}'::jsonb)`,
27
+ `insert into scalar (id, "bigdecimal", deep) values ('20', 0.00000000000000000000000000000000002, '{"bigdecimal": "100.00000000000000000000000000000000002"}'::jsonb)`,
28
+ `insert into scalar (id, "bigdecimal", deep) values ('21', 0.00000000000000000000000000000000001, '{"bigdecimal": "12.00000000000000000000000000000000001"}'::jsonb)`,
29
+ `insert into scalar (id, "bigdecimal", deep) values ('22', 5, '{"bigdecimal": "5"}'::jsonb)`,
27
30
  ]);
28
31
  const client = (0, setup_1.useServer)(`
29
32
  type Scalar @entity {
@@ -32,6 +35,7 @@ describe('scalars', function () {
32
35
  string: String
33
36
  enum: Enum
34
37
  bigint: BigInt
38
+ bigdecimal: BigDecimal
35
39
  dateTime: DateTime
36
40
  bytes: Bytes
37
41
  json: JSON,
@@ -40,6 +44,7 @@ describe('scalars', function () {
40
44
 
41
45
  type DeepScalar {
42
46
  bigint: BigInt
47
+ bigdecimal: BigDecimal
43
48
  dateTime: DateTime
44
49
  bytes: Bytes
45
50
  boolean: Boolean
@@ -223,6 +228,75 @@ describe('scalars', function () {
223
228
  });
224
229
  });
225
230
  });
231
+ describe('BigDecimal', function () {
232
+ it('outputs correctly', function () {
233
+ return client.test(`
234
+ query {
235
+ scalars(where: {id_in: ["20", "21", "22"]} orderBy: id_ASC) {
236
+ id
237
+ bigdecimal
238
+ deep { bigdecimal }
239
+ }
240
+ }
241
+ `, {
242
+ scalars: [
243
+ {
244
+ id: '20',
245
+ bigdecimal: '2e-35',
246
+ deep: { bigdecimal: '100.00000000000000000000000000000000002' }
247
+ },
248
+ {
249
+ id: '21',
250
+ bigdecimal: '1e-35',
251
+ deep: { bigdecimal: '12.00000000000000000000000000000000001' }
252
+ },
253
+ {
254
+ id: '22',
255
+ bigdecimal: '5',
256
+ deep: { bigdecimal: '5' }
257
+ }
258
+ ]
259
+ });
260
+ });
261
+ it('supports where conditions', function () {
262
+ return client.test(`
263
+ query {
264
+ eq: scalars(where: {bigdecimal_eq: 0.00000000000000000000000000000000002} orderBy: id_ASC) { id }
265
+ not_eq: scalars(where: {bigdecimal_not_eq: 0.00000000000000000000000000000000002} orderBy: id_ASC) { id }
266
+ gt: scalars(where: {bigdecimal_gt: 0.00000000000000000000000000000000001} orderBy: id_ASC) { id }
267
+ gte: scalars(where: {bigdecimal_gte: 0.00000000000000000000000000000000002} orderBy: id_ASC) { id }
268
+ lt: scalars(where: {bigdecimal_lt: 0.00000000000000000000000000000000002} orderBy: id_ASC) { id }
269
+ lte: scalars(where: {bigdecimal_lte: 0.00000000000000000000000000000000002} orderBy: id_ASC) { id }
270
+ in: scalars(where: {bigdecimal_in: [0.00000000000000000000000000000000001, 5.0]} orderBy: id_ASC) { id }
271
+ not_in: scalars(where: {bigdecimal_not_in: [0.00000000000000000000000000000000001, 5.0]} orderBy: id_ASC) { id }
272
+ }
273
+ `, {
274
+ eq: [{ id: '20' }],
275
+ not_eq: [{ id: '21' }, { id: '22' }],
276
+ gt: [{ id: '20' }, { id: '22' }],
277
+ gte: [{ id: '20' }, { id: '22' }],
278
+ lt: [{ id: '21' }],
279
+ lte: [{ id: '20' }, { id: '21' }],
280
+ in: [{ id: '21' }, { id: '22' }],
281
+ not_in: [{ id: '20' }]
282
+ });
283
+ });
284
+ it('json sort', function () {
285
+ return client.test(`
286
+ query {
287
+ scalars(orderBy: deep_bigdecimal_ASC where: {id_in: ["20", "21", "22"]}) {
288
+ id
289
+ }
290
+ }
291
+ `, {
292
+ scalars: [
293
+ { id: '22' },
294
+ { id: '21' },
295
+ { id: '20' }
296
+ ]
297
+ });
298
+ });
299
+ });
226
300
  describe('DateTime', function () {
227
301
  it('outputs correctly', function () {
228
302
  return client.test(`
@@ -1 +1 @@
1
- {"version":3,"file":"scalars.test.js","sourceRoot":"","sources":["../../src/test/scalars.test.ts"],"names":[],"mappings":";;AAAA,mCAA8C;AAE9C,QAAQ,CAAC,SAAS,EAAE;IAChB,IAAA,mBAAW,EAAC;QACR,uKAAuK;QACvK,uDAAuD;QACvD,0FAA0F;QAC1F,2JAA2J;QAC3J,2JAA2J;QAC3J,mFAAmF;QACnF,+DAA+D;QAC/D,+DAA+D;QAC/D,+DAA+D;QAC/D,yDAAyD;QACzD,6DAA6D;QAC7D,yIAAyI;QACzI,qIAAqI;QACrI,6IAA6I;QAC7I,uGAAuG;QACvG,yGAAyG;QACzG,oDAAoD;QACpD,oDAAoD;QACpD,oDAAoD;QACpD,4EAA4E;QAC5E,4EAA4E;KAC/E,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,IAAA,iBAAS,EAAC;;;;;;;;;;;;;;;;;;;;;;;KAuBxB,CAAC,CAAA;IAEF,QAAQ,CAAC,SAAS,EAAE;QAChB,EAAE,CAAC,mBAAmB,EAAE;YACpB,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;;aAOlB,EAAE;gBACC,OAAO,EAAE;oBACL,EAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAC;oBACxB,EAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAC;iBAC5B;aACJ,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,2BAA2B,EAAE;YAC5B,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;;;aAQlB,EAAE;gBACC,OAAO,EAAE;oBACL,EAAC,IAAI,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,EAAC;iBAC1B;aACJ,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,2BAA2B,EAAE;YAC5B,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;;aAOlB,EAAE;gBACC,CAAC,EAAE,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,CAAC;gBACd,CAAC,EAAE,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,CAAC;gBACd,EAAE,EAAE,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,CAAC;gBACf,EAAE,EAAE,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,CAAC;aAClB,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,QAAQ,EAAE;QACf,EAAE,CAAC,2BAA2B,EAAE;YAC5B,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;;;;;;aAWlB,EAAE;gBACC,WAAW,EAAE,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,CAAC;gBACxB,eAAe,EAAE,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,EAAE,EAAC,EAAE,EAAE,GAAG,EAAC,EAAE,EAAC,EAAE,EAAE,GAAG,EAAC,EAAE,EAAC,EAAE,EAAE,KAAK,EAAC,CAAC;gBAC/D,SAAS,EAAE,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,CAAC;gBACtB,aAAa,EAAE,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,EAAE,EAAC,EAAE,EAAE,GAAG,EAAC,EAAE,EAAC,EAAE,EAAE,GAAG,EAAC,EAAE,EAAC,EAAE,EAAE,KAAK,EAAC,CAAC;gBAC7D,QAAQ,EAAE,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,EAAE,EAAC,EAAE,EAAE,GAAG,EAAC,EAAE,EAAC,EAAE,EAAE,GAAG,EAAC,CAAC;gBAC3C,YAAY,EAAE,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,EAAE,EAAC,EAAE,EAAE,KAAK,EAAC,CAAC;gBACtC,oBAAoB,EAAE,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,EAAE,EAAC,EAAE,EAAE,GAAG,EAAC,EAAE,EAAC,EAAE,EAAE,GAAG,EAAC,EAAE,EAAC,EAAE,EAAE,KAAK,EAAC,CAAC;gBACpE,wBAAwB,EAAE,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,CAAC;aACxC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,MAAM,EAAE;QACb,EAAE,CAAC,mBAAmB,EAAE;YACpB,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;;aAOlB,EAAE;gBACC,OAAO,EAAE;oBACL,EAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAC;oBACrB,EAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAC;oBACrB,EAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAC;iBACxB;aACJ,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,2BAA2B,EAAE;YAC5B,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;;aAOlB,EAAE;gBACC,EAAE,EAAE,CAAC,EAAC,EAAE,EAAE,IAAI,EAAC,CAAC;gBAChB,MAAM,EAAE,CAAC,EAAC,EAAE,EAAE,IAAI,EAAC,EAAE,EAAC,EAAE,EAAE,IAAI,EAAC,CAAC;gBAChC,EAAE,EAAE,CAAC,EAAC,EAAE,EAAE,IAAI,EAAC,EAAE,EAAC,EAAE,EAAE,IAAI,EAAC,CAAC;gBAC5B,MAAM,EAAE,CAAC,EAAC,EAAE,EAAE,IAAI,EAAC,EAAE,EAAC,EAAE,EAAE,IAAI,EAAC,CAAC;aACnC,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,QAAQ,EAAE;QACf,EAAE,CAAC,mBAAmB,EAAE;YACpB,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;;;aAQlB,EAAE;gBACC,OAAO,EAAE;oBACL;wBACI,EAAE,EAAE,GAAG;wBACP,MAAM,EAAE,uCAAuC;wBAC/C,IAAI,EAAE,EAAC,MAAM,EAAE,uCAAuC,EAAC;qBAC1D;oBACD;wBACI,EAAE,EAAE,GAAG;wBACP,MAAM,EAAE,uCAAuC;wBAC/C,IAAI,EAAE,EAAC,MAAM,EAAE,uCAAuC,EAAC;qBAC1D;oBACD;wBACI,EAAE,EAAE,GAAG;wBACP,MAAM,EAAE,GAAG;wBACX,IAAI,EAAE,EAAC,MAAM,EAAE,GAAG,EAAC;qBACtB;iBACJ;aACJ,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,2BAA2B,EAAE;YAC5B,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;;;;;;aAWlB,EAAE;gBACC,EAAE,EAAE,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,CAAC;gBACf,MAAM,EAAE,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,EAAE,EAAC,EAAE,EAAE,GAAG,EAAC,CAAC;gBAC9B,EAAE,EAAE,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,CAAC;gBACf,GAAG,EAAE,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,EAAE,EAAC,EAAE,EAAE,GAAG,EAAC,CAAC;gBAC3B,EAAE,EAAE,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,CAAC;gBACf,GAAG,EAAE,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,EAAE,EAAC,EAAE,EAAE,GAAG,EAAC,CAAC;gBAC3B,EAAE,EAAE,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,EAAE,EAAC,EAAE,EAAE,GAAG,EAAC,CAAC;gBAC1B,MAAM,EAAE,CAAC,EAAC,EAAE,EAAE,GAAG,EAAC,CAAC;aACtB,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,WAAW,EAAE;YACZ,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;aAMlB,EAAE;gBACC,OAAO,EAAE;oBACL,EAAC,EAAE,EAAE,GAAG,EAAC;oBACT,EAAC,EAAE,EAAE,GAAG,EAAC;oBACT,EAAC,EAAE,EAAE,GAAG,EAAC;iBACZ;aACJ,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,UAAU,EAAE;QACjB,EAAE,CAAC,mBAAmB,EAAE;YACpB,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;;;aAQlB,EAAE;gBACC,OAAO,EAAE;oBACL,EAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,6BAA6B,EAAE,IAAI,EAAE,EAAC,QAAQ,EAAE,0BAA0B,EAAC,EAAC;oBACjG,EAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,6BAA6B,EAAE,IAAI,EAAE,EAAC,QAAQ,EAAE,sBAAsB,EAAC,EAAC;oBAC7F,EAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,6BAA6B,EAAE,IAAI,EAAE,EAAC,QAAQ,EAAE,wBAAwB,EAAC,EAAC;iBAClG;aACJ,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,2BAA2B,EAAE;YAC5B,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;;;;aASlB,EAAE;gBACC,EAAE,EAAE,CAAC,EAAC,EAAE,EAAE,IAAI,EAAC,EAAE,EAAC,EAAE,EAAE,IAAI,EAAC,CAAC;gBAC5B,GAAG,EAAE,CAAC,EAAC,EAAE,EAAE,IAAI,EAAC,EAAE,EAAC,EAAE,EAAE,IAAI,EAAC,EAAE,EAAC,EAAE,EAAE,IAAI,EAAC,CAAC;gBACzC,EAAE,EAAE,EAAE;gBACN,GAAG,EAAE,CAAC,EAAC,EAAE,EAAE,IAAI,EAAC,CAAC;gBACjB,EAAE,EAAE,CAAC,EAAC,EAAE,EAAE,IAAI,EAAC,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC;gBAC9B,MAAM,EAAE,CAAC,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC;aACzB,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,WAAW,EAAE;YACZ,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;aAMlB,EAAE;gBACC,OAAO,EAAE;oBACL,EAAC,EAAE,EAAE,IAAI,EAAC;oBACV,EAAC,EAAE,EAAE,IAAI,EAAC;oBACV,EAAC,EAAE,EAAE,IAAI,EAAC;iBACb;aACJ,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,OAAO,EAAE;QACd,EAAE,CAAC,mBAAmB,EAAE;YACpB,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;;;aAQlB,EAAE;gBACC,OAAO,EAAE;oBACL,EAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAC,KAAK,EAAE,MAAM,EAAC,EAAC;oBAChD,EAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAC,KAAK,EAAE,QAAQ,EAAC,EAAC;iBACrD;aACJ,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,2BAA2B,EAAE;YAC5B,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;aAKlB,EAAE;gBACC,EAAE,EAAE,CAAC,EAAC,EAAE,EAAE,IAAI,EAAC,CAAC;gBAChB,OAAO,EAAE,CAAC,EAAC,EAAE,EAAE,IAAI,EAAC,CAAC;aACxB,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,MAAM,EAAE;QACb,EAAE,CAAC,mBAAmB,EAAE;YACpB,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;;aAOlB,EAAE;gBACC,OAAO,EAAE;oBACL,EAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAC,MAAM,EAAE,QAAQ,EAAC,EAAC;iBACvC;aACJ,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,2BAA2B,EAAE;YAC5B,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;;aAOlB,EAAE;gBACC,EAAE,EAAE,CAAC,EAAC,EAAE,EAAE,IAAI,EAAC,CAAC;gBAChB,UAAU,EAAE,CAAC,EAAC,EAAE,EAAE,IAAI,EAAC,CAAC;gBACxB,YAAY,EAAE,CAAC,EAAC,EAAE,EAAE,IAAI,EAAC,CAAC;gBAC1B,UAAU,EAAE,EAAE;aACjB,CAAC,CAAA;QACN,CAAC,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"scalars.test.js","sourceRoot":"","sources":["../../src/test/scalars.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { BigDecimalConstructor } from '@subsquid/big-decimal';
2
+ export declare const bigDecimal: {
3
+ readonly BigDecimal: BigDecimalConstructor;
4
+ };
5
+ //# sourceMappingURL=big-decimal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"big-decimal.d.ts","sourceRoot":"","sources":["../../src/util/big-decimal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,uBAAuB,CAAA;AAGhE,eAAO,MAAM,UAAU;;CAItB,CAAA"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bigDecimal = void 0;
4
+ exports.bigDecimal = {
5
+ get BigDecimal() {
6
+ throw new Error('Package `@subsquid/big-decimal` is not installed');
7
+ }
8
+ };
9
+ try {
10
+ Object.defineProperty(exports.bigDecimal, "BigDecimal", {
11
+ value: require('@subsquid/big-decimal').BigDecimal
12
+ });
13
+ }
14
+ catch (e) { }
15
+ //# sourceMappingURL=big-decimal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"big-decimal.js","sourceRoot":"","sources":["../../src/util/big-decimal.ts"],"names":[],"mappings":";;;AAGa,QAAA,UAAU,GAAG;IACtB,IAAI,UAAU;QACV,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;IACvE,CAAC;CACJ,CAAA;AAGD,IAAI;IACA,MAAM,CAAC,cAAc,CAAC,kBAAU,EAAE,YAAY,EAAE;QAC5C,KAAK,EAAE,OAAO,CAAC,uBAAuB,CAAC,CAAC,UAAU;KACrD,CAAC,CAAA;CACL;AAAC,OAAO,CAAM,EAAE,GAAE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@subsquid/openreader",
3
- "version": "2.1.0",
3
+ "version": "3.1.0",
4
4
  "description": "GraphQL server for postgres-compatible databases",
5
5
  "keywords": [
6
6
  "graphql",
@@ -40,6 +40,14 @@
40
40
  "pg": "^8.7.3",
41
41
  "ws": "^8.8.1"
42
42
  },
43
+ "peerDependencies": {
44
+ "@subsquid/big-decimal": "^0.0.0"
45
+ },
46
+ "peerDependenciesMeta": {
47
+ "@subsquid/big-decimal": {
48
+ "optional": true
49
+ }
50
+ },
43
51
  "devDependencies": {
44
52
  "@types/deep-equal": "^1.0.1",
45
53
  "@types/express": "^4.17.13",
@@ -54,7 +62,7 @@
54
62
  "typescript": "~4.7.4"
55
63
  },
56
64
  "scripts": {
57
- "build": "rm -rf dist && tsc",
65
+ "build": "rm -rf lib && tsc",
58
66
  "test": "make up && sleep 2 && make test test-cockroach && make down || (make down && exit 1)"
59
67
  },
60
68
  "readme": "# OpenReader\n\nGraphQL server for squid framework. Given [data schema](https://docs.subsquid.io/reference/openreader-schema) \nand compatible Postgres database it serves \"read part\" of [OpenCRUD spec](https://www.opencrud.org).\n\n## Usage\n\n```bash\nopenreader schema.graphql\n```\n\nDatabase connection and server port are configured via environment variables:\n\n```\nDB_NAME\nDB_USER\nDB_PASS\nDB_HOST\nDB_PORT\nGRAPHQL_SERVER_PORT\n```\n"
package/src/ir/args.ts CHANGED
@@ -1,4 +1,4 @@
1
- export interface EntityListArguments {
1
+ export interface SqlArguments {
2
2
  offset?: number
3
3
  limit?: number
4
4
  orderBy?: OrderBy
@@ -1,13 +1,12 @@
1
- import {OrderBy, Where} from "./args"
2
- import {FieldRequest} from "./fields"
1
+ import {OrderBy, Where} from './args'
3
2
 
4
3
 
5
- export interface RelayConnectionRequest {
4
+ export interface RelayConnectionRequest<R> {
6
5
  orderBy: OrderBy
7
6
  where?: Where
8
7
  first?: number
9
8
  after?: string
10
- edgeNode?: FieldRequest[]
9
+ edgeNode?: R
11
10
  edgeCursor?: boolean
12
11
  pageInfo?: boolean
13
12
  totalCount?: boolean
package/src/ir/fields.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import assert from 'assert'
1
2
  import {
2
3
  EnumPropType,
3
4
  FkPropType,
@@ -9,7 +10,7 @@ import {
9
10
  ScalarPropType,
10
11
  UnionPropType
11
12
  } from "../model"
12
- import {EntityListArguments} from "./args"
13
+ import {SqlArguments} from "./args"
13
14
 
14
15
 
15
16
  export type FieldRequest = EntityListRequest | ObjectRequest | OpaqueRequest
@@ -28,7 +29,7 @@ type Base<T> = T extends PropType ? {
28
29
 
29
30
  export type EntityListRequest = Base<ListLookupPropType> & {
30
31
  children: FieldRequest[]
31
- args?: EntityListArguments
32
+ args?: SqlArguments
32
33
  }
33
34
 
34
35
 
@@ -38,3 +39,22 @@ export type ObjectRequest = Base<FkPropType | LookupPropType | ObjectPropType |
38
39
 
39
40
 
40
41
  export type OpaqueRequest = Base<ScalarPropType | EnumPropType | ListPropType>
42
+
43
+
44
+
45
+ export type FieldsByEntity = Record<string, FieldRequest[]>
46
+
47
+
48
+ export type AnyFields = FieldRequest[] | FieldsByEntity
49
+
50
+
51
+ export function asEntityFields(fields: AnyFields): FieldRequest[] {
52
+ assert(Array.isArray(fields))
53
+ return fields
54
+ }
55
+
56
+
57
+ export function asQueryableFields(fields: AnyFields): FieldsByEntity {
58
+ assert(!Array.isArray(fields))
59
+ return fields
60
+ }
package/src/limit.size.ts CHANGED
@@ -1,12 +1,13 @@
1
1
  import {unexpectedCase} from '@subsquid/util-internal'
2
+ import assert from 'assert'
2
3
  import {Where} from './ir/args'
3
4
  import {RelayConnectionRequest} from './ir/connection'
4
- import {FieldRequest} from './ir/fields'
5
+ import {AnyFields, FieldRequest} from './ir/fields'
5
6
  import {Model} from './model'
6
- import {getEntity} from './model.tools'
7
+ import {getEntity, getQueryableEntities} from './model.tools'
7
8
 
8
9
 
9
- export function getSize(model: Model, fields: FieldRequest[]): number {
10
+ export function getObjectSize(model: Model, fields: FieldRequest[]): number {
10
11
  let total = 0
11
12
  for (let req of fields) {
12
13
  let size = getFieldSize(model, req)
@@ -31,9 +32,9 @@ function getFieldSize(model: Model, req: FieldRequest): number {
31
32
  case "fk":
32
33
  case "lookup":
33
34
  case "union":
34
- return getSize(model, req.children) + 1
35
+ return getObjectSize(model, req.children) + 1
35
36
  case "list-lookup":
36
- return getEntityListSize(
37
+ return getListSize(
37
38
  model,
38
39
  req.type.entity,
39
40
  req.children,
@@ -46,22 +47,55 @@ function getFieldSize(model: Model, req: FieldRequest): number {
46
47
  }
47
48
 
48
49
 
49
- export function getEntityListSize(
50
+ export function getListSize(
50
51
  model: Model,
51
- entityName: string,
52
- fields: FieldRequest[],
52
+ typeName: string,
53
+ fields: AnyFields,
53
54
  limit?: number,
54
55
  where?: Where
55
56
  ): number {
56
- let cardinality = Math.min(
57
- getEntityCardinality(model, entityName),
58
- limit ?? Infinity,
59
- getWhereCardinality(where)
60
- )
61
- if (Number.isFinite(cardinality)) {
62
- return cardinality * Math.max(getSize(model, fields), 1)
63
- } else {
64
- return Infinity
57
+ let cardinality = getCardinality(model, typeName, limit, where)
58
+ if (!Number.isFinite(cardinality)) return Infinity
59
+ let type = model[typeName]
60
+ switch(type.kind) {
61
+ case 'entity': {
62
+ assert(Array.isArray(fields))
63
+ return cardinality * Math.max(getObjectSize(model, fields), 1)
64
+ }
65
+ case 'interface': {
66
+ assert(!Array.isArray(fields))
67
+ let weight = 1
68
+ for (let entity of getQueryableEntities(model, typeName)) {
69
+ weight = Math.max(weight, getObjectSize(model, fields[entity] || []))
70
+ }
71
+ return cardinality * weight
72
+ }
73
+ default:
74
+ throw unexpectedCase(type.kind)
75
+ }
76
+ }
77
+
78
+
79
+ function getCardinality(
80
+ model: Model,
81
+ typeName: string,
82
+ limit?: number,
83
+ where?: Where
84
+ ): number {
85
+ let type = model[typeName]
86
+ switch(type.kind) {
87
+ case 'entity':
88
+ return Math.min(type.cardinality ?? Infinity, limit ?? Infinity, getWhereCardinality(where))
89
+ case 'interface': {
90
+ let whereCardinality = getWhereCardinality(where)
91
+ let cardinality = 0
92
+ for (let entity of getQueryableEntities(model, typeName)) {
93
+ cardinality += Math.min(getEntity(model, entity).cardinality ?? Infinity, whereCardinality)
94
+ }
95
+ return Math.min(cardinality, limit ?? Infinity)
96
+ }
97
+ default:
98
+ throw unexpectedCase(type.kind)
65
99
  }
66
100
  }
67
101
 
@@ -102,18 +136,14 @@ function getWhereCardinality(where?: Where): number {
102
136
  }
103
137
 
104
138
 
105
- export function getRelaySize(model: Model, entityName: string, req: RelayConnectionRequest): number {
139
+ export function getConnectionSize(model: Model, typeName: string, req: RelayConnectionRequest<AnyFields>): number {
140
+ let first = req.first ?? 100
106
141
  let total = 0
107
- let limit = Math.min(
108
- getEntityCardinality(model, entityName),
109
- req.first ?? 100,
110
- getWhereCardinality(req.where)
111
- )
112
142
  if (req.edgeNode) {
113
- total += limit * Math.max(getSize(model, req.edgeNode), 1)
143
+ total += getListSize(model, typeName, req.edgeNode, first, req.where)
114
144
  }
115
145
  if (req.edgeCursor) {
116
- total += limit
146
+ total += getCardinality(model, typeName, first, req.where)
117
147
  }
118
148
  if (req.pageInfo) {
119
149
  total += 4
@@ -123,8 +153,3 @@ export function getRelaySize(model: Model, entityName: string, req: RelayConnect
123
153
  }
124
154
  return total
125
155
  }
126
-
127
-
128
- function getEntityCardinality(model: Model, entityName: string): number {
129
- return getEntity(model, entityName).cardinality ?? Infinity
130
- }