@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
@@ -2,7 +2,7 @@ import {useDatabase, useServer} from "./setup"
2
2
 
3
3
  describe('scalars', function() {
4
4
  useDatabase([
5
- `create table scalar (id text primary key, "boolean" bool, "bigint" numeric, "string" text, enum text, date_time timestamptz, "bytes" bytea, "json" jsonb, deep jsonb)`,
5
+ `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)`,
6
6
  `insert into scalar (id, "boolean") values ('1', true)`,
7
7
  `insert into scalar (id, "boolean", deep) values ('2', false, '{"boolean": true}'::jsonb)`,
8
8
  `insert into scalar (id, "bigint", deep) values ('3', 1000000000000000000000000000000000000, '{"bigint": "1000000000000000000000000000000000000"}'::jsonb)`,
@@ -23,6 +23,9 @@ describe('scalars', function() {
23
23
  `insert into scalar (id, "enum") values ('17', 'C')`,
24
24
  `insert into scalar (id, "json") values ('18', '{"key1": "value1"}'::jsonb)`,
25
25
  `insert into scalar (id, "json") values ('19', '{"key2": "value2"}'::jsonb)`,
26
+ `insert into scalar (id, "bigdecimal", deep) values ('20', 0.00000000000000000000000000000000002, '{"bigdecimal": "100.00000000000000000000000000000000002"}'::jsonb)`,
27
+ `insert into scalar (id, "bigdecimal", deep) values ('21', 0.00000000000000000000000000000000001, '{"bigdecimal": "12.00000000000000000000000000000000001"}'::jsonb)`,
28
+ `insert into scalar (id, "bigdecimal", deep) values ('22', 5, '{"bigdecimal": "5"}'::jsonb)`,
26
29
  ])
27
30
 
28
31
  const client = useServer(`
@@ -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
@@ -233,6 +238,78 @@ describe('scalars', function() {
233
238
  })
234
239
  })
235
240
 
241
+ describe('BigDecimal', function () {
242
+ it('outputs correctly', function () {
243
+ return client.test(`
244
+ query {
245
+ scalars(where: {id_in: ["20", "21", "22"]} orderBy: id_ASC) {
246
+ id
247
+ bigdecimal
248
+ deep { bigdecimal }
249
+ }
250
+ }
251
+ `, {
252
+ scalars: [
253
+ {
254
+ id: '20',
255
+ bigdecimal: '2e-35',
256
+ deep: {bigdecimal: '100.00000000000000000000000000000000002'}
257
+ },
258
+ {
259
+ id: '21',
260
+ bigdecimal: '1e-35',
261
+ deep: {bigdecimal: '12.00000000000000000000000000000000001'}
262
+ },
263
+ {
264
+ id: '22',
265
+ bigdecimal: '5',
266
+ deep: {bigdecimal: '5'}
267
+ }
268
+ ]
269
+ })
270
+ })
271
+
272
+ it('supports where conditions', function () {
273
+ return client.test(`
274
+ query {
275
+ eq: scalars(where: {bigdecimal_eq: 0.00000000000000000000000000000000002} orderBy: id_ASC) { id }
276
+ not_eq: scalars(where: {bigdecimal_not_eq: 0.00000000000000000000000000000000002} orderBy: id_ASC) { id }
277
+ gt: scalars(where: {bigdecimal_gt: 0.00000000000000000000000000000000001} orderBy: id_ASC) { id }
278
+ gte: scalars(where: {bigdecimal_gte: 0.00000000000000000000000000000000002} orderBy: id_ASC) { id }
279
+ lt: scalars(where: {bigdecimal_lt: 0.00000000000000000000000000000000002} orderBy: id_ASC) { id }
280
+ lte: scalars(where: {bigdecimal_lte: 0.00000000000000000000000000000000002} orderBy: id_ASC) { id }
281
+ in: scalars(where: {bigdecimal_in: [0.00000000000000000000000000000000001, 5.0]} orderBy: id_ASC) { id }
282
+ not_in: scalars(where: {bigdecimal_not_in: [0.00000000000000000000000000000000001, 5.0]} orderBy: id_ASC) { id }
283
+ }
284
+ `, {
285
+ eq: [{id: '20'}],
286
+ not_eq: [{id: '21'}, {id: '22'}],
287
+ gt: [{id: '20'}, {id: '22'}],
288
+ gte: [{id: '20'}, {id: '22'}],
289
+ lt: [{id: '21'}],
290
+ lte: [{id: '20'}, {id: '21'}],
291
+ in: [{id: '21'}, {id: '22'}],
292
+ not_in: [{id: '20'}]
293
+ })
294
+ })
295
+
296
+ it('json sort', function () {
297
+ return client.test(`
298
+ query {
299
+ scalars(orderBy: deep_bigdecimal_ASC where: {id_in: ["20", "21", "22"]}) {
300
+ id
301
+ }
302
+ }
303
+ `, {
304
+ scalars: [
305
+ {id: '22'},
306
+ {id: '21'},
307
+ {id: '20'}
308
+ ]
309
+ })
310
+ })
311
+ })
312
+
236
313
  describe('DateTime', function () {
237
314
  it('outputs correctly', function () {
238
315
  return client.test(`
@@ -0,0 +1,15 @@
1
+ import type {BigDecimalConstructor} from '@subsquid/big-decimal'
2
+
3
+
4
+ export const bigDecimal = {
5
+ get BigDecimal(): BigDecimalConstructor {
6
+ throw new Error('Package `@subsquid/big-decimal` is not installed')
7
+ }
8
+ }
9
+
10
+
11
+ try {
12
+ Object.defineProperty(bigDecimal, "BigDecimal", {
13
+ value: require('@subsquid/big-decimal').BigDecimal
14
+ })
15
+ } catch (e: any) {}