@pothos/plugin-drizzle 0.0.1

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 (179) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/LICENSE +6 -0
  3. package/README.md +437 -0
  4. package/TODO.md +21 -0
  5. package/drizzle/meta/_journal.json +1 -0
  6. package/drizzle.config.ts +10 -0
  7. package/dts/drizzle-field-builder.d.ts +124 -0
  8. package/dts/drizzle-field-builder.d.ts.map +1 -0
  9. package/dts/field-builder.d.ts +2 -0
  10. package/dts/field-builder.d.ts.map +1 -0
  11. package/dts/global-types.d.ts +92 -0
  12. package/dts/global-types.d.ts.map +1 -0
  13. package/dts/index.d.ts +13 -0
  14. package/dts/index.d.ts.map +1 -0
  15. package/dts/interface-ref.d.ts +9 -0
  16. package/dts/interface-ref.d.ts.map +1 -0
  17. package/dts/model-loader.d.ts +44 -0
  18. package/dts/model-loader.d.ts.map +1 -0
  19. package/dts/node-ref.d.ts +5 -0
  20. package/dts/node-ref.d.ts.map +1 -0
  21. package/dts/object-ref.d.ts +14 -0
  22. package/dts/object-ref.d.ts.map +1 -0
  23. package/dts/schema-builder.d.ts +2 -0
  24. package/dts/schema-builder.d.ts.map +1 -0
  25. package/dts/types.d.ts +147 -0
  26. package/dts/types.d.ts.map +1 -0
  27. package/dts/utils/config.d.ts +7 -0
  28. package/dts/utils/config.d.ts.map +1 -0
  29. package/dts/utils/cursors.d.ts +58 -0
  30. package/dts/utils/cursors.d.ts.map +1 -0
  31. package/dts/utils/deep-equal.d.ts +2 -0
  32. package/dts/utils/deep-equal.d.ts.map +1 -0
  33. package/dts/utils/drizzle-graphql.d.ts +18 -0
  34. package/dts/utils/drizzle-graphql.d.ts.map +1 -0
  35. package/dts/utils/loader-map.d.ts +11 -0
  36. package/dts/utils/loader-map.d.ts.map +1 -0
  37. package/dts/utils/map-query.d.ts +30 -0
  38. package/dts/utils/map-query.d.ts.map +1 -0
  39. package/dts/utils/refs.d.ts +5 -0
  40. package/dts/utils/refs.d.ts.map +1 -0
  41. package/dts/utils/selections.d.ts +22 -0
  42. package/dts/utils/selections.d.ts.map +1 -0
  43. package/dts/utils/usage.d.ts +5 -0
  44. package/dts/utils/usage.d.ts.map +1 -0
  45. package/esm/drizzle-field-builder.d.ts +216 -0
  46. package/esm/drizzle-field-builder.d.ts.map +1 -0
  47. package/esm/field-builder.d.ts +2 -0
  48. package/esm/field-builder.d.ts.map +1 -0
  49. package/esm/global-types.d.ts +124 -0
  50. package/esm/global-types.d.ts.map +1 -0
  51. package/esm/index.d.ts +13 -0
  52. package/esm/index.d.ts.map +1 -0
  53. package/esm/interface-ref.d.ts +9 -0
  54. package/esm/interface-ref.d.ts.map +1 -0
  55. package/esm/model-loader.d.ts +45 -0
  56. package/esm/model-loader.d.ts.map +1 -0
  57. package/esm/node-ref.d.ts +5 -0
  58. package/esm/node-ref.d.ts.map +1 -0
  59. package/esm/object-ref.d.ts +14 -0
  60. package/esm/object-ref.d.ts.map +1 -0
  61. package/esm/package.json +3 -0
  62. package/esm/schema-builder.d.ts +2 -0
  63. package/esm/schema-builder.d.ts.map +1 -0
  64. package/esm/src/drizzle-field-builder.js +215 -0
  65. package/esm/src/drizzle-field-builder.js.map +1 -0
  66. package/esm/src/field-builder.js +77 -0
  67. package/esm/src/field-builder.js.map +1 -0
  68. package/esm/src/global-types.js +2 -0
  69. package/esm/src/global-types.js.map +1 -0
  70. package/esm/src/index.js +107 -0
  71. package/esm/src/index.js.map +1 -0
  72. package/esm/src/interface-ref.js +26 -0
  73. package/esm/src/interface-ref.js.map +1 -0
  74. package/esm/src/model-loader.js +168 -0
  75. package/esm/src/model-loader.js.map +1 -0
  76. package/esm/src/node-ref.js +4 -0
  77. package/esm/src/node-ref.js.map +1 -0
  78. package/esm/src/object-ref.js +38 -0
  79. package/esm/src/object-ref.js.map +1 -0
  80. package/esm/src/schema-builder.js +190 -0
  81. package/esm/src/schema-builder.js.map +1 -0
  82. package/esm/src/types.js +2 -0
  83. package/esm/src/types.js.map +1 -0
  84. package/esm/src/utils/config.js +15 -0
  85. package/esm/src/utils/config.js.map +1 -0
  86. package/esm/src/utils/cursors.js +316 -0
  87. package/esm/src/utils/cursors.js.map +1 -0
  88. package/esm/src/utils/deep-equal.js +44 -0
  89. package/esm/src/utils/deep-equal.js.map +1 -0
  90. package/esm/src/utils/drizzle-graphql.js +176 -0
  91. package/esm/src/utils/drizzle-graphql.js.map +1 -0
  92. package/esm/src/utils/loader-map.js +35 -0
  93. package/esm/src/utils/loader-map.js.map +1 -0
  94. package/esm/src/utils/map-query.js +284 -0
  95. package/esm/src/utils/map-query.js.map +1 -0
  96. package/esm/src/utils/refs.js +14 -0
  97. package/esm/src/utils/refs.js.map +1 -0
  98. package/esm/src/utils/selections.js +136 -0
  99. package/esm/src/utils/selections.js.map +1 -0
  100. package/esm/src/utils/usage.js +59 -0
  101. package/esm/src/utils/usage.js.map +1 -0
  102. package/esm/types.d.ts +161 -0
  103. package/esm/types.d.ts.map +1 -0
  104. package/esm/utils/config.d.ts +7 -0
  105. package/esm/utils/config.d.ts.map +1 -0
  106. package/esm/utils/cursors.d.ts +58 -0
  107. package/esm/utils/cursors.d.ts.map +1 -0
  108. package/esm/utils/deep-equal.d.ts +2 -0
  109. package/esm/utils/deep-equal.d.ts.map +1 -0
  110. package/esm/utils/drizzle-graphql.d.ts +18 -0
  111. package/esm/utils/drizzle-graphql.d.ts.map +1 -0
  112. package/esm/utils/loader-map.d.ts +11 -0
  113. package/esm/utils/loader-map.d.ts.map +1 -0
  114. package/esm/utils/map-query.d.ts +30 -0
  115. package/esm/utils/map-query.d.ts.map +1 -0
  116. package/esm/utils/refs.d.ts +5 -0
  117. package/esm/utils/refs.d.ts.map +1 -0
  118. package/esm/utils/selections.d.ts +22 -0
  119. package/esm/utils/selections.d.ts.map +1 -0
  120. package/esm/utils/usage.d.ts +5 -0
  121. package/esm/utils/usage.d.ts.map +1 -0
  122. package/lib/src/drizzle-field-builder.js +225 -0
  123. package/lib/src/drizzle-field-builder.js.map +1 -0
  124. package/lib/src/field-builder.js +82 -0
  125. package/lib/src/field-builder.js.map +1 -0
  126. package/lib/src/global-types.js +6 -0
  127. package/lib/src/global-types.js.map +1 -0
  128. package/lib/src/index.js +180 -0
  129. package/lib/src/index.js.map +1 -0
  130. package/lib/src/interface-ref.js +36 -0
  131. package/lib/src/interface-ref.js.map +1 -0
  132. package/lib/src/model-loader.js +176 -0
  133. package/lib/src/model-loader.js.map +1 -0
  134. package/lib/src/node-ref.js +15 -0
  135. package/lib/src/node-ref.js.map +1 -0
  136. package/lib/src/object-ref.js +56 -0
  137. package/lib/src/object-ref.js.map +1 -0
  138. package/lib/src/schema-builder.js +236 -0
  139. package/lib/src/schema-builder.js.map +1 -0
  140. package/lib/src/types.js +13 -0
  141. package/lib/src/types.js.map +1 -0
  142. package/lib/src/utils/config.js +26 -0
  143. package/lib/src/utils/config.js.map +1 -0
  144. package/lib/src/utils/cursors.js +362 -0
  145. package/lib/src/utils/cursors.js.map +1 -0
  146. package/lib/src/utils/deep-equal.js +55 -0
  147. package/lib/src/utils/deep-equal.js.map +1 -0
  148. package/lib/src/utils/drizzle-graphql.js +192 -0
  149. package/lib/src/utils/drizzle-graphql.js.map +1 -0
  150. package/lib/src/utils/loader-map.js +57 -0
  151. package/lib/src/utils/loader-map.js.map +1 -0
  152. package/lib/src/utils/map-query.js +308 -0
  153. package/lib/src/utils/map-query.js.map +1 -0
  154. package/lib/src/utils/refs.js +33 -0
  155. package/lib/src/utils/refs.js.map +1 -0
  156. package/lib/src/utils/selections.js +163 -0
  157. package/lib/src/utils/selections.js.map +1 -0
  158. package/lib/src/utils/usage.js +84 -0
  159. package/lib/src/utils/usage.js.map +1 -0
  160. package/package.json +66 -0
  161. package/src/drizzle-field-builder.ts +500 -0
  162. package/src/field-builder.ts +168 -0
  163. package/src/global-types.ts +481 -0
  164. package/src/index.ts +175 -0
  165. package/src/interface-ref.ts +24 -0
  166. package/src/model-loader.ts +235 -0
  167. package/src/node-ref.ts +8 -0
  168. package/src/object-ref.ts +51 -0
  169. package/src/schema-builder.ts +299 -0
  170. package/src/types.ts +640 -0
  171. package/src/utils/config.ts +28 -0
  172. package/src/utils/cursors.ts +446 -0
  173. package/src/utils/deep-equal.ts +58 -0
  174. package/src/utils/drizzle-graphql.ts +235 -0
  175. package/src/utils/loader-map.ts +51 -0
  176. package/src/utils/map-query.ts +582 -0
  177. package/src/utils/refs.ts +25 -0
  178. package/src/utils/selections.ts +209 -0
  179. package/src/utils/usage.ts +64 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/model-loader.ts"],"names":["inArray","sql","createContextCache","cacheKey","setLoaderMappings","selectionStateFromInfo","stateFromInfo","mergeSelection","selectionCompatible","selectionToQuery","getSchemaConfig","ModelLoader","forModel","modelName","builder","columns","model","sqlForModel","values","map","key","columnName","name","Error","length","getSelection","info","parentType","path","queryCache","has","selection","config","context","set","query","get","getSelectionForField","typeName","loadSelection","result","stageQuery","mappings","loadSelectionForField","returnType","entry","staged","state","models","createResolvablePromise","promise","initLoad","Map","add","nextTick","then","api","options","drizzle","client","findMany","where","selectSQL","keys","results","entries","find","row","table","primaryKey","every","resolve","reject","err","catch","setTimeout","constructor","Set","schema","join","getSQL","resolveFn","rejectFn","Promise"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { DrizzleObjectRef } from './object-ref.js';
2
+ export class DrizzleNodeRef extends DrizzleObjectRef {
3
+ }
4
+ //# sourceMappingURL=node-ref.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/node-ref.ts"],"names":["DrizzleObjectRef","DrizzleNodeRef"],"mappings":"AACA,SAASA,gBAAgB,QAAQ,eAAe;AAEhD,OAAO,MAAMC,uBAIHD;AAAmC"}
@@ -0,0 +1,38 @@
1
+ function _define_property(obj, key, value) {
2
+ if (key in obj) {
3
+ Object.defineProperty(obj, key, {
4
+ value: value,
5
+ enumerable: true,
6
+ configurable: true,
7
+ writable: true
8
+ });
9
+ }
10
+ else {
11
+ obj[key] = value;
12
+ }
13
+ return obj;
14
+ }
15
+ import { abstractReturnShapeKey, brandWithType, ObjectRef, typeBrandKey } from '@pothos/core';
16
+ export const drizzleTableKey = Symbol.for("Pothos.drizzleTableKey");
17
+ let _drizzleTableKey = drizzleTableKey, _abstractReturnShapeKey = abstractReturnShapeKey;
18
+ export class DrizzleObjectRef extends ObjectRef {
19
+ addBrand(value) {
20
+ if (Array.isArray(value)) {
21
+ value.forEach((val) => void brandWithType(val, this.name));
22
+ return value;
23
+ }
24
+ brandWithType(value, this.name);
25
+ return value;
26
+ }
27
+ hasBrand(value) {
28
+ return typeof value === "object" && value !== null && typeBrandKey in value && value[typeBrandKey] === this.name;
29
+ }
30
+ constructor(name, tableName) {
31
+ super(name);
32
+ _define_property(this, _drizzleTableKey, void 0);
33
+ _define_property(this, _abstractReturnShapeKey, void 0);
34
+ _define_property(this, "tableName", void 0);
35
+ this.tableName = tableName;
36
+ }
37
+ }
38
+ //# sourceMappingURL=object-ref.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/object-ref.ts"],"names":["abstractReturnShapeKey","brandWithType","ObjectRef","typeBrandKey","drizzleTableKey","Symbol","for","DrizzleObjectRef","addBrand","value","Array","isArray","forEach","val","name","hasBrand","constructor","tableName"],"mappings":";;;;;;;;;;;;;AAAA,SACEA,sBAAsB,EACtBC,aAAa,EACbC,SAAS,EAETC,YAAY,QACP,eAAe;AAGtB,OAAO,MAAMC,kBAAkBC,OAAOC,GAAG,CAAC,0BAA0B;IAOjEF,mBAAAA,iBAEAJ,0BAAAA;AAPH,OAAO,MAAMO,yBAIHL;IAaRM,SACEC,KAAQ,EAC4D;QACpE,IAAIC,MAAMC,OAAO,CAACF,QAAQ;YACxBA,MAAMG,OAAO,CAAC,CAACC,MAAQ,KAAKZ,cAAcY,KAAK,IAAI,CAACC,IAAI;YAExD,OAAOL;QACT;QAEAR,cAAcQ,OAAO,IAAI,CAACK,IAAI;QAE9B,OAAOL;IACT;IAEAM,SAASN,KAAc,EAAE;QACvB,OACE,OAAOA,UAAU,YACjBA,UAAU,QACVN,gBAAgBM,SAChB,AAACA,KAAsC,CAACN,aAAa,KAAK,IAAI,CAACW,IAAI;IAEvE;IA3BAE,YAAYF,IAAY,EAAEG,SAAiB,CAAE;QAC3C,KAAK,CAACH;QAPR,uBAACV,kBAAD,KAAA;QAEA,uBAACJ,yBAAD,KAAA;QAEAiB,uBAAAA,aAAAA,KAAAA;QAKE,IAAI,CAACA,SAAS,GAAGA;IACnB;AAwBF"}
@@ -0,0 +1,190 @@
1
+ import SchemaBuilder, { brandWithType, completeValue, PothosError } from '@pothos/core';
2
+ import { DrizzleObjectFieldBuilder } from './drizzle-field-builder.js';
3
+ import { getRefFromModel } from './utils/refs.js';
4
+ import { DrizzleObjectRef } from './object-ref.js';
5
+ import { getColumnParser, getColumnSerializer } from './utils/cursors.js';
6
+ import { DrizzleNodeRef } from './node-ref.js';
7
+ import { ModelLoader } from './model-loader.js';
8
+ import { DrizzleInterfaceRef } from './interface-ref.js';
9
+ const schemaBuilderProto = SchemaBuilder.prototype;
10
+ schemaBuilderProto.drizzleObject = function drizzleObject(table, { select, fields, ...options }) {
11
+ var _this_options_drizzle_client___schema;
12
+ var _options_variant, _ref;
13
+ const name = (_ref = (_options_variant = options.variant) !== null && _options_variant !== void 0 ? _options_variant : options.name) !== null && _ref !== void 0 ? _ref : table;
14
+ const ref = options.variant ? new DrizzleObjectRef(options.variant, name) : getRefFromModel(table, this, "object");
15
+ ref.name = name !== null && name !== void 0 ? name : table;
16
+ this.objectType(ref, {
17
+ ...options,
18
+ extensions: {
19
+ ...options.extensions,
20
+ pothosDrizzleModel: table,
21
+ pothosDrizzleTable: (_this_options_drizzle_client___schema = this.options.drizzle.client._.schema) === null || _this_options_drizzle_client___schema === void 0 ? void 0 : _this_options_drizzle_client___schema[table],
22
+ pothosDrizzleSelect: select !== null && select !== void 0 ? select : {},
23
+ pothosDrizzleLoader: ModelLoader.forModel(table, this)
24
+ },
25
+ name,
26
+ fields: fields ? () => fields(new DrizzleObjectFieldBuilder(ref.name, this, table)) : undefined
27
+ });
28
+ return ref;
29
+ };
30
+ schemaBuilderProto.drizzleInterface = function drizzleInterface(table, { select, fields, ...options }) {
31
+ var _this_options_drizzle_client___schema;
32
+ var _options_name;
33
+ const name = (_options_name = options.name) !== null && _options_name !== void 0 ? _options_name : table;
34
+ const ref = options.variant ? new DrizzleInterfaceRef(options.variant, name) : getRefFromModel(table, this, "interface");
35
+ ref.name = name !== null && name !== void 0 ? name : table;
36
+ this.interfaceType(ref, {
37
+ ...options,
38
+ extensions: {
39
+ ...options.extensions,
40
+ pothosDrizzleModel: table,
41
+ pothosDrizzleTable: (_this_options_drizzle_client___schema = this.options.drizzle.client._.schema) === null || _this_options_drizzle_client___schema === void 0 ? void 0 : _this_options_drizzle_client___schema[table],
42
+ pothosDrizzleSelect: select !== null && select !== void 0 ? select : {},
43
+ pothosDrizzleLoader: ModelLoader.forModel(table, this)
44
+ },
45
+ name,
46
+ fields: fields ? () => fields(new DrizzleObjectFieldBuilder(ref.name, this, table, "Interface")) : undefined
47
+ });
48
+ return ref;
49
+ };
50
+ schemaBuilderProto.drizzleNode = function drizzleNode(table, { id: { column, ...idOptions }, name, variant, ...options }) {
51
+ var _this_nodeInterfaceRef, _this;
52
+ const tableConfig = this.options.drizzle.client._.schema[table];
53
+ const idColumn = typeof column === "function" ? column(tableConfig.columns) : column;
54
+ const idColumns = Array.isArray(idColumn) ? idColumn : [
55
+ idColumn
56
+ ];
57
+ const interfaceRef = (_this_nodeInterfaceRef = (_this = this).nodeInterfaceRef) === null || _this_nodeInterfaceRef === void 0 ? void 0 : _this_nodeInterfaceRef.call(_this);
58
+ const resolve = getColumnSerializer(idColumns);
59
+ const idParser = getColumnParser(idColumns);
60
+ var _ref;
61
+ const typeName = (_ref = variant !== null && variant !== void 0 ? variant : name) !== null && _ref !== void 0 ? _ref : table;
62
+ const nodeRef = new DrizzleNodeRef(typeName, table);
63
+ const modelLoader = ModelLoader.forModel(table, this, idColumns);
64
+ if (!interfaceRef) {
65
+ throw new PothosError("builder.drizzleNode requires @pothos/plugin-relay to be installed");
66
+ }
67
+ const extendedOptions = {
68
+ ...options,
69
+ name,
70
+ variant,
71
+ interfaces: [
72
+ interfaceRef
73
+ ],
74
+ loadWithoutCache: async (id, context, info) => {
75
+ const record = await modelLoader(context).loadSelectionForField(info, idParser(id), typeName);
76
+ if (record) {
77
+ brandWithType(record, typeName);
78
+ }
79
+ return record;
80
+ }
81
+ };
82
+ const ref = this.drizzleObject(table, extendedOptions);
83
+ if (options.interfaces) {
84
+ ref.addInterfaces(options.interfaces);
85
+ }
86
+ this.configStore.onTypeConfig(ref, (nodeConfig) => {
87
+ var _this_options_relayOptions;
88
+ var _this_options_relayOptions_idFieldName;
89
+ this.objectField(ref, (_this_options_relayOptions_idFieldName = (_this_options_relayOptions = this.options.relayOptions) === null || _this_options_relayOptions === void 0 ? void 0 : _this_options_relayOptions.idFieldName) !== null && _this_options_relayOptions_idFieldName !== void 0 ? _this_options_relayOptions_idFieldName : "id", (t) => {
90
+ var _this_options_relayOptions;
91
+ return t.globalID({
92
+ ...(_this_options_relayOptions = this.options.relayOptions) === null || _this_options_relayOptions === void 0 ? void 0 : _this_options_relayOptions.idFieldOptions,
93
+ ...idOptions,
94
+ nullable: false,
95
+ args: {},
96
+ resolve: (parent, args, context, info) => completeValue(resolve(parent), (id) => ({
97
+ type: nodeConfig.name,
98
+ id
99
+ }))
100
+ });
101
+ });
102
+ });
103
+ this.configStore.associateParamWithRef(nodeRef, ref);
104
+ return nodeRef;
105
+ };
106
+ schemaBuilderProto.drizzleObjectField = function drizzleObjectField(type, fieldName, field) {
107
+ const ref = typeof type === "string" ? getRefFromModel(type, this) : type;
108
+ this.configStore.onTypeConfig(ref, ({ name }) => {
109
+ this.configStore.addFields(ref, () => ({
110
+ [fieldName]: field(new DrizzleObjectFieldBuilder(name, this, ref.tableName))
111
+ }));
112
+ });
113
+ };
114
+ schemaBuilderProto.drizzleInterfaceField = function drizzleInterfaceField(type, fieldName, field) {
115
+ const ref = typeof type === "string" ? getRefFromModel(type, this) : type;
116
+ this.configStore.onTypeConfig(ref, ({ name }) => {
117
+ this.configStore.addFields(ref, () => ({
118
+ [fieldName]: field(new DrizzleObjectFieldBuilder(name, this, ref.tableName, "Interface"))
119
+ }));
120
+ });
121
+ };
122
+ schemaBuilderProto.drizzleObjectFields = function drizzleObjectFields(type, fields) {
123
+ const ref = typeof type === "string" ? getRefFromModel(type, this) : type;
124
+ this.configStore.onTypeConfig(ref, ({ name }) => {
125
+ this.configStore.addFields(ref, () => fields(new DrizzleObjectFieldBuilder(name, this, ref.tableName)));
126
+ });
127
+ };
128
+ schemaBuilderProto.drizzleInterfaceFields = function drizzleInterfaceFields(type, fields) {
129
+ const ref = typeof type === "string" ? getRefFromModel(type, this) : type;
130
+ this.configStore.onTypeConfig(ref, ({ name }) => {
131
+ this.configStore.addFields(ref, () => fields(new DrizzleObjectFieldBuilder(name, this, ref.tableName, "Interface")));
132
+ });
133
+ };
134
+ schemaBuilderProto.drizzleGraphQLOrderBy = function drizzleGraphQLOrderBy(table, type, options) {
135
+ var _this_options_drizzle_client___schema;
136
+ return this.addGraphQLInput(type, {
137
+ ...options,
138
+ extensions: {
139
+ ...options === null || options === void 0 ? void 0 : options.extensions,
140
+ drizzleGraphQL: {
141
+ inputType: "orderBy",
142
+ table,
143
+ tableConfig: (_this_options_drizzle_client___schema = this.options.drizzle.client._.schema) === null || _this_options_drizzle_client___schema === void 0 ? void 0 : _this_options_drizzle_client___schema[table]
144
+ }
145
+ }
146
+ });
147
+ };
148
+ schemaBuilderProto.drizzleGraphQLFilters = function drizzleGraphQLFilters(table, type, options) {
149
+ var _this_options_drizzle_client___schema;
150
+ return this.addGraphQLInput(type, {
151
+ ...options,
152
+ extensions: {
153
+ ...options === null || options === void 0 ? void 0 : options.extensions,
154
+ drizzleGraphQL: {
155
+ inputType: "filters",
156
+ table,
157
+ tableConfig: (_this_options_drizzle_client___schema = this.options.drizzle.client._.schema) === null || _this_options_drizzle_client___schema === void 0 ? void 0 : _this_options_drizzle_client___schema[table]
158
+ }
159
+ }
160
+ });
161
+ };
162
+ schemaBuilderProto.drizzleGraphQLInsert = function drizzleGraphQLInsert(table, type, options) {
163
+ var _this_options_drizzle_client___schema;
164
+ return this.addGraphQLInput(type, {
165
+ ...options,
166
+ extensions: {
167
+ ...options === null || options === void 0 ? void 0 : options.extensions,
168
+ drizzleGraphQL: {
169
+ inputType: "insert",
170
+ table,
171
+ tableConfig: (_this_options_drizzle_client___schema = this.options.drizzle.client._.schema) === null || _this_options_drizzle_client___schema === void 0 ? void 0 : _this_options_drizzle_client___schema[table]
172
+ }
173
+ }
174
+ });
175
+ };
176
+ schemaBuilderProto.drizzleGraphQLUpdate = function drizzleGraphQLUpdate(table, type, options) {
177
+ var _this_options_drizzle_client___schema;
178
+ return this.addGraphQLInput(type, {
179
+ ...options,
180
+ extensions: {
181
+ ...options === null || options === void 0 ? void 0 : options.extensions,
182
+ drizzleGraphQL: {
183
+ inputType: "update",
184
+ table,
185
+ tableConfig: (_this_options_drizzle_client___schema = this.options.drizzle.client._.schema) === null || _this_options_drizzle_client___schema === void 0 ? void 0 : _this_options_drizzle_client___schema[table]
186
+ }
187
+ }
188
+ });
189
+ };
190
+ //# sourceMappingURL=schema-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/schema-builder.ts"],"names":["SchemaBuilder","brandWithType","completeValue","PothosError","DrizzleObjectFieldBuilder","getRefFromModel","DrizzleObjectRef","getColumnParser","getColumnSerializer","DrizzleNodeRef","ModelLoader","DrizzleInterfaceRef","schemaBuilderProto","prototype","drizzleObject","table","select","fields","options","name","variant","ref","objectType","extensions","pothosDrizzleModel","pothosDrizzleTable","drizzle","client","_","schema","pothosDrizzleSelect","pothosDrizzleLoader","forModel","undefined","drizzleInterface","interfaceType","drizzleNode","id","column","idOptions","tableConfig","idColumn","columns","idColumns","Array","isArray","interfaceRef","nodeInterfaceRef","resolve","idParser","typeName","nodeRef","modelLoader","extendedOptions","interfaces","loadWithoutCache","context","info","record","loadSelectionForField","addInterfaces","configStore","onTypeConfig","nodeConfig","objectField","relayOptions","idFieldName","t","globalID","idFieldOptions","nullable","args","parent","type","associateParamWithRef","drizzleObjectField","fieldName","field","addFields","tableName","drizzleInterfaceField","drizzleObjectFields","drizzleInterfaceFields","drizzleGraphQLOrderBy","addGraphQLInput","drizzleGraphQL","inputType","drizzleGraphQLFilters","drizzleGraphQLInsert","drizzleGraphQLUpdate"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export const drizzleTableName = Symbol.for("Pothos.drizzleTableName");
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/types.ts"],"names":["drizzleTableName","Symbol","for"],"mappings":"AAkDA,OAAO,MAAMA,mBAAmBC,OAAOC,GAAG,CAAC,2BAA2B"}
@@ -0,0 +1,15 @@
1
+ import { createContextCache } from '@pothos/core';
2
+ const cache = createContextCache((config) => {
3
+ const dbToSchema = Object.values(config.schema).reduce((acc, table) => {
4
+ acc[table.dbName] = table;
5
+ return acc;
6
+ }, {});
7
+ return {
8
+ dbToSchema,
9
+ ...config
10
+ };
11
+ });
12
+ export function getSchemaConfig(builder) {
13
+ return cache(builder.options.drizzle.client._);
14
+ }
15
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/config.ts"],"names":["createContextCache","cache","config","dbToSchema","Object","values","schema","reduce","acc","table","dbName","getSchemaConfig","builder","options","drizzle","client","_"],"mappings":"AAAA,SAASA,kBAAkB,QAAqB,eAAe;AAM/D,MAAMC,QAAQD,mBACZ,CAACE;IACC,MAAMC,aAAaC,OAAOC,MAAM,CAACH,OAAOI,MAAM,EAAEC,MAAM,CACpD,CAACC,KAAKC;QACJD,GAAG,CAACC,MAAMC,MAAM,CAAC,GAAGD;QACpB,OAAOD;IACT,GACA,CAAC;IAGH,OAAO;QACLL;QACA,GAAGD,MAAM;IACX;AACF;AAGF,OAAO,SAASS,gBACdC,OAA+C;IAE/C,OAAOX,MAAMW,QAAQC,OAAO,CAACC,OAAO,CAACC,MAAM,CAACC,CAAC;AAC/C"}
@@ -0,0 +1,316 @@
1
+ /* eslint-disable no-nested-ternary */ import { decodeBase64, encodeBase64, PothosValidationError } from '@pothos/core';
2
+ import { getOperators, getOrderByOperators } from 'drizzle-orm';
3
+ import { queryFromInfo } from './map-query.js';
4
+ const DEFAULT_MAX_SIZE = 100;
5
+ const DEFAULT_SIZE = 20;
6
+ export function formatCursorChunk(value) {
7
+ if (value instanceof Date) {
8
+ return `D:${String(Number(value))}`;
9
+ }
10
+ switch (typeof value) {
11
+ case "number":
12
+ return `N:${value}`;
13
+ case "string":
14
+ return `S:${value}`;
15
+ case "bigint":
16
+ return `I:${value}`;
17
+ default:
18
+ throw new PothosValidationError(`Unsupported cursor type ${typeof value}`);
19
+ }
20
+ }
21
+ export function formatDrizzleCursor(record, fields) {
22
+ return getCursorFormatter(fields)(record);
23
+ }
24
+ export function getColumnSerializer(fields) {
25
+ if (fields.length === 0) {
26
+ throw new PothosValidationError("Column serializer must have at least one field");
27
+ }
28
+ return (value) => {
29
+ if (fields.length > 1) {
30
+ return `J:${JSON.stringify(fields.map((col) => value[col.name]))}`;
31
+ }
32
+ return `${formatCursorChunk(value[fields[0].name])}`;
33
+ };
34
+ }
35
+ export function getCursorFormatter(fields) {
36
+ if (fields.length === 0) {
37
+ throw new PothosValidationError("Cursor must have at least one field");
38
+ }
39
+ const serializer = getColumnSerializer(fields);
40
+ return (value) => {
41
+ return encodeBase64(`DC:${serializer(value)}`);
42
+ };
43
+ }
44
+ export function parseDrizzleCursor(cursor) {
45
+ if (typeof cursor !== "string") {
46
+ throw new PothosValidationError("Cursor must be a string");
47
+ }
48
+ try {
49
+ const decoded = decodeBase64(cursor);
50
+ if (!decoded.startsWith("DC:")) {
51
+ throw new PothosValidationError("Invalid cursor");
52
+ }
53
+ return parseSerializedDrizzleColumn(decoded.slice(3));
54
+ }
55
+ catch {
56
+ throw new PothosValidationError(`Invalid cursor: ${cursor}`);
57
+ }
58
+ }
59
+ export function parseSerializedDrizzleColumn(value) {
60
+ if (typeof value !== "string") {
61
+ throw new PothosValidationError("value must be a string");
62
+ }
63
+ try {
64
+ const [, type, rawValue] = value.match(/^(S|N|D|J|I):(.*)/);
65
+ switch (type) {
66
+ case "S":
67
+ return rawValue;
68
+ case "N":
69
+ return Number.parseInt(rawValue, 10);
70
+ case "D":
71
+ return new Date(Number.parseInt(rawValue, 10));
72
+ case "J":
73
+ return JSON.parse(rawValue);
74
+ case "I":
75
+ return BigInt(rawValue);
76
+ default:
77
+ throw new PothosValidationError(`Invalid cursor type ${type}`);
78
+ }
79
+ }
80
+ catch {
81
+ throw new PothosValidationError(`Invalid serialized data: ${value}`);
82
+ }
83
+ }
84
+ export function parseID(id, dataType) {
85
+ if (!id) {
86
+ return id;
87
+ }
88
+ switch (dataType) {
89
+ case "String":
90
+ return id;
91
+ case "Int":
92
+ return Number.parseInt(id, 10);
93
+ case "BigInt":
94
+ return BigInt(id);
95
+ case "Boolean":
96
+ return id !== "false";
97
+ case "Float":
98
+ case "Decimal":
99
+ return Number.parseFloat(id);
100
+ case "DateTime":
101
+ return new Date(id);
102
+ case "Json":
103
+ return JSON.parse(id);
104
+ case "Byte":
105
+ return Buffer.from(id, "base64");
106
+ default:
107
+ return id;
108
+ }
109
+ }
110
+ export function getColumnParser(fields) {
111
+ if (fields.length === 0) {
112
+ throw new PothosValidationError("Column parser must have at least one field");
113
+ }
114
+ return (value) => {
115
+ const parsed = parseSerializedDrizzleColumn(value);
116
+ if (fields.length === 1) {
117
+ return {
118
+ [fields[0].name]: parsed
119
+ };
120
+ }
121
+ if (!Array.isArray(parsed)) {
122
+ throw new PothosValidationError(`Expected compound cursor to contain an array, but got ${parsed}`);
123
+ }
124
+ const record = {};
125
+ fields.forEach((field, i) => {
126
+ record[field.name] = parsed[i];
127
+ });
128
+ return record;
129
+ };
130
+ }
131
+ export function getCursorParser(fields) {
132
+ if (fields.length === 0) {
133
+ throw new PothosValidationError("Cursor must have at least one field");
134
+ }
135
+ return (cursor) => {
136
+ const parsed = parseDrizzleCursor(cursor);
137
+ if (fields.length === 1) {
138
+ return {
139
+ [fields[0].name]: parsed
140
+ };
141
+ }
142
+ if (!Array.isArray(parsed)) {
143
+ throw new PothosValidationError(`Expected compound cursor to contain an array, but got ${parsed}`);
144
+ }
145
+ const record = {};
146
+ fields.forEach((field, i) => {
147
+ record[field.name] = parsed[i];
148
+ });
149
+ return record;
150
+ };
151
+ }
152
+ const orderByOps = getOrderByOperators();
153
+ function parseOrderBy(orderBy, invert) {
154
+ if (!Array.isArray(orderBy)) {
155
+ return parseOrderBy([
156
+ orderBy
157
+ ], invert);
158
+ }
159
+ const asc = invert ? "desc" : "asc";
160
+ const desc = invert ? "asc" : "desc";
161
+ const normalized = orderBy.map((field) => {
162
+ if (typeof field === "object" && "asc" in field) {
163
+ return {
164
+ direction: asc,
165
+ column: field.asc
166
+ };
167
+ }
168
+ else if (typeof field === "object" && "desc" in field) {
169
+ return {
170
+ direction: desc,
171
+ column: field.desc
172
+ };
173
+ }
174
+ return {
175
+ direction: asc,
176
+ column: field
177
+ };
178
+ });
179
+ return {
180
+ normalized,
181
+ columns: normalized.map((field) => field.column),
182
+ sql: normalized.map((field) => orderByOps[field.direction](field.column))
183
+ };
184
+ }
185
+ const ops = getOperators();
186
+ export function drizzleCursorConnectionQuery({ args, ctx, maxSize = DEFAULT_MAX_SIZE, defaultSize = DEFAULT_SIZE, orderBy, where }) {
187
+ const { before, after, first, last } = args;
188
+ if (first != null && first < 0) {
189
+ throw new PothosValidationError("Argument \"first\" must be a non-negative integer");
190
+ }
191
+ if (last != null && last < 0) {
192
+ throw new PothosValidationError("Argument \"last\" must be a non-negative integer");
193
+ }
194
+ if (before && after) {
195
+ throw new PothosValidationError("Arguments \"before\" and \"after\" are not supported at the same time");
196
+ }
197
+ if (before != null && first != null) {
198
+ throw new PothosValidationError("Arguments \"before\" and \"first\" are not supported at the same time");
199
+ }
200
+ if (after != null && last != null) {
201
+ throw new PothosValidationError("Arguments \"after\" and \"last\" are not supported at the same time");
202
+ }
203
+ const cursor = before !== null && before !== void 0 ? before : after;
204
+ const maxSizeForConnection = typeof maxSize === "function" ? maxSize(args, ctx) : maxSize;
205
+ const defaultSizeForConnection = typeof defaultSize === "function" ? defaultSize(args, ctx) : defaultSize;
206
+ var _ref;
207
+ let limit = Math.min((_ref = first !== null && first !== void 0 ? first : last) !== null && _ref !== void 0 ? _ref : defaultSizeForConnection, maxSizeForConnection) + 1;
208
+ if (before !== null && before !== void 0 ? before : last) {
209
+ limit = -limit;
210
+ }
211
+ const parsedOrderBy = parseOrderBy(orderBy, limit < 0);
212
+ const columns = {};
213
+ parsedOrderBy.columns.forEach((column) => {
214
+ columns[column.name] = true;
215
+ });
216
+ let whereClauses = where ? [
217
+ where
218
+ ] : [];
219
+ if (cursor) {
220
+ const cursorParser = getCursorParser(parsedOrderBy.columns);
221
+ const parsedCursor = cursorParser(cursor);
222
+ whereClauses.push(ops.or(...parsedOrderBy.normalized.map(({ direction, column }, index) => {
223
+ const compare = direction === "asc" ? ops.gt(column, parsedCursor[column.name]) : ops.lt(column, parsedCursor[column.name]);
224
+ if (index === 0) {
225
+ return compare;
226
+ }
227
+ return ops.and(...parsedOrderBy.normalized.slice(0, index).map(({ column: c }) => ops.eq(c, parsedCursor[c.name])), compare);
228
+ })));
229
+ }
230
+ return {
231
+ cursorColumns: parsedOrderBy.columns,
232
+ columns,
233
+ orderBy: parsedOrderBy.sql,
234
+ limit,
235
+ offset: cursor ? 1 : 0,
236
+ where: ops.and(...whereClauses)
237
+ };
238
+ }
239
+ export function wrapConnectionResult(results, args, limit, cursor, resolveNode) {
240
+ var _edges_, _edges_1;
241
+ const gotFullResults = results.length === Math.abs(limit);
242
+ const hasNextPage = args.before ? true : args.last ? false : gotFullResults;
243
+ var _args_before;
244
+ const hasPreviousPage = args.after ? true : ((_args_before = args.before) !== null && _args_before !== void 0 ? _args_before : args.last) ? gotFullResults : false;
245
+ const nodes = gotFullResults ? results.slice(limit < 0 ? 1 : 0, limit < 0 ? results.length : -1) : results;
246
+ const connection = {
247
+ args,
248
+ edges: [],
249
+ pageInfo: {
250
+ startCursor: null,
251
+ endCursor: null,
252
+ hasPreviousPage,
253
+ hasNextPage
254
+ }
255
+ };
256
+ const edges = nodes.map((value, index) => value == null ? null : resolveNode ? {
257
+ connection,
258
+ ...value,
259
+ cursor: cursor(value),
260
+ node: resolveNode(value)
261
+ } : {
262
+ connection,
263
+ cursor: cursor(value),
264
+ node: value
265
+ });
266
+ if (args.last && !args.first) {
267
+ edges.reverse();
268
+ }
269
+ connection.edges = edges;
270
+ var _edges__cursor;
271
+ connection.pageInfo.startCursor = (_edges__cursor = (_edges_ = edges[0]) === null || _edges_ === void 0 ? void 0 : _edges_.cursor) !== null && _edges__cursor !== void 0 ? _edges__cursor : null;
272
+ var _edges__cursor1;
273
+ connection.pageInfo.endCursor = (_edges__cursor1 = (_edges_1 = edges[edges.length - 1]) === null || _edges_1 === void 0 ? void 0 : _edges_1.cursor) !== null && _edges__cursor1 !== void 0 ? _edges__cursor1 : null;
274
+ return connection;
275
+ }
276
+ export async function resolveDrizzleCursorConnection(table, info, typeName, config, options, resolve) {
277
+ let query;
278
+ let formatter;
279
+ const results = await resolve((q) => {
280
+ const { cursorColumns, ...connectionQuery } = drizzleCursorConnectionQuery({
281
+ ...options,
282
+ orderBy: q.orderBy ? typeof q.orderBy === "function" ? q.orderBy(table.columns) : q.orderBy : table.primaryKey
283
+ });
284
+ formatter = getCursorFormatter(cursorColumns);
285
+ const where = typeof q.where === "function" ? q.where(table.columns, getOperators()) : q.where;
286
+ query = queryFromInfo({
287
+ context: options.ctx,
288
+ info,
289
+ select: {
290
+ ...connectionQuery,
291
+ columns: {
292
+ ...q.columns,
293
+ ...connectionQuery.columns
294
+ },
295
+ where: ops.and(connectionQuery.where, where)
296
+ },
297
+ paths: [
298
+ [
299
+ "nodes"
300
+ ],
301
+ [
302
+ "edges",
303
+ "node"
304
+ ]
305
+ ],
306
+ typeName,
307
+ config
308
+ });
309
+ return query;
310
+ });
311
+ if (!results) {
312
+ return results;
313
+ }
314
+ return wrapConnectionResult(results, options.args, query.limit, formatter);
315
+ }
316
+ //# sourceMappingURL=cursors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/utils/cursors.ts"],"names":["decodeBase64","encodeBase64","PothosValidationError","getOperators","getOrderByOperators","queryFromInfo","DEFAULT_MAX_SIZE","DEFAULT_SIZE","formatCursorChunk","value","Date","String","Number","formatDrizzleCursor","record","fields","getCursorFormatter","getColumnSerializer","length","JSON","stringify","map","col","name","serializer","parseDrizzleCursor","cursor","decoded","startsWith","parseSerializedDrizzleColumn","slice","type","rawValue","match","parseInt","parse","BigInt","parseID","id","dataType","parseFloat","Buffer","from","getColumnParser","parsed","Array","isArray","forEach","field","i","getCursorParser","orderByOps","parseOrderBy","orderBy","invert","asc","desc","normalized","direction","column","columns","sql","ops","drizzleCursorConnectionQuery","args","ctx","maxSize","defaultSize","where","before","after","first","last","maxSizeForConnection","defaultSizeForConnection","limit","Math","min","parsedOrderBy","whereClauses","cursorParser","parsedCursor","push","or","index","compare","gt","lt","and","c","eq","cursorColumns","offset","wrapConnectionResult","results","resolveNode","edges","gotFullResults","abs","hasNextPage","hasPreviousPage","nodes","connection","pageInfo","startCursor","endCursor","node","reverse","resolveDrizzleCursorConnection","table","info","typeName","config","options","resolve","query","formatter","q","connectionQuery","primaryKey","context","select","paths"],"mappings":"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"}