@subsquid/openreader 0.3.2 → 0.3.3

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 (104) hide show
  1. package/dist/db.d.ts +1 -0
  2. package/dist/db.d.ts.map +1 -0
  3. package/dist/gql/opencrud.d.ts +1 -0
  4. package/dist/gql/opencrud.d.ts.map +1 -0
  5. package/dist/gql/schema.d.ts +1 -0
  6. package/dist/gql/schema.d.ts.map +1 -0
  7. package/dist/main.d.ts +1 -0
  8. package/dist/main.d.ts.map +1 -0
  9. package/dist/model.d.ts +1 -0
  10. package/dist/model.d.ts.map +1 -0
  11. package/dist/model.tools.d.ts +1 -0
  12. package/dist/model.tools.d.ts.map +1 -0
  13. package/dist/orderBy.d.ts +1 -0
  14. package/dist/orderBy.d.ts.map +1 -0
  15. package/dist/queryBuilder.d.ts +1 -0
  16. package/dist/queryBuilder.d.ts.map +1 -0
  17. package/dist/relayConnection.d.ts +1 -0
  18. package/dist/relayConnection.d.ts.map +1 -0
  19. package/dist/requestedFields.d.ts +1 -0
  20. package/dist/requestedFields.d.ts.map +1 -0
  21. package/dist/resolver.d.ts +1 -0
  22. package/dist/resolver.d.ts.map +1 -0
  23. package/dist/scalars.d.ts +1 -0
  24. package/dist/scalars.d.ts.map +1 -0
  25. package/dist/server.d.ts +1 -0
  26. package/dist/server.d.ts.map +1 -0
  27. package/dist/test/basic.test.d.ts +2 -0
  28. package/dist/test/basic.test.d.ts.map +1 -0
  29. package/dist/test/basic.test.js +286 -0
  30. package/dist/test/basic.test.js.map +1 -0
  31. package/dist/test/connection.test.d.ts +2 -0
  32. package/dist/test/connection.test.d.ts.map +1 -0
  33. package/dist/test/connection.test.js +193 -0
  34. package/dist/test/connection.test.js.map +1 -0
  35. package/dist/test/fts.test.d.ts +2 -0
  36. package/dist/test/fts.test.d.ts.map +1 -0
  37. package/dist/test/fts.test.js +110 -0
  38. package/dist/test/fts.test.js.map +1 -0
  39. package/dist/test/lists.test.d.ts +2 -0
  40. package/dist/test/lists.test.d.ts.map +1 -0
  41. package/dist/test/lists.test.js +266 -0
  42. package/dist/test/lists.test.js.map +1 -0
  43. package/dist/test/lookup.test.d.ts +2 -0
  44. package/dist/test/lookup.test.d.ts.map +1 -0
  45. package/dist/test/lookup.test.js +109 -0
  46. package/dist/test/lookup.test.js.map +1 -0
  47. package/dist/test/scalars.test.d.ts +2 -0
  48. package/dist/test/scalars.test.d.ts.map +1 -0
  49. package/dist/test/scalars.test.js +303 -0
  50. package/dist/test/scalars.test.js.map +1 -0
  51. package/dist/test/tools.test.d.ts +2 -0
  52. package/dist/test/tools.test.d.ts.map +1 -0
  53. package/dist/test/tools.test.js +49 -0
  54. package/dist/test/tools.test.js.map +1 -0
  55. package/dist/test/typed-json.test.d.ts +2 -0
  56. package/dist/test/typed-json.test.d.ts.map +1 -0
  57. package/dist/test/typed-json.test.js +75 -0
  58. package/dist/test/typed-json.test.js.map +1 -0
  59. package/dist/test/unions.test.d.ts +2 -0
  60. package/dist/test/unions.test.d.ts.map +1 -0
  61. package/dist/test/unions.test.js +84 -0
  62. package/dist/test/unions.test.js.map +1 -0
  63. package/dist/test/util/setup.d.ts +7 -0
  64. package/dist/test/util/setup.d.ts.map +1 -0
  65. package/dist/test/util/setup.js +60 -0
  66. package/dist/test/util/setup.js.map +1 -0
  67. package/dist/test/where.test.d.ts +2 -0
  68. package/dist/test/where.test.d.ts.map +1 -0
  69. package/dist/test/where.test.js +127 -0
  70. package/dist/test/where.test.js.map +1 -0
  71. package/dist/tools.d.ts +1 -0
  72. package/dist/tools.d.ts.map +1 -0
  73. package/dist/util.d.ts +1 -0
  74. package/dist/util.d.ts.map +1 -0
  75. package/dist/where.d.ts +1 -0
  76. package/dist/where.d.ts.map +1 -0
  77. package/package.json +4 -3
  78. package/src/db.ts +83 -0
  79. package/src/gql/opencrud.ts +328 -0
  80. package/src/gql/schema.ts +337 -0
  81. package/src/main.ts +51 -0
  82. package/src/model.tools.ts +173 -0
  83. package/src/model.ts +125 -0
  84. package/src/orderBy.ts +105 -0
  85. package/src/queryBuilder.ts +785 -0
  86. package/src/relayConnection.ts +80 -0
  87. package/src/requestedFields.ts +246 -0
  88. package/src/resolver.ts +199 -0
  89. package/src/scalars.ts +247 -0
  90. package/src/server.ts +115 -0
  91. package/src/test/basic.test.ts +339 -0
  92. package/src/test/connection.test.ts +195 -0
  93. package/src/test/fts.test.ts +114 -0
  94. package/src/test/lists.test.ts +278 -0
  95. package/src/test/lookup.test.ts +111 -0
  96. package/src/test/scalars.test.ts +316 -0
  97. package/src/test/tools.test.ts +27 -0
  98. package/src/test/typed-json.test.ts +76 -0
  99. package/src/test/unions.test.ts +85 -0
  100. package/src/test/util/setup.ts +63 -0
  101. package/src/test/where.test.ts +135 -0
  102. package/src/tools.ts +33 -0
  103. package/src/util.ts +39 -0
  104. package/src/where.ts +110 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fts.test.d.ts","sourceRoot":"","sources":["../../src/test/fts.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const setup_1 = require("./util/setup");
4
+ function tsvector(columns) {
5
+ return columns.map(col => `setweight(to_tsvector('english', coalesce(${col}, '')), 'A')`).join(' || ');
6
+ }
7
+ describe('full text search', function () {
8
+ (0, setup_1.useDatabase)([
9
+ `create table foo (
10
+ id text primary key,
11
+ foo int,
12
+ comment text,
13
+ search_tsv tsvector generated always as ( ${tsvector(['comment'])} ) stored
14
+ )`,
15
+ `create table bar (
16
+ id text primary key,
17
+ bar text,
18
+ description text,
19
+ search_tsv tsvector generated always as ( ${tsvector(['bar', 'description'])} ) stored
20
+ )`,
21
+ `insert into foo (id, foo, comment) values ('1', 1, 'Some man greeted me with hello')`,
22
+ `insert into foo (id, foo, comment) values ('2', 2, 'Deeply buried lorem ipsum dolor sit amet, then comes baz')`,
23
+ `insert into foo (id, foo, comment) values ('3', 3, 'Lorem ipsum dolor sit amet')`,
24
+ `insert into bar (id, bar, description) values ('1', 'every bar is followed by baz. Baz!', 'Absolutely!')`,
25
+ `insert into bar (id, bar, description) values ('2', 'qux', 'Baz should be here! Baz! Baz! Baz!')`,
26
+ ]);
27
+ const client = (0, setup_1.useServer)(`
28
+ type Foo @entity {
29
+ id: ID!
30
+ foo: Int
31
+ comment: String @fulltext(query: "search")
32
+ }
33
+
34
+ type Bar @entity {
35
+ id: ID!
36
+ bar: String @fulltext(query: "search")
37
+ description: String @fulltext(query: "search")
38
+ }
39
+ `);
40
+ it('finds "hello" across entities in Foo.comment and highlights it', function () {
41
+ return client.test(`
42
+ query {
43
+ search(text: "hello") {
44
+ item {
45
+ ... on Foo { id, foo }
46
+ }
47
+ highlight
48
+ }
49
+ }
50
+ `, {
51
+ search: [{
52
+ item: { id: '1', foo: 1 },
53
+ highlight: 'Some man greeted me with <b>hello</b>'
54
+ }]
55
+ });
56
+ });
57
+ it('finds "absolute" across entities in Bar.description and highlights it', function () {
58
+ return client.test(`
59
+ query {
60
+ search(text: "absolute") {
61
+ item {
62
+ ... on Bar { id, bar }
63
+ }
64
+ highlight
65
+ }
66
+ }
67
+ `, {
68
+ search: [{
69
+ item: { id: '1', bar: 'every bar is followed by baz. Baz!' },
70
+ highlight: 'every bar is followed by baz. Baz!\n\n<b>Absolutely</b>!'
71
+ }]
72
+ });
73
+ });
74
+ it('finds and arranges "Baz"', function () {
75
+ return client.test(`
76
+ query {
77
+ search(text: "baz") {
78
+ item {
79
+ ... on Foo { id foo }
80
+ ... on Bar { id bar }
81
+ }
82
+ }
83
+ }
84
+ `, {
85
+ search: [
86
+ { item: { id: '2', bar: 'qux' } },
87
+ { item: { id: '1', bar: 'every bar is followed by baz. Baz!' } },
88
+ { item: { id: '2', foo: 2 } },
89
+ ]
90
+ });
91
+ });
92
+ it('supports where conditions', function () {
93
+ return client.test(`
94
+ query {
95
+ search(text: "baz" whereBar: {bar_eq: "qux"}) {
96
+ item {
97
+ ... on Foo { id foo }
98
+ ... on Bar { id bar }
99
+ }
100
+ }
101
+ }
102
+ `, {
103
+ search: [
104
+ { item: { id: '2', bar: 'qux' } },
105
+ { item: { id: '2', foo: 2 } }
106
+ ]
107
+ });
108
+ });
109
+ });
110
+ //# sourceMappingURL=fts.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fts.test.js","sourceRoot":"","sources":["../../src/test/fts.test.ts"],"names":[],"mappings":";;AAAA,wCAAmD;AAEnD,SAAS,QAAQ,CAAC,OAAiB;IAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,6CAA6C,GAAG,cAAc,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAC1G,CAAC;AAED,QAAQ,CAAC,kBAAkB,EAAE;IACzB,IAAA,mBAAW,EAAC;QACR;;;;wDAIgD,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC;UACnE;QACF;;;;wDAIgD,QAAQ,CAAC,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;UAC9E;QACF,sFAAsF;QACtF,gHAAgH;QAChH,kFAAkF;QAClF,0GAA0G;QAC1G,kGAAkG;KACrG,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,IAAA,iBAAS,EAAC;;;;;;;;;;;;KAYxB,CAAC,CAAA;IAEF,EAAE,CAAC,gEAAgE,EAAE;QACjE,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;;;;SASlB,EAAE;YACC,MAAM,EAAE,CAAC;oBACL,IAAI,EAAE,EAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAC;oBACvB,SAAS,EAAE,uCAAuC;iBACrD,CAAC;SACL,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uEAAuE,EAAE;QACxE,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;;;;SASlB,EAAE;YACC,MAAM,EAAE,CAAC;oBACL,IAAI,EAAE,EAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,oCAAoC,EAAC;oBAC1D,SAAS,EAAE,0DAA0D;iBACxE,CAAC;SACL,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0BAA0B,EAAE;QAC3B,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;;;;SASlB,EAAE;YACC,MAAM,EAAE;gBACJ,EAAC,IAAI,EAAE,EAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAC,EAAC;gBAC7B,EAAC,IAAI,EAAE,EAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,oCAAoC,EAAC,EAAC;gBAC5D,EAAC,IAAI,EAAE,EAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAC,EAAC;aAC5B;SACJ,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2BAA2B,EAAE;QAC5B,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;;;;SASlB,EAAE;YACC,MAAM,EAAE;gBACJ,EAAC,IAAI,EAAE,EAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAC,EAAC;gBAC7B,EAAC,IAAI,EAAE,EAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAC,EAAC;aAC5B;SACJ,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=lists.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lists.test.d.ts","sourceRoot":"","sources":["../../src/test/lists.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,266 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const setup_1 = require("./util/setup");
4
+ describe('lists', function () {
5
+ (0, setup_1.useDatabase)([
6
+ `create table lists (
7
+ id text primary key,
8
+ int_array integer[],
9
+ bigint_array numeric[],
10
+ enum_array text[],
11
+ datetime_array timestamptz[],
12
+ bytes_array bytea[],
13
+ list_of_list_of_int jsonb,
14
+ list_of_json_objects jsonb
15
+ )`,
16
+ `insert into lists (id, int_array) values ('1', '{1, 2, 3}')`,
17
+ `insert into lists (id, int_array) values ('2', '{4, 5, 6}')`,
18
+ `insert into lists (id, int_array) values ('20', '{7, 8}')`,
19
+ `insert into lists (id, bigint_array) values ('3', '{1000000000000000000000000000, 2000000000000000000000000000}')`,
20
+ `insert into lists (id, bigint_array) values ('4', '{3000000000000000000000000000, 4000000000000000000000000000}')`,
21
+ `insert into lists (id, list_of_list_of_int) values ('5', '[[1, 2], [3, 4], [5]]'::jsonb)`,
22
+ `insert into lists (id, list_of_json_objects) values ('6', '[{"foo": 1, "bar": 2}, {"foo": 3, "bar": 4}]'::jsonb)`,
23
+ `insert into lists (id, datetime_array) values ('7', array['2020-01-01T00:00:00Z', '2021-01-01T00:00:00Z']::timestamptz[])`,
24
+ `insert into lists (id, datetime_array) values ('70', array['2020-01-01T00:00:00Z', '2022-01-01T00:00:00Z']::timestamptz[])`,
25
+ `insert into lists (id, bytes_array) values ('8', array['hello', 'world']::bytea[])`,
26
+ `insert into lists (id, bytes_array) values ('9', array['hello', 'big', 'world']::bytea[])`,
27
+ `insert into lists (id, enum_array) values ('10', array['A', 'B', 'C'])`,
28
+ `insert into lists (id, enum_array) values ('11', array['C', 'D'])`,
29
+ `insert into lists (id, enum_array) values ('12', array['A', 'D'])`,
30
+ ]);
31
+ const client = (0, setup_1.useServer)(`
32
+ type Lists @entity {
33
+ intArray: [Int!]
34
+ enumArray: [Enum!]
35
+ bigintArray: [BigInt!]
36
+ datetimeArray: [DateTime!]
37
+ bytesArray: [Bytes!]
38
+ listOfListOfInt: [[Int]]
39
+ listOfJsonObjects: [Foo!]
40
+ }
41
+
42
+ enum Enum {
43
+ A B C D E F
44
+ }
45
+
46
+ type Foo {
47
+ foo: Int
48
+ bar: Int
49
+ }
50
+ `);
51
+ describe('integer arrays', function () {
52
+ it('outputs correctly', function () {
53
+ return client.test(`
54
+ query {
55
+ lists(where: {id_in: ["1", "2"]} orderBy: id_ASC) {
56
+ intArray
57
+ }
58
+ }
59
+ `, {
60
+ lists: [
61
+ { intArray: [1, 2, 3] },
62
+ { intArray: [4, 5, 6] }
63
+ ]
64
+ });
65
+ });
66
+ it('support where conditions', function () {
67
+ return client.test(`
68
+ query {
69
+ all: lists(where: {intArray_containsAll: [1, 3]} orderBy: id_ASC) {
70
+ id
71
+ }
72
+ any: lists(where: {intArray_containsAny: [4, 7]} orderBy: id_ASC) {
73
+ id
74
+ }
75
+ none: lists(where: {intArray_containsNone: 5} orderBy: id_ASC) {
76
+ id
77
+ }
78
+ nothing: lists(where: {intArray_containsNone: [1, 4, 7]} orderBy: id_ASC) {
79
+ id
80
+ }
81
+ }
82
+ `, {
83
+ all: [{ id: '1' }],
84
+ any: [{ id: '2' }, { id: '20' }],
85
+ none: [{ id: '1' }, { id: '20' }],
86
+ nothing: []
87
+ });
88
+ });
89
+ });
90
+ describe('enum arrays', function () {
91
+ it('outputs correctly', function () {
92
+ return client.test(`
93
+ query {
94
+ lists(where: {id_in: ["10", "11", "12"]} orderBy: id_ASC) {
95
+ id
96
+ enumArray
97
+ }
98
+ }
99
+ `, {
100
+ lists: [
101
+ { id: '10', enumArray: ['A', 'B', 'C'] },
102
+ { id: '11', enumArray: ['C', 'D'] },
103
+ { id: '12', enumArray: ['A', 'D'] }
104
+ ]
105
+ });
106
+ });
107
+ it('supports where conditions', function () {
108
+ return client.test(`
109
+ query {
110
+ all : lists(where: {enumArray_containsAll: [A, B]} orderBy: id_ASC) { id }
111
+ any : lists(where: {enumArray_containsAny: D} orderBy: id_ASC) { id }
112
+ none: lists(where: {enumArray_containsNone: A} orderBy: id_ASC) { id }
113
+ }
114
+ `, {
115
+ all: [{ id: '10' }],
116
+ any: [{ id: '11' }, { id: '12' }],
117
+ none: [{ id: '11' }],
118
+ });
119
+ });
120
+ });
121
+ describe('big integer arrays', function () {
122
+ it('outputs correctly', function () {
123
+ return client.test(`
124
+ query {
125
+ lists(where: {id_in: ["3", "4"]} orderBy: id_ASC) {
126
+ bigintArray
127
+ }
128
+ }
129
+ `, {
130
+ lists: [
131
+ { bigintArray: ['1000000000000000000000000000', '2000000000000000000000000000'] },
132
+ { bigintArray: ['3000000000000000000000000000', '4000000000000000000000000000'] }
133
+ ]
134
+ });
135
+ });
136
+ it('supports where conditions', function () {
137
+ return client.test(`
138
+ query {
139
+ all: lists(where: {bigintArray_containsAll: 1000000000000000000000000000} orderBy: id_ASC) {
140
+ id
141
+ }
142
+ any: lists(where: {bigintArray_containsAny: [3000000000000000000000000000, 2000000000000000000000000000]} orderBy: id_ASC) {
143
+ id
144
+ }
145
+ none: lists(where: {bigintArray_containsNone: "2000000000000000000000000000"} orderBy: id_ASC) {
146
+ id
147
+ }
148
+ }
149
+ `, {
150
+ all: [{ id: '3' }],
151
+ any: [{ id: '3' }, { id: '4' }],
152
+ none: [{ id: '4' }]
153
+ });
154
+ });
155
+ });
156
+ describe('date-time arrays', function () {
157
+ it('outputs correctly', function () {
158
+ return client.test(`
159
+ query {
160
+ lists(where: {id_eq: "7"}) {
161
+ datetimeArray
162
+ }
163
+ }
164
+ `, {
165
+ lists: [{
166
+ datetimeArray: [
167
+ '2020-01-01T00:00:00.000Z',
168
+ '2021-01-01T00:00:00.000Z'
169
+ ]
170
+ }]
171
+ });
172
+ });
173
+ it('supports where conditions', function () {
174
+ return client.test(`
175
+ query {
176
+ all: lists(where: {datetimeArray_containsAll: ["2020-01-01T00:00:00Z", "2022-01-01T00:00:00Z"]} orderBy: id_ASC) {
177
+ id
178
+ }
179
+ any: lists(where: {datetimeArray_containsAny: ["2020-01-01T00:00:00Z", "2022-01-01T00:00:00Z"]} orderBy: id_ASC) {
180
+ id
181
+ }
182
+ none: lists(where: {datetimeArray_containsNone: ["2024-01-01T00:00:00Z", "2022-01-01T00:00:00Z"]} orderBy: id_ASC) {
183
+ id
184
+ }
185
+ }
186
+ `, {
187
+ all: [{ id: '70' }],
188
+ any: [{ id: '7' }, { id: '70' }],
189
+ none: [{ id: '7' }]
190
+ });
191
+ });
192
+ });
193
+ describe('bytes array', function () {
194
+ it('outputs correctly', function () {
195
+ return client.test(`
196
+ query {
197
+ lists(where: {id_eq: "8"}) {
198
+ bytesArray
199
+ }
200
+ }
201
+ `, {
202
+ lists: [{
203
+ bytesArray: [
204
+ '0x68656c6c6f',
205
+ '0x776f726c64'
206
+ ]
207
+ }]
208
+ });
209
+ });
210
+ it('supports where conditions', function () {
211
+ return client.test(`
212
+ query {
213
+ all: lists(where: {bytesArray_containsAll: ["0x68656c6c6f", "0x626967"]} orderBy: id_ASC) {
214
+ id
215
+ }
216
+ any: lists(where: {bytesArray_containsAny: "0x776f726c64"} orderBy: id_ASC) {
217
+ id
218
+ }
219
+ none: lists(where: {bytesArray_containsNone: ["0x626967", "0xaa"]} orderBy: id_ASC) {
220
+ id
221
+ }
222
+ }
223
+ `, {
224
+ all: [{ id: '9' }],
225
+ any: [{ id: '8' }, { id: '9' }],
226
+ none: [{ id: '8' }],
227
+ });
228
+ });
229
+ });
230
+ describe('json lists', function () {
231
+ it('outputs list of list of integers', function () {
232
+ return client.test(`
233
+ query {
234
+ lists(where: {id_eq: "5"}) {
235
+ listOfListOfInt
236
+ }
237
+ }
238
+ `, {
239
+ lists: [
240
+ { listOfListOfInt: [[1, 2], [3, 4], [5]] }
241
+ ]
242
+ });
243
+ });
244
+ it('outputs list of json objects', function () {
245
+ return client.test(`
246
+ query {
247
+ lists(where: {id_eq: "6"}) {
248
+ listOfJsonObjects {
249
+ foo
250
+ }
251
+ }
252
+ }
253
+ `, {
254
+ lists: [
255
+ {
256
+ listOfJsonObjects: [
257
+ { foo: 1 },
258
+ { foo: 3 }
259
+ ]
260
+ }
261
+ ]
262
+ });
263
+ });
264
+ });
265
+ });
266
+ //# sourceMappingURL=lists.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lists.test.js","sourceRoot":"","sources":["../../src/test/lists.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=lookup.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lookup.test.d.ts","sourceRoot":"","sources":["../../src/test/lookup.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const setup_1 = require("./util/setup");
4
+ describe('lookup test', function () {
5
+ (0, setup_1.useDatabase)([
6
+ `create table issue (id text primary key)`,
7
+ `create table issue_payment (id text primary key, issue_id text not null unique, amount numeric)`,
8
+ `create table issue_cancellation (id text primary key, issue_id text not null unique, height int)`,
9
+ `insert into issue (id) values ('1')`,
10
+ `insert into issue (id) values ('2')`,
11
+ `insert into issue (id) values ('3')`,
12
+ `insert into issue_payment (id, issue_id, amount) values ('1', '1', 2)`,
13
+ `insert into issue_payment (id, issue_id, amount) values ('2', '2', 1)`,
14
+ `insert into issue_cancellation (id, issue_id, height) values ('3', '3', 10)`,
15
+ ]);
16
+ const client = (0, setup_1.useServer)(`
17
+ type Issue @entity {
18
+ id: ID!
19
+ payment: IssuePayment @derivedFrom(field: "issue")
20
+ cancellation: IssueCancellation @derivedFrom(field: "issue")
21
+ }
22
+
23
+ type IssuePayment @entity {
24
+ id: ID!
25
+ issue: Issue! @unique
26
+ amount: Int!
27
+ }
28
+
29
+ type IssueCancellation @entity {
30
+ id: ID!
31
+ issue: Issue! @unique
32
+ height: Int!
33
+ }
34
+ `);
35
+ it('fetches correctly', function () {
36
+ return client.test(`
37
+ query {
38
+ issues(orderBy: [id_ASC]) {
39
+ id
40
+ payment {
41
+ amount
42
+ }
43
+ cancellation {
44
+ height
45
+ issue {
46
+ cancellation {
47
+ id
48
+ }
49
+ }
50
+ }
51
+ }
52
+ }
53
+ `, {
54
+ issues: [
55
+ {
56
+ id: '1',
57
+ payment: { amount: 2 },
58
+ cancellation: null
59
+ },
60
+ {
61
+ id: '2',
62
+ payment: { amount: 1 },
63
+ cancellation: null
64
+ },
65
+ {
66
+ id: '3',
67
+ payment: null,
68
+ cancellation: {
69
+ height: 10,
70
+ issue: {
71
+ cancellation: {
72
+ id: '3'
73
+ }
74
+ }
75
+ }
76
+ }
77
+ ]
78
+ });
79
+ });
80
+ it('supports sorting on lookup fields', function () {
81
+ return client.test(`
82
+ query {
83
+ issues(orderBy: [payment_amount_DESC]) {
84
+ id
85
+ }
86
+ }
87
+ `, {
88
+ issues: [
89
+ { id: '3' },
90
+ { id: '1' },
91
+ { id: '2' }
92
+ ]
93
+ });
94
+ });
95
+ it('supports where conditions', function () {
96
+ return client.test(`
97
+ query {
98
+ issues(where: {payment: {amount_gt: 1}}) {
99
+ id
100
+ }
101
+ }
102
+ `, {
103
+ issues: [
104
+ { id: '1' }
105
+ ]
106
+ });
107
+ });
108
+ });
109
+ //# sourceMappingURL=lookup.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lookup.test.js","sourceRoot":"","sources":["../../src/test/lookup.test.ts"],"names":[],"mappings":";;AAAA,wCAAmD;AAEnD,QAAQ,CAAC,aAAa,EAAE;IACpB,IAAA,mBAAW,EAAC;QACR,0CAA0C;QAC1C,iGAAiG;QACjG,kGAAkG;QAClG,qCAAqC;QACrC,qCAAqC;QACrC,qCAAqC;QACrC,uEAAuE;QACvE,uEAAuE;QACvE,6EAA6E;KAChF,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,IAAA,iBAAS,EAAC;;;;;;;;;;;;;;;;;;KAkBxB,CAAC,CAAA;IAEF,EAAE,CAAC,mBAAmB,EAAE;QACpB,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;SAiBlB,EAAE;YACC,MAAM,EAAE;gBACJ;oBACI,EAAE,EAAE,GAAG;oBACP,OAAO,EAAE,EAAC,MAAM,EAAE,CAAC,EAAC;oBACpB,YAAY,EAAE,IAAI;iBACrB;gBACD;oBACI,EAAE,EAAE,GAAG;oBACP,OAAO,EAAE,EAAC,MAAM,EAAE,CAAC,EAAC;oBACpB,YAAY,EAAE,IAAI;iBACrB;gBACD;oBACI,EAAE,EAAE,GAAG;oBACP,OAAO,EAAE,IAAI;oBACb,YAAY,EAAE;wBACV,MAAM,EAAE,EAAE;wBACV,KAAK,EAAE;4BACH,YAAY,EAAE;gCACV,EAAE,EAAE,GAAG;6BACV;yBACJ;qBACJ;iBACJ;aACJ;SACJ,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mCAAmC,EAAE;QACpC,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;SAMlB,EAAE;YACC,MAAM,EAAE;gBACJ,EAAC,EAAE,EAAE,GAAG,EAAC;gBACT,EAAC,EAAE,EAAE,GAAG,EAAC;gBACT,EAAC,EAAE,EAAE,GAAG,EAAC;aACZ;SACJ,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2BAA2B,EAAE;QAC5B,OAAO,MAAM,CAAC,IAAI,CAAC;;;;;;SAMlB,EAAE;YACC,MAAM,EAAE;gBACJ,EAAC,EAAE,EAAE,GAAG,EAAC;aACZ;SACJ,CAAC,CAAA;IACN,CAAC,CAAC,CAAA;AACN,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=scalars.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scalars.test.d.ts","sourceRoot":"","sources":["../../src/test/scalars.test.ts"],"names":[],"mappings":""}