@smartive/graphql-magic 9.1.3 → 11.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 (124) 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 +1 -6
  5. package/README.md +1 -1
  6. package/dist/bin/gqm.cjs +676 -324
  7. package/dist/cjs/index.cjs +1016 -561
  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/errors.d.ts +1 -1
  21. package/dist/esm/errors.js +2 -2
  22. package/dist/esm/errors.js.map +1 -1
  23. package/dist/esm/migrations/generate.d.ts +3 -4
  24. package/dist/esm/migrations/generate.js +114 -107
  25. package/dist/esm/migrations/generate.js.map +1 -1
  26. package/dist/esm/models/index.d.ts +1 -0
  27. package/dist/esm/models/index.js +1 -0
  28. package/dist/esm/models/index.js.map +1 -1
  29. package/dist/esm/models/model-definitions.d.ts +189 -0
  30. package/dist/esm/models/model-definitions.js +2 -0
  31. package/dist/esm/models/model-definitions.js.map +1 -0
  32. package/dist/esm/models/models.d.ts +128 -174
  33. package/dist/esm/models/models.js +411 -1
  34. package/dist/esm/models/models.js.map +1 -1
  35. package/dist/esm/models/mutation-hook.d.ts +2 -2
  36. package/dist/esm/models/utils.d.ts +35 -497
  37. package/dist/esm/models/utils.js +21 -144
  38. package/dist/esm/models/utils.js.map +1 -1
  39. package/dist/esm/permissions/check.d.ts +3 -3
  40. package/dist/esm/permissions/check.js +19 -12
  41. package/dist/esm/permissions/check.js.map +1 -1
  42. package/dist/esm/permissions/generate.js +6 -6
  43. package/dist/esm/permissions/generate.js.map +1 -1
  44. package/dist/esm/resolvers/filters.d.ts +8 -0
  45. package/dist/esm/resolvers/filters.js +28 -25
  46. package/dist/esm/resolvers/filters.js.map +1 -1
  47. package/dist/esm/resolvers/index.d.ts +1 -0
  48. package/dist/esm/resolvers/index.js +1 -0
  49. package/dist/esm/resolvers/index.js.map +1 -1
  50. package/dist/esm/resolvers/mutations.js +85 -21
  51. package/dist/esm/resolvers/mutations.js.map +1 -1
  52. package/dist/esm/resolvers/node.d.ts +13 -15
  53. package/dist/esm/resolvers/node.js +41 -36
  54. package/dist/esm/resolvers/node.js.map +1 -1
  55. package/dist/esm/resolvers/resolver.js +19 -49
  56. package/dist/esm/resolvers/resolver.js.map +1 -1
  57. package/dist/esm/resolvers/resolvers.d.ts +1 -8
  58. package/dist/esm/resolvers/resolvers.js +15 -7
  59. package/dist/esm/resolvers/resolvers.js.map +1 -1
  60. package/dist/esm/resolvers/selects.d.ts +3 -0
  61. package/dist/esm/resolvers/selects.js +50 -0
  62. package/dist/esm/resolvers/selects.js.map +1 -0
  63. package/dist/esm/resolvers/utils.d.ts +12 -4
  64. package/dist/esm/resolvers/utils.js +30 -22
  65. package/dist/esm/resolvers/utils.js.map +1 -1
  66. package/dist/esm/schema/generate.d.ts +4 -4
  67. package/dist/esm/schema/generate.js +122 -131
  68. package/dist/esm/schema/generate.js.map +1 -1
  69. package/dist/esm/schema/utils.d.ts +1 -1
  70. package/dist/esm/schema/utils.js +2 -1
  71. package/dist/esm/schema/utils.js.map +1 -1
  72. package/knexfile.ts +31 -0
  73. package/migrations/20230912185644_setup.ts +127 -0
  74. package/package.json +16 -14
  75. package/src/api/execute.ts +1 -1
  76. package/src/bin/gqm/gqm.ts +16 -16
  77. package/src/bin/gqm/parse-models.ts +5 -5
  78. package/src/bin/gqm/settings.ts +13 -4
  79. package/src/bin/gqm/static-eval.ts +5 -0
  80. package/src/bin/gqm/templates.ts +23 -3
  81. package/src/client/mutations.ts +11 -5
  82. package/src/client/queries.ts +44 -81
  83. package/src/context.ts +1 -2
  84. package/src/db/generate.ts +41 -41
  85. package/src/errors.ts +2 -2
  86. package/src/migrations/generate.ts +165 -146
  87. package/src/models/index.ts +1 -0
  88. package/src/models/model-definitions.ts +168 -0
  89. package/src/models/models.ts +510 -166
  90. package/src/models/mutation-hook.ts +2 -2
  91. package/src/models/utils.ts +53 -187
  92. package/src/permissions/check.ts +34 -16
  93. package/src/permissions/generate.ts +6 -6
  94. package/src/resolvers/filters.ts +44 -28
  95. package/src/resolvers/index.ts +1 -0
  96. package/src/resolvers/mutations.ts +98 -36
  97. package/src/resolvers/node.ts +79 -51
  98. package/src/resolvers/resolver.ts +20 -74
  99. package/src/resolvers/resolvers.ts +18 -7
  100. package/src/resolvers/selects.ts +78 -0
  101. package/src/resolvers/utils.ts +41 -25
  102. package/src/schema/generate.ts +106 -127
  103. package/src/schema/utils.ts +2 -1
  104. package/tests/api/__snapshots__/inheritance.spec.ts.snap +83 -0
  105. package/tests/api/inheritance.spec.ts +130 -0
  106. package/tests/generated/api/index.ts +1174 -0
  107. package/tests/generated/client/index.ts +1163 -0
  108. package/tests/generated/client/mutations.ts +109 -0
  109. package/tests/generated/db/index.ts +291 -0
  110. package/tests/generated/db/knex.ts +14 -0
  111. package/tests/generated/models.json +675 -0
  112. package/tests/generated/schema.graphql +325 -0
  113. package/tests/unit/__snapshots__/resolve.spec.ts.snap +23 -0
  114. package/tests/unit/queries.spec.ts +5 -5
  115. package/tests/unit/resolve.spec.ts +8 -8
  116. package/tests/utils/database/knex.ts +5 -13
  117. package/tests/utils/database/seed.ts +57 -18
  118. package/tests/utils/models.ts +62 -7
  119. package/tests/utils/server.ts +5 -5
  120. package/tsconfig.eslint.json +1 -0
  121. package/tests/unit/__snapshots__/generate.spec.ts.snap +0 -128
  122. package/tests/unit/generate.spec.ts +0 -8
  123. package/tests/utils/database/schema.ts +0 -64
  124. 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
+ });