@smartive/graphql-magic 9.1.2 → 10.0.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 (120) hide show
  1. package/.eslintrc +2 -10
  2. package/.github/workflows/release.yml +1 -1
  3. package/.gqmrc.json +6 -0
  4. package/CHANGELOG.md +2 -2
  5. package/README.md +1 -1
  6. package/dist/bin/gqm.cjs +684 -330
  7. package/dist/cjs/index.cjs +998 -554
  8. package/dist/esm/api/execute.js +1 -1
  9. package/dist/esm/api/execute.js.map +1 -1
  10. package/dist/esm/client/mutations.d.ts +2 -2
  11. package/dist/esm/client/mutations.js +5 -4
  12. package/dist/esm/client/mutations.js.map +1 -1
  13. package/dist/esm/client/queries.d.ts +12 -17
  14. package/dist/esm/client/queries.js +30 -50
  15. package/dist/esm/client/queries.js.map +1 -1
  16. package/dist/esm/context.d.ts +1 -2
  17. package/dist/esm/db/generate.d.ts +3 -3
  18. package/dist/esm/db/generate.js +31 -29
  19. package/dist/esm/db/generate.js.map +1 -1
  20. package/dist/esm/migrations/generate.d.ts +3 -4
  21. package/dist/esm/migrations/generate.js +114 -107
  22. package/dist/esm/migrations/generate.js.map +1 -1
  23. package/dist/esm/models/index.d.ts +1 -0
  24. package/dist/esm/models/index.js +1 -0
  25. package/dist/esm/models/index.js.map +1 -1
  26. package/dist/esm/models/model-definitions.d.ts +189 -0
  27. package/dist/esm/models/model-definitions.js +2 -0
  28. package/dist/esm/models/model-definitions.js.map +1 -0
  29. package/dist/esm/models/models.d.ts +128 -174
  30. package/dist/esm/models/models.js +411 -1
  31. package/dist/esm/models/models.js.map +1 -1
  32. package/dist/esm/models/mutation-hook.d.ts +2 -2
  33. package/dist/esm/models/utils.d.ts +35 -497
  34. package/dist/esm/models/utils.js +21 -144
  35. package/dist/esm/models/utils.js.map +1 -1
  36. package/dist/esm/permissions/check.d.ts +3 -3
  37. package/dist/esm/permissions/check.js +14 -7
  38. package/dist/esm/permissions/check.js.map +1 -1
  39. package/dist/esm/permissions/generate.js +6 -6
  40. package/dist/esm/permissions/generate.js.map +1 -1
  41. package/dist/esm/resolvers/filters.d.ts +8 -0
  42. package/dist/esm/resolvers/filters.js +28 -25
  43. package/dist/esm/resolvers/filters.js.map +1 -1
  44. package/dist/esm/resolvers/index.d.ts +1 -0
  45. package/dist/esm/resolvers/index.js +1 -0
  46. package/dist/esm/resolvers/index.js.map +1 -1
  47. package/dist/esm/resolvers/mutations.js +85 -21
  48. package/dist/esm/resolvers/mutations.js.map +1 -1
  49. package/dist/esm/resolvers/node.d.ts +13 -15
  50. package/dist/esm/resolvers/node.js +41 -36
  51. package/dist/esm/resolvers/node.js.map +1 -1
  52. package/dist/esm/resolvers/resolver.js +19 -49
  53. package/dist/esm/resolvers/resolver.js.map +1 -1
  54. package/dist/esm/resolvers/resolvers.d.ts +1 -8
  55. package/dist/esm/resolvers/resolvers.js +15 -7
  56. package/dist/esm/resolvers/resolvers.js.map +1 -1
  57. package/dist/esm/resolvers/selects.d.ts +3 -0
  58. package/dist/esm/resolvers/selects.js +50 -0
  59. package/dist/esm/resolvers/selects.js.map +1 -0
  60. package/dist/esm/resolvers/utils.d.ts +12 -4
  61. package/dist/esm/resolvers/utils.js +30 -22
  62. package/dist/esm/resolvers/utils.js.map +1 -1
  63. package/dist/esm/schema/generate.d.ts +4 -4
  64. package/dist/esm/schema/generate.js +122 -131
  65. package/dist/esm/schema/generate.js.map +1 -1
  66. package/dist/esm/schema/utils.d.ts +1 -1
  67. package/dist/esm/schema/utils.js +2 -1
  68. package/dist/esm/schema/utils.js.map +1 -1
  69. package/knexfile.ts +31 -0
  70. package/migrations/20230912185644_setup.ts +127 -0
  71. package/package.json +16 -14
  72. package/src/api/execute.ts +1 -1
  73. package/src/bin/gqm/gqm.ts +25 -23
  74. package/src/bin/gqm/parse-models.ts +5 -5
  75. package/src/bin/gqm/settings.ts +13 -4
  76. package/src/bin/gqm/static-eval.ts +5 -0
  77. package/src/bin/gqm/templates.ts +23 -3
  78. package/src/client/mutations.ts +11 -5
  79. package/src/client/queries.ts +43 -80
  80. package/src/context.ts +1 -2
  81. package/src/db/generate.ts +41 -41
  82. package/src/migrations/generate.ts +165 -146
  83. package/src/models/index.ts +1 -0
  84. package/src/models/model-definitions.ts +168 -0
  85. package/src/models/models.ts +510 -166
  86. package/src/models/mutation-hook.ts +2 -2
  87. package/src/models/utils.ts +53 -187
  88. package/src/permissions/check.ts +19 -11
  89. package/src/permissions/generate.ts +6 -6
  90. package/src/resolvers/filters.ts +44 -28
  91. package/src/resolvers/index.ts +1 -0
  92. package/src/resolvers/mutations.ts +98 -36
  93. package/src/resolvers/node.ts +79 -51
  94. package/src/resolvers/resolver.ts +20 -74
  95. package/src/resolvers/resolvers.ts +18 -7
  96. package/src/resolvers/selects.ts +77 -0
  97. package/src/resolvers/utils.ts +41 -25
  98. package/src/schema/generate.ts +106 -127
  99. package/src/schema/utils.ts +2 -1
  100. package/tests/api/__snapshots__/inheritance.spec.ts.snap +83 -0
  101. package/tests/api/inheritance.spec.ts +130 -0
  102. package/tests/generated/api/index.ts +1174 -0
  103. package/tests/generated/client/index.ts +1163 -0
  104. package/tests/generated/client/mutations.ts +109 -0
  105. package/tests/generated/db/index.ts +291 -0
  106. package/tests/generated/db/knex.ts +14 -0
  107. package/tests/generated/models.json +675 -0
  108. package/tests/generated/schema.graphql +325 -0
  109. package/tests/unit/__snapshots__/resolve.spec.ts.snap +23 -0
  110. package/tests/unit/queries.spec.ts +5 -5
  111. package/tests/unit/resolve.spec.ts +8 -8
  112. package/tests/utils/database/knex.ts +5 -13
  113. package/tests/utils/database/seed.ts +57 -18
  114. package/tests/utils/models.ts +62 -7
  115. package/tests/utils/server.ts +5 -5
  116. package/tsconfig.eslint.json +1 -0
  117. package/tests/unit/__snapshots__/generate.spec.ts.snap +0 -128
  118. package/tests/unit/generate.spec.ts +0 -8
  119. package/tests/utils/database/schema.ts +0 -64
  120. package/tests/utils/generate-migration.ts +0 -24
@@ -0,0 +1,130 @@
1
+ import { gql } from '../../src';
2
+ import { DELETE_REVIEW, RESTORE_REVIEW } from '../generated/client/mutations';
3
+ import { REVIEW_ID } from '../utils/database/seed';
4
+ import { withServer } from '../utils/server';
5
+
6
+ describe('inheritance', () => {
7
+ describe('queries', () => {
8
+ it('root type listQuery', async () => {
9
+ await withServer(async (request) => {
10
+ expect(
11
+ await request(gql`
12
+ query GetReactions {
13
+ reactions {
14
+ type
15
+ content
16
+ ... on Review {
17
+ rating
18
+ }
19
+ }
20
+ }
21
+ `)
22
+ ).toMatchSnapshot();
23
+ });
24
+ });
25
+
26
+ it('root type query', async () => {
27
+ await withServer(async (request) => {
28
+ expect(
29
+ await request(gql`
30
+ query GetReaction {
31
+ reaction(where: { id: "${REVIEW_ID}" }) {
32
+ type
33
+ content
34
+ ... on Review {
35
+ rating
36
+ }
37
+ }
38
+ }
39
+ `)
40
+ ).toMatchSnapshot();
41
+ });
42
+ });
43
+
44
+ it('sub type listQuery', async () => {
45
+ await withServer(async (request) => {
46
+ expect(
47
+ await request(gql`
48
+ query GetReviews {
49
+ reviews {
50
+ type
51
+ content
52
+ rating
53
+ }
54
+ }
55
+ `)
56
+ ).toMatchSnapshot();
57
+ });
58
+ });
59
+
60
+ it('sub type query', async () => {
61
+ await withServer(async (request) => {
62
+ expect(
63
+ await request(gql`
64
+ query GetReview {
65
+ review(where: { id: "${REVIEW_ID}" }) {
66
+ type
67
+ content
68
+ rating
69
+ }
70
+ }
71
+ `)
72
+ ).toMatchSnapshot();
73
+ });
74
+ });
75
+
76
+ // TODO
77
+ // root type -> root type relation
78
+ // root type -> sub type relation
79
+ // sub type -> root type relation
80
+ // sub type -> sub type relation
81
+ // reverse relations...
82
+ // basically all schema possibilities...
83
+ });
84
+
85
+ describe('mutations', () => {
86
+ it('create', async () => {
87
+ await withServer(async (request) => {
88
+ expect(
89
+ await request(
90
+ gql`
91
+ mutation CreateReview($data: CreateReview!) {
92
+ createReview(data: $data) {
93
+ content
94
+ rating
95
+ }
96
+ }
97
+ `,
98
+ { data: { content: 'A review', rating: 5 } }
99
+ )
100
+ ).toMatchSnapshot();
101
+ });
102
+ });
103
+
104
+ it('update', async () => {
105
+ await withServer(async (request) => {
106
+ expect(
107
+ await request(
108
+ gql`
109
+ mutation UpdateReview($id: ID!, $data: UpdateReview!) {
110
+ updateReview(where: { id: $id }, data: $data) {
111
+ content
112
+ rating
113
+ }
114
+ }
115
+ `,
116
+ { id: REVIEW_ID, data: { content: 'A review', rating: 5 } }
117
+ )
118
+ ).toMatchSnapshot();
119
+ });
120
+ });
121
+
122
+ it('delete and restore', async () => {
123
+ await withServer(async (request) => {
124
+ expect(await request(DELETE_REVIEW, { id: REVIEW_ID })).toMatchSnapshot();
125
+
126
+ expect(await request(RESTORE_REVIEW, { id: REVIEW_ID })).toMatchSnapshot();
127
+ });
128
+ });
129
+ });
130
+ });