@pothos/plugin-drizzle 0.8.1 → 0.9.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 (122) hide show
  1. package/CHANGELOG.md +92 -0
  2. package/TODO.md +25 -4
  3. package/dts/connection-helpers.d.ts +32 -0
  4. package/dts/connection-helpers.d.ts.map +1 -0
  5. package/dts/drizzle-field-builder.d.ts +18 -53
  6. package/dts/drizzle-field-builder.d.ts.map +1 -1
  7. package/dts/global-types.d.ts +22 -41
  8. package/dts/global-types.d.ts.map +1 -1
  9. package/dts/index.d.ts +4 -2
  10. package/dts/index.d.ts.map +1 -1
  11. package/dts/interface-ref.d.ts +3 -2
  12. package/dts/interface-ref.d.ts.map +1 -1
  13. package/dts/model-loader.d.ts +3 -2
  14. package/dts/model-loader.d.ts.map +1 -1
  15. package/dts/node-ref.d.ts +1 -1
  16. package/dts/node-ref.d.ts.map +1 -1
  17. package/dts/object-ref.d.ts +2 -2
  18. package/dts/object-ref.d.ts.map +1 -1
  19. package/dts/types.d.ts +61 -41
  20. package/dts/types.d.ts.map +1 -1
  21. package/dts/utils/config.d.ts +4 -3
  22. package/dts/utils/config.d.ts.map +1 -1
  23. package/dts/utils/cursors.d.ts +13 -7
  24. package/dts/utils/cursors.d.ts.map +1 -1
  25. package/dts/utils/drizzle-graphql.d.ts +0 -17
  26. package/dts/utils/drizzle-graphql.d.ts.map +1 -1
  27. package/dts/utils/map-query.d.ts.map +1 -1
  28. package/dts/utils/selections.d.ts +5 -5
  29. package/dts/utils/selections.d.ts.map +1 -1
  30. package/esm/connection-helpers.d.ts +34 -0
  31. package/esm/connection-helpers.d.ts.map +1 -0
  32. package/esm/connection-helpers.js +74 -0
  33. package/esm/connection-helpers.js.map +1 -0
  34. package/esm/drizzle-field-builder.d.ts +18 -73
  35. package/esm/drizzle-field-builder.d.ts.map +1 -1
  36. package/esm/drizzle-field-builder.js +25 -14
  37. package/esm/drizzle-field-builder.js.map +1 -1
  38. package/esm/field-builder.js +2 -3
  39. package/esm/field-builder.js.map +1 -1
  40. package/esm/global-types.d.ts +35 -60
  41. package/esm/global-types.d.ts.map +1 -1
  42. package/esm/global-types.js.map +1 -1
  43. package/esm/index.d.ts +4 -2
  44. package/esm/index.d.ts.map +1 -1
  45. package/esm/index.js +70 -61
  46. package/esm/index.js.map +1 -1
  47. package/esm/interface-ref.d.ts +3 -2
  48. package/esm/interface-ref.d.ts.map +1 -1
  49. package/esm/interface-ref.js.map +1 -1
  50. package/esm/model-loader.d.ts +3 -2
  51. package/esm/model-loader.d.ts.map +1 -1
  52. package/esm/model-loader.js +17 -10
  53. package/esm/model-loader.js.map +1 -1
  54. package/esm/node-ref.d.ts +1 -1
  55. package/esm/node-ref.d.ts.map +1 -1
  56. package/esm/object-ref.d.ts +2 -2
  57. package/esm/object-ref.d.ts.map +1 -1
  58. package/esm/schema-builder.js +111 -65
  59. package/esm/schema-builder.js.map +1 -1
  60. package/esm/types.d.ts +61 -41
  61. package/esm/types.d.ts.map +1 -1
  62. package/esm/types.js.map +1 -1
  63. package/esm/utils/config.d.ts +4 -3
  64. package/esm/utils/config.d.ts.map +1 -1
  65. package/esm/utils/config.js +32 -15
  66. package/esm/utils/config.js.map +1 -1
  67. package/esm/utils/cursors.d.ts +13 -7
  68. package/esm/utils/cursors.d.ts.map +1 -1
  69. package/esm/utils/cursors.js +137 -63
  70. package/esm/utils/cursors.js.map +1 -1
  71. package/esm/utils/drizzle-graphql.d.ts +0 -17
  72. package/esm/utils/drizzle-graphql.d.ts.map +1 -1
  73. package/esm/utils/drizzle-graphql.js +230 -198
  74. package/esm/utils/drizzle-graphql.js.map +1 -1
  75. package/esm/utils/map-query.d.ts.map +1 -1
  76. package/esm/utils/map-query.js +9 -5
  77. package/esm/utils/map-query.js.map +1 -1
  78. package/esm/utils/selections.d.ts +5 -5
  79. package/esm/utils/selections.d.ts.map +1 -1
  80. package/esm/utils/selections.js +19 -18
  81. package/esm/utils/selections.js.map +1 -1
  82. package/lib/connection-helpers.js +85 -0
  83. package/lib/connection-helpers.js.map +1 -0
  84. package/lib/drizzle-field-builder.js +24 -13
  85. package/lib/drizzle-field-builder.js.map +1 -1
  86. package/lib/field-builder.js +2 -3
  87. package/lib/field-builder.js.map +1 -1
  88. package/lib/index.js +75 -60
  89. package/lib/index.js.map +1 -1
  90. package/lib/interface-ref.js.map +1 -1
  91. package/lib/model-loader.js +17 -10
  92. package/lib/model-loader.js.map +1 -1
  93. package/lib/schema-builder.js +111 -65
  94. package/lib/schema-builder.js.map +1 -1
  95. package/lib/types.js.map +1 -1
  96. package/lib/utils/config.js +31 -14
  97. package/lib/utils/config.js.map +1 -1
  98. package/lib/utils/cursors.js +135 -63
  99. package/lib/utils/cursors.js.map +1 -1
  100. package/lib/utils/drizzle-graphql.js +230 -221
  101. package/lib/utils/drizzle-graphql.js.map +1 -1
  102. package/lib/utils/map-query.js +9 -5
  103. package/lib/utils/map-query.js.map +1 -1
  104. package/lib/utils/selections.js +18 -17
  105. package/lib/utils/selections.js.map +1 -1
  106. package/package.json +14 -14
  107. package/src/connection-helpers.ts +184 -0
  108. package/src/drizzle-field-builder.ts +30 -26
  109. package/src/field-builder.ts +4 -7
  110. package/src/global-types.ts +112 -119
  111. package/src/index.ts +90 -68
  112. package/src/interface-ref.ts +7 -3
  113. package/src/model-loader.ts +32 -17
  114. package/src/node-ref.ts +1 -1
  115. package/src/object-ref.ts +2 -2
  116. package/src/schema-builder.ts +114 -111
  117. package/src/types.ts +95 -62
  118. package/src/utils/config.ts +39 -30
  119. package/src/utils/cursors.ts +134 -101
  120. package/src/utils/drizzle-graphql.ts +273 -274
  121. package/src/utils/map-query.ts +19 -7
  122. package/src/utils/selections.ts +34 -28
@@ -40,10 +40,9 @@ function selectionCompatible(state, selectionMap, ignoreQuery = false) {
40
40
  !selectionCompatible(state.with.get(key), value))) {
41
41
  return false;
42
42
  }
43
- const resolvedExtras = typeof extras === 'function' ? extras(state.table.columns, (0, _drizzleorm.getOperators)()) : extras;
44
- if (resolvedExtras && Object.entries(resolvedExtras).some(([key, value])=>{
45
- const sql = state.extras.get(key);
46
- return sql && (sql.sql !== value.sql || sql.fieldAlias !== value.fieldAlias);
43
+ if (extras && Object.entries(extras).some(([key, value])=>{
44
+ const existing = state.extras.get(key);
45
+ return existing && existing !== value;
47
46
  })) {
48
47
  return false;
49
48
  }
@@ -90,22 +89,24 @@ function createState(table, skipDeferredFragments, parent) {
90
89
  depth: parent ? parent.depth + 1 : 0
91
90
  };
92
91
  }
93
- function mergeSelection(config, state, { with: withSelection, extras, columns, ...query }) {
92
+ function mergeSelection(config, state, selection) {
93
+ const { with: withSelection, extras, columns, ...query } = typeof selection === 'boolean' ? {} : selection;
94
94
  if (withSelection) {
95
95
  for (const [key, value] of Object.entries(withSelection)){
96
96
  const relation = state.table.relations[key];
97
97
  if (!relation) {
98
98
  throw new _core.PothosValidationError(`Relation ${key} does not exist on ${state.table.dbName}`);
99
99
  }
100
- merge(config.dbToSchema[relation.referencedTableName], key, value);
100
+ const tableUniqueName = (0, _drizzleorm.getTableUniqueName)(relation.targetTable);
101
+ const tableName = config.relations.tableNamesMap[tableUniqueName];
102
+ merge(config.relations.tablesConfig[tableName], key, value);
101
103
  }
102
104
  }
103
105
  if (Object.keys(query).length > 0) {
104
106
  state.query = query;
105
107
  }
106
- const resolvedExtras = typeof extras === 'function' ? extras(state.table.columns, (0, _drizzleorm.getOperators)()) : extras;
107
- if (resolvedExtras) {
108
- for (const [key, value] of Object.entries(resolvedExtras)){
108
+ if (extras) {
109
+ for (const [key, value] of Object.entries(extras)){
109
110
  state.extras.set(key, value);
110
111
  }
111
112
  }
@@ -116,24 +117,23 @@ function mergeSelection(config, state, { with: withSelection, extras, columns, .
116
117
  for (const key of Object.keys(columns)){
117
118
  state.columns.add(key);
118
119
  }
119
- } else {
120
+ } else if (selection === true) {
120
121
  state.allColumns = true;
121
122
  }
122
123
  function merge(table, key, value) {
123
124
  if (!value) {
124
125
  return;
125
126
  }
126
- const selection = value === true ? {} : value;
127
127
  if (state.with.has(key)) {
128
- mergeSelection(config, state.with.get(key), selection);
128
+ mergeSelection(config, state.with.get(key), value);
129
129
  } else {
130
130
  const relatedState = createState(table, state.skipDeferredFragments, state);
131
- mergeSelection(config, relatedState, selection);
131
+ mergeSelection(config, relatedState, value);
132
132
  state.with.set(key, relatedState);
133
133
  }
134
134
  }
135
135
  }
136
- function selectionToQuery(state) {
136
+ function selectionToQuery(config, state) {
137
137
  const query = {
138
138
  ...state.query,
139
139
  with: {},
@@ -148,15 +148,16 @@ function selectionToQuery(state) {
148
148
  for (const key of state.columns){
149
149
  query.columns[key] = true;
150
150
  }
151
- for (const { name } of state.table.primaryKey){
152
- query.columns[name] = true;
151
+ for (const column of config.getPrimaryKey(state.table.tsName)){
152
+ const tsName = config.columnToTsName(column);
153
+ query.columns[tsName] = true;
153
154
  }
154
155
  }
155
156
  for (const [key, value] of state.extras){
156
157
  query.extras[key] = value;
157
158
  }
158
159
  state.with.forEach((sel, relation)=>{
159
- query.with[relation] = selectionToQuery(sel);
160
+ query.with[relation] = selectionToQuery(config, sel);
160
161
  });
161
162
  return query;
162
163
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/selections.ts"],"names":["createState","mergeSelection","mergeState","selectionCompatible","selectionToQuery","stateCompatible","state","selectionMap","ignoreQuery","Object","keys","query","length","with","withSelection","extras","columns","entries","some","key","value","has","get","resolvedExtras","table","getOperators","sql","fieldAlias","deepEqual","newState","name","relationState","allColumns","add","set","skipDeferredFragments","parent","Set","Map","mappings","depth","config","relation","relations","PothosValidationError","dbName","merge","dbToSchema","referencedTableName","selection","relatedState","primaryKey","forEach","sel"],"mappings":";;;;;;;;;;;IAuGgBA,WAAW;eAAXA;;IAmBAC,cAAc;eAAdA;;IAzCAC,UAAU;eAAVA;;IAvDAC,mBAAmB;eAAnBA;;IA2JAC,gBAAgB;eAAhBA;;IAlHAC,eAAe;eAAfA;;;sBAnEsB;4BAM/B;2BAEmB;AAkBnB,SAASF,oBACdG,KAAqB,EACrBC,YAAoC,EACpCC,cAAc,KAAK;IAEnB,IAAI,OAAOD,iBAAiB,WAAW;QACrC,OAAOC,eAAe,CAACD,gBAAgBE,OAAOC,IAAI,CAACJ,MAAMK,KAAK,EAAEC,MAAM,KAAK;IAC7E;IAEA,MAAM,EAAEC,MAAMC,aAAa,EAAEC,MAAM,EAAEC,OAAO,EAAE,GAAGL,OAAO,GAAGJ;IAE3D,IACEO,iBACAL,OAAOQ,OAAO,CAACH,eAAeI,IAAI,CAChC,CAAC,CAACC,KAAKC,MAAM,GACXA,SACAd,MAAMO,IAAI,CAACQ,GAAG,CAACF,QACf,+CAA+C;QAC/C,CAAChB,oBAAoBG,MAAMO,IAAI,CAACS,GAAG,CAACH,MAAOC,SAE/C;QACA,OAAO;IACT;IAEA,MAAMG,iBACJ,OAAOR,WAAW,aAAaA,OAAOT,MAAMkB,KAAK,CAACR,OAAO,EAAES,IAAAA,wBAAY,OAAMV;IAE/E,IACEQ,kBACAd,OAAOQ,OAAO,CAACM,gBAAgBL,IAAI,CAAC,CAAC,CAACC,KAAKC,MAAM;QAC/C,MAAMM,MAAMpB,MAAMS,MAAM,CAACO,GAAG,CAACH;QAE7B,OAAOO,OAAQA,CAAAA,IAAIA,GAAG,KAAKN,MAAMM,GAAG,IAAIA,IAAIC,UAAU,KAAKP,MAAMO,UAAU,AAAD;IAC5E,IACA;QACA,OAAO;IACT;IAEA,OAAOnB,eAAeoB,IAAAA,oBAAS,EAACtB,MAAMK,KAAK,EAAEA;AAC/C;AAEO,SAASN,gBACdC,KAAqB,EACrBuB,QAAwB,EACxBrB,cAAc,KAAK;IAEnB,KAAK,MAAM,CAACsB,MAAMC,cAAc,IAAIF,SAAShB,IAAI,CAAE;QACjD,IAAIP,MAAMO,IAAI,CAACQ,GAAG,CAACS,SAAS,CAACzB,gBAAgBC,MAAMO,IAAI,CAACS,GAAG,CAACQ,OAAQC,gBAAgB;YAClF,OAAO;QACT;IACF;IAEA,OAAOvB,eAAeoB,IAAAA,oBAAS,EAACtB,MAAMK,KAAK,EAAEkB,SAASlB,KAAK;AAC7D;AAEO,SAAST,WAAWI,KAAqB,EAAEuB,QAAwB;IACxE,KAAK,MAAM,CAACC,MAAMC,cAAc,IAAIF,SAAShB,IAAI,CAAE;QACjD,IAAIP,MAAMO,IAAI,CAACQ,GAAG,CAACS,OAAO;YACxB5B,WAAWI,MAAMO,IAAI,CAACS,GAAG,CAACQ,OAAQC;QACpC;IACF;IAEA,IAAI,CAACzB,MAAM0B,UAAU,EAAE;QACrB,IAAIH,SAASG,UAAU,EAAE;YACvB1B,MAAM0B,UAAU,GAAG;QACrB,OAAO;YACL,KAAK,MAAMF,QAAQD,SAASb,OAAO,CAAE;gBACnCV,MAAMU,OAAO,CAACiB,GAAG,CAACH;YACpB;QACF;IACF;IAEA,KAAK,MAAM,CAACA,MAAMV,MAAM,IAAIS,SAASd,MAAM,CAAE;QAC3CT,MAAMS,MAAM,CAACmB,GAAG,CAACJ,MAAMV;IACzB;AACF;AAEO,SAASpB,YACdwB,KAA4B,EAC5BW,qBAA8B,EAC9BC,MAAuB;IAEvB,OAAO;QACLZ;QACAW;QACAC;QACAzB,OAAO,CAAC;QACRK,SAAS,IAAIqB;QACbxB,MAAM,IAAIyB;QACVvB,QAAQ,IAAIuB;QACZC,UAAU,CAAC;QACXP,YAAY;QACZQ,OAAOJ,SAASA,OAAOI,KAAK,GAAG,IAAI;IACrC;AACF;AAEO,SAASvC,eACdwC,MAAiC,EACjCnC,KAAqB,EACrB,EAAEO,MAAMC,aAAa,EAAEC,MAAM,EAAEC,OAAO,EAAE,GAAGL,OAAqB;IAEhE,IAAIG,eAAe;QACjB,KAAK,MAAM,CAACK,KAAKC,MAAM,IAAIX,OAAOQ,OAAO,CAACH,eAAgB;YACxD,MAAM4B,WAAWpC,MAAMkB,KAAK,CAACmB,SAAS,CAACxB,IAAI;YAE3C,IAAI,CAACuB,UAAU;gBACb,MAAM,IAAIE,2BAAqB,CAAC,CAAC,SAAS,EAAEzB,IAAI,mBAAmB,EAAEb,MAAMkB,KAAK,CAACqB,MAAM,EAAE;YAC3F;YAEAC,MAAML,OAAOM,UAAU,CAACL,SAASM,mBAAmB,CAAC,EAAE7B,KAAKC;QAC9D;IACF;IAEA,IAAIX,OAAOC,IAAI,CAACC,OAAOC,MAAM,GAAG,GAAG;QACjCN,MAAMK,KAAK,GAAGA;IAChB;IAEA,MAAMY,iBACJ,OAAOR,WAAW,aAAaA,OAAOT,MAAMkB,KAAK,CAACR,OAAO,EAAES,IAAAA,wBAAY,OAAMV;IAE/E,IAAIQ,gBAAgB;QAClB,KAAK,MAAM,CAACJ,KAAKC,MAAM,IAAIX,OAAOQ,OAAO,CAACM,gBAAiB;YACzDjB,MAAMS,MAAM,CAACmB,GAAG,CAACf,KAAKC;QACxB;IACF;IAEA,IAAId,MAAM0B,UAAU,EAAE;QACpB;IACF;IAEA,IAAIhB,SAAS;QACX,KAAK,MAAMG,OAAOV,OAAOC,IAAI,CAACM,SAAU;YACtCV,MAAMU,OAAO,CAACiB,GAAG,CAACd;QACpB;IACF,OAAO;QACLb,MAAM0B,UAAU,GAAG;IACrB;IAEA,SAASc,MAAMtB,KAA4B,EAAEL,GAAW,EAAEC,KAA8B;QACtF,IAAI,CAACA,OAAO;YACV;QACF;QAEA,MAAM6B,YAAY7B,UAAU,OAAO,CAAC,IAAIA;QAExC,IAAId,MAAMO,IAAI,CAACQ,GAAG,CAACF,MAAM;YACvBlB,eAAewC,QAAQnC,MAAMO,IAAI,CAACS,GAAG,CAACH,MAAO8B;QAC/C,OAAO;YACL,MAAMC,eAAelD,YAAYwB,OAAOlB,MAAM6B,qBAAqB,EAAE7B;YACrEL,eAAewC,QAAQS,cAAcD;YACrC3C,MAAMO,IAAI,CAACqB,GAAG,CAACf,KAAK+B;QACtB;IACF;AACF;AAEO,SAAS9C,iBAAiBE,KAAqB;IACpD,MAAMK,QAA4D;QAChE,GAAGL,MAAMK,KAAK;QACdE,MAAM,CAAC;QACPG,SAAS,CAAC;QACVD,QAAQ,CAAC;IACX;IAEA,IAAIT,MAAM0B,UAAU,EAAE;QACpB,KAAK,MAAMb,OAAOV,OAAOC,IAAI,CAACJ,MAAMkB,KAAK,CAACR,OAAO,EAAG;YAClDL,MAAMK,OAAO,AAAC,CAACG,IAAI,GAAG;QACxB;IACF,OAAO;QACL,KAAK,MAAMA,OAAOb,MAAMU,OAAO,CAAE;YAC/BL,MAAMK,OAAO,AAAC,CAACG,IAAI,GAAG;QACxB;QACA,KAAK,MAAM,EAAEW,IAAI,EAAE,IAAIxB,MAAMkB,KAAK,CAAC2B,UAAU,CAAE;YAC7CxC,MAAMK,OAAO,AAAC,CAACc,KAAK,GAAG;QACzB;IACF;IAEA,KAAK,MAAM,CAACX,KAAKC,MAAM,IAAId,MAAMS,MAAM,CAAE;QACvCJ,MAAMI,MAAM,AAAC,CAACI,IAAI,GAAGC;IACvB;IAEAd,MAAMO,IAAI,CAACuC,OAAO,CAAC,CAACC,KAAKX;QACvB/B,MAAME,IAAI,AAAC,CAAC6B,SAAS,GAAGtC,iBAAiBiD;IAC3C;IAEA,OAAO1C;AACT"}
1
+ {"version":3,"sources":["../../src/utils/selections.ts"],"names":["createState","mergeSelection","mergeState","selectionCompatible","selectionToQuery","stateCompatible","state","selectionMap","ignoreQuery","Object","keys","query","length","with","withSelection","extras","columns","entries","some","key","value","has","get","existing","deepEqual","newState","name","relationState","allColumns","add","set","table","skipDeferredFragments","parent","Set","Map","mappings","depth","config","selection","relation","relations","PothosValidationError","dbName","tableUniqueName","getTableUniqueName","targetTable","tableName","tableNamesMap","merge","tablesConfig","relatedState","column","getPrimaryKey","tsName","columnToTsName","forEach","sel"],"mappings":";;;;;;;;;;;IAqGgBA,WAAW;eAAXA;;IAmBAC,cAAc;eAAdA;;IAzCAC,UAAU;eAAVA;;IAnDAC,mBAAmB;eAAnBA;;IA0JAC,gBAAgB;eAAhBA;;IArHAC,eAAe;eAAfA;;;sBAjEsB;4BAQ/B;2BAEmB;AAkBnB,SAASF,oBACdG,KAAqB,EACrBC,YAAoC,EACpCC,cAAc,KAAK;IAEnB,IAAI,OAAOD,iBAAiB,WAAW;QACrC,OAAOC,eAAe,CAACD,gBAAgBE,OAAOC,IAAI,CAACJ,MAAMK,KAAK,EAAEC,MAAM,KAAK;IAC7E;IAEA,MAAM,EAAEC,MAAMC,aAAa,EAAEC,MAAM,EAAEC,OAAO,EAAE,GAAGL,OAAO,GAAGJ;IAE3D,IACEO,iBACAL,OAAOQ,OAAO,CAACH,eAAeI,IAAI,CAChC,CAAC,CAACC,KAAKC,MAAM,GACXA,SACAd,MAAMO,IAAI,CAACQ,GAAG,CAACF,QACf,+CAA+C;QAC/C,CAAChB,oBAAoBG,MAAMO,IAAI,CAACS,GAAG,CAACH,MAAOC,SAE/C;QACA,OAAO;IACT;IAEA,IACEL,UACAN,OAAOQ,OAAO,CAACF,QAAQG,IAAI,CAAC,CAAC,CAACC,KAAKC,MAAM;QACvC,MAAMG,WAAWjB,MAAMS,MAAM,CAACO,GAAG,CAACH;QAClC,OAAOI,YAAYA,aAAaH;IAClC,IACA;QACA,OAAO;IACT;IAEA,OAAOZ,eAAegB,IAAAA,oBAAS,EAAClB,MAAMK,KAAK,EAAEA;AAC/C;AAEO,SAASN,gBACdC,KAAqB,EACrBmB,QAAwB,EACxBjB,cAAc,KAAK;IAEnB,KAAK,MAAM,CAACkB,MAAMC,cAAc,IAAIF,SAASZ,IAAI,CAAE;QACjD,IAAIP,MAAMO,IAAI,CAACQ,GAAG,CAACK,SAAS,CAACrB,gBAAgBC,MAAMO,IAAI,CAACS,GAAG,CAACI,OAAQC,gBAAgB;YAClF,OAAO;QACT;IACF;IAEA,OAAOnB,eAAegB,IAAAA,oBAAS,EAAClB,MAAMK,KAAK,EAAEc,SAASd,KAAK;AAC7D;AAEO,SAAST,WAAWI,KAAqB,EAAEmB,QAAwB;IACxE,KAAK,MAAM,CAACC,MAAMC,cAAc,IAAIF,SAASZ,IAAI,CAAE;QACjD,IAAIP,MAAMO,IAAI,CAACQ,GAAG,CAACK,OAAO;YACxBxB,WAAWI,MAAMO,IAAI,CAACS,GAAG,CAACI,OAAQC;QACpC;IACF;IAEA,IAAI,CAACrB,MAAMsB,UAAU,EAAE;QACrB,IAAIH,SAASG,UAAU,EAAE;YACvBtB,MAAMsB,UAAU,GAAG;QACrB,OAAO;YACL,KAAK,MAAMF,QAAQD,SAAST,OAAO,CAAE;gBACnCV,MAAMU,OAAO,CAACa,GAAG,CAACH;YACpB;QACF;IACF;IAEA,KAAK,MAAM,CAACA,MAAMN,MAAM,IAAIK,SAASV,MAAM,CAAE;QAC3CT,MAAMS,MAAM,CAACe,GAAG,CAACJ,MAAMN;IACzB;AACF;AAEO,SAASpB,YACd+B,KAA4B,EAC5BC,qBAA8B,EAC9BC,MAAuB;IAEvB,OAAO;QACLF;QACAC;QACAC;QACAtB,OAAO,CAAC;QACRK,SAAS,IAAIkB;QACbrB,MAAM,IAAIsB;QACVpB,QAAQ,IAAIoB;QACZC,UAAU,CAAC;QACXR,YAAY;QACZS,OAAOJ,SAASA,OAAOI,KAAK,GAAG,IAAI;IACrC;AACF;AAEO,SAASpC,eACdqC,MAAiC,EACjChC,KAAqB,EACrBiC,SAAiC;IAEjC,MAAM,EACJ1B,MAAMC,aAAa,EACnBC,MAAM,EACNC,OAAO,EACP,GAAGL,OACJ,GAAG,OAAO4B,cAAc,YAAY,CAAC,IAAIA;IAC1C,IAAIzB,eAAe;QACjB,KAAK,MAAM,CAACK,KAAKC,MAAM,IAAIX,OAAOQ,OAAO,CAACH,eAAgB;YACxD,MAAM0B,WAAWlC,MAAMyB,KAAK,CAACU,SAAS,CAACtB,IAAI;YAE3C,IAAI,CAACqB,UAAU;gBACb,MAAM,IAAIE,2BAAqB,CAAC,CAAC,SAAS,EAAEvB,IAAI,mBAAmB,EAAEb,MAAMyB,KAAK,CAACY,MAAM,EAAE;YAC3F;YAEA,MAAMC,kBAAkBC,IAAAA,8BAAkB,EAACL,SAASM,WAAW;YAC/D,MAAMC,YAAYT,OAAOG,SAAS,CAACO,aAAa,CAACJ,gBAAgB;YACjEK,MAAMX,OAAOG,SAAS,CAACS,YAAY,CAACH,UAAU,EAAE5B,KAAKC;QACvD;IACF;IAEA,IAAIX,OAAOC,IAAI,CAACC,OAAOC,MAAM,GAAG,GAAG;QACjCN,MAAMK,KAAK,GAAGA;IAChB;IAEA,IAAII,QAAQ;QACV,KAAK,MAAM,CAACI,KAAKC,MAAM,IAAIX,OAAOQ,OAAO,CAACF,QAAS;YACjDT,MAAMS,MAAM,CAACe,GAAG,CAACX,KAAKC;QACxB;IACF;IAEA,IAAId,MAAMsB,UAAU,EAAE;QACpB;IACF;IAEA,IAAIZ,SAAS;QACX,KAAK,MAAMG,OAAOV,OAAOC,IAAI,CAACM,SAAU;YACtCV,MAAMU,OAAO,CAACa,GAAG,CAACV;QACpB;IACF,OAAO,IAAIoB,cAAc,MAAM;QAC7BjC,MAAMsB,UAAU,GAAG;IACrB;IAEA,SAASqB,MAAMlB,KAA4B,EAAEZ,GAAW,EAAEC,KAA8B;QACtF,IAAI,CAACA,OAAO;YACV;QACF;QAEA,IAAId,MAAMO,IAAI,CAACQ,GAAG,CAACF,MAAM;YACvBlB,eAAeqC,QAAQhC,MAAMO,IAAI,CAACS,GAAG,CAACH,MAAOC;QAC/C,OAAO;YACL,MAAM+B,eAAenD,YAAY+B,OAAOzB,MAAM0B,qBAAqB,EAAE1B;YACrEL,eAAeqC,QAAQa,cAAc/B;YACrCd,MAAMO,IAAI,CAACiB,GAAG,CAACX,KAAKgC;QACtB;IACF;AACF;AAEO,SAAS/C,iBACdkC,MAAiC,EACjChC,KAAqB;IAErB,MAAMK,QAA4D;QAChE,GAAGL,MAAMK,KAAK;QACdE,MAAM,CAAC;QACPG,SAAS,CAAC;QACVD,QAAQ,CAAC;IACX;IAEA,IAAIT,MAAMsB,UAAU,EAAE;QACpB,KAAK,MAAMT,OAAOV,OAAOC,IAAI,CAACJ,MAAMyB,KAAK,CAACf,OAAO,EAAG;YAClDL,MAAMK,OAAO,AAAC,CAACG,IAAI,GAAG;QACxB;IACF,OAAO;QACL,KAAK,MAAMA,OAAOb,MAAMU,OAAO,CAAE;YAC/BL,MAAMK,OAAO,AAAC,CAACG,IAAI,GAAG;QACxB;QAEA,KAAK,MAAMiC,UAAUd,OAAOe,aAAa,CAAC/C,MAAMyB,KAAK,CAACuB,MAAM,EAAG;YAC7D,MAAMA,SAAShB,OAAOiB,cAAc,CAACH;YACrCzC,MAAMK,OAAO,AAAC,CAACsC,OAAO,GAAG;QAC3B;IACF;IAEA,KAAK,MAAM,CAACnC,KAAKC,MAAM,IAAId,MAAMS,MAAM,CAAE;QACvCJ,MAAMI,MAAM,AAAC,CAACI,IAAI,GAAGC;IACvB;IAEAd,MAAMO,IAAI,CAAC2C,OAAO,CAAC,CAACC,KAAKjB;QACvB7B,MAAME,IAAI,AAAC,CAAC2B,SAAS,GAAGpC,iBAAiBkC,QAAQmB;IACnD;IAEA,OAAO9C;AACT"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pothos/plugin-drizzle",
3
- "version": "0.8.1",
3
+ "version": "0.9.0",
4
4
  "description": "A Pothos plugin for drizzle",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./dts/index.d.ts",
@@ -35,24 +35,24 @@
35
35
  },
36
36
  "peerDependencies": {
37
37
  "@pothos/core": "*",
38
- "graphql": ">=16.6.0"
38
+ "graphql": "^16.10.0",
39
+ "drizzle-orm": "^1.0.0"
39
40
  },
40
41
  "devDependencies": {
41
- "@libsql/client": "^0.14.0",
42
+ "@libsql/client": "^0.15.4",
42
43
  "drizzle-graphql": "^0.8.5",
43
- "drizzle-kit": "^0.28.1",
44
- "drizzle-orm": "^0.36.4",
45
- "graphql": "^16.8.1",
46
- "graphql-scalars": "^1.24.0",
44
+ "drizzle-kit": "1.0.0-beta.1-c0277c0",
45
+ "drizzle-orm": "1.0.0-beta.1-c0277c0",
46
+ "graphql-scalars": "^1.24.2",
47
47
  "graphql-tag": "^2.12.6",
48
48
  "postgres": "^3.4.5",
49
- "@pothos/core": "4.6.0",
50
- "@pothos/plugin-add-graphql": "4.2.2",
51
- "@pothos/plugin-errors": "4.2.0",
52
- "@pothos/plugin-relay": "4.4.1",
53
- "@pothos/plugin-scope-auth": "4.1.2",
54
- "@pothos/plugin-with-input": "4.1.0",
55
- "@pothos/test-utils": "2.1.0"
49
+ "@pothos/core": "4.6.2",
50
+ "@pothos/plugin-add-graphql": "4.2.3",
51
+ "@pothos/plugin-errors": "4.2.1",
52
+ "@pothos/plugin-scope-auth": "4.1.3",
53
+ "@pothos/plugin-relay": "4.4.2",
54
+ "@pothos/plugin-with-input": "4.1.1",
55
+ "@pothos/test-utils": "2.1.1"
56
56
  },
57
57
  "scripts": {
58
58
  "type": "tsc --project tsconfig.type.json",
@@ -0,0 +1,184 @@
1
+ import type { InputFieldMap, InputShapeFromFields, SchemaTypes } from '@pothos/core';
2
+ import type { BuildQueryResult, DBQueryConfig, Table, TableRelationalConfig } from 'drizzle-orm';
3
+ import type { DrizzleRef } from './interface-ref';
4
+ import type { QueryForDrizzleConnection } from './types';
5
+ import { getSchemaConfig } from './utils/config';
6
+ import {
7
+ drizzleCursorConnectionQuery,
8
+ getCursorFormatter,
9
+ wrapConnectionResult,
10
+ } from './utils/cursors';
11
+ import { getRefFromModel } from './utils/refs';
12
+ import { createState, mergeSelection, selectionToQuery } from './utils/selections';
13
+
14
+ export function drizzleConnectionHelpers<
15
+ Types extends SchemaTypes,
16
+ Type extends DrizzleRef<Types> | keyof Types['DrizzleRelationsConfig'],
17
+ Selection extends DBQueryConfig<'one', Types['DrizzleRelationsConfig'], Table> | true,
18
+ Table extends TableRelationalConfig = Types['DrizzleRelationsConfig'][Type extends DrizzleRef<
19
+ Types,
20
+ infer T
21
+ >
22
+ ? T
23
+ : Type],
24
+ Shape = Type extends DrizzleRef<
25
+ // biome-ignore lint/suspicious/noExplicitAny: <explanation>
26
+ any,
27
+ keyof Types['DrizzleRelationsConfig'],
28
+ infer S
29
+ >
30
+ ? S
31
+ : BuildQueryResult<Types['DrizzleRelationsConfig'], Table, true>,
32
+ EdgeShape = true extends Selection
33
+ ? Shape
34
+ : BuildQueryResult<Types['DrizzleRelationsConfig'], Table, Selection>,
35
+ NodeShape = EdgeShape,
36
+ ExtraArgs extends InputFieldMap = {},
37
+ >(
38
+ builder: PothosSchemaTypes.SchemaBuilder<Types>,
39
+ refOrType: Type,
40
+ {
41
+ select,
42
+ resolveNode,
43
+ query,
44
+ args: createArgs,
45
+ maxSize = builder.options.drizzle?.maxConnectionSize,
46
+ defaultSize = builder.options.drizzle?.defaultConnectionSize,
47
+ }: {
48
+ args?: (t: PothosSchemaTypes.InputFieldBuilder<Types, 'Arg'>) => ExtraArgs;
49
+ select?: (
50
+ nestedSelection: <T extends true | {}>(selection?: T) => T,
51
+ args: InputShapeFromFields<ExtraArgs> & PothosSchemaTypes.DefaultConnectionArguments,
52
+ ctx: Types['Context'],
53
+ ) => Selection;
54
+ query?: QueryForDrizzleConnection<Types, Table> extends infer QueryConfig
55
+ ?
56
+ | QueryConfig
57
+ | ((args: InputShapeFromFields<ExtraArgs>, context: Types['Context']) => QueryConfig)
58
+ : never;
59
+ defaultSize?:
60
+ | number
61
+ | ((
62
+ args: InputShapeFromFields<ExtraArgs> & PothosSchemaTypes.DefaultConnectionArguments,
63
+ ctx: Types['Context'],
64
+ ) => number);
65
+ maxSize?:
66
+ | number
67
+ | ((args: PothosSchemaTypes.DefaultConnectionArguments, ctx: Types['Context']) => number);
68
+ resolveNode?: (edge: EdgeShape) => NodeShape;
69
+ },
70
+ ) {
71
+ const config = getSchemaConfig(builder);
72
+ const tableName =
73
+ typeof refOrType === 'string'
74
+ ? refOrType
75
+ : (refOrType as DrizzleRef<Types, Type extends DrizzleRef<Types, infer T> ? T : Type>)
76
+ .tableName;
77
+
78
+ function resolve<Parent = unknown>(
79
+ list: (EdgeShape & {})[],
80
+ args: InputShapeFromFields<ExtraArgs> & PothosSchemaTypes.DefaultConnectionArguments,
81
+ ctx: Types['Context'],
82
+ parent?: Parent,
83
+ ) {
84
+ const { select, cursorColumns } = getQueryArgs(args, ctx);
85
+ const formatCursor = getCursorFormatter(cursorColumns, config);
86
+ return wrapConnectionResult(
87
+ list,
88
+ args,
89
+ select.limit,
90
+ formatCursor,
91
+ (resolveNode as never) ?? ((edge: unknown) => edge),
92
+ parent,
93
+ ) as unknown as {
94
+ edges: (Omit<EdgeShape, 'cursor' | 'node'> & { node: NodeShape; cursor: string })[];
95
+ pageInfo: {
96
+ startCursor: string | null;
97
+ endCursor: string | null;
98
+ hasPreviousPage: boolean;
99
+ hasNextPage: boolean;
100
+ };
101
+ };
102
+ }
103
+
104
+ const getQueryArgs = (
105
+ args: InputShapeFromFields<ExtraArgs> & PothosSchemaTypes.DefaultConnectionArguments,
106
+ ctx: {},
107
+ ) => {
108
+ const { limit, orderBy, where, ...fieldQuery } =
109
+ (typeof query === 'function' ? query(args, ctx) : query) ?? {};
110
+ const table = config.relations.tablesConfig[tableName] as Table;
111
+
112
+ const { cursorColumns, columns, ...connectionQuery } = drizzleCursorConnectionQuery({
113
+ ctx,
114
+ maxSize,
115
+ defaultSize: typeof defaultSize === 'function' ? defaultSize(args, ctx) : defaultSize,
116
+ args,
117
+ orderBy:
118
+ (typeof orderBy === 'function' ? orderBy(table) : orderBy) ??
119
+ getSchemaConfig(builder).getPrimaryKey(tableName),
120
+ where,
121
+ config,
122
+ table,
123
+ });
124
+
125
+ return {
126
+ select: {
127
+ ...fieldQuery,
128
+ ...connectionQuery,
129
+ columns: {
130
+ ...fieldQuery.columns,
131
+ ...columns,
132
+ },
133
+ limit: Math.abs(limit ?? connectionQuery.limit),
134
+ },
135
+ cursorColumns,
136
+ };
137
+ };
138
+
139
+ function getQuery(
140
+ args: InputShapeFromFields<ExtraArgs> & PothosSchemaTypes.DefaultConnectionArguments,
141
+ ctx: Types['Context'],
142
+ nestedSelection: <T extends true | {}>(selection?: T, path?: string[]) => T,
143
+ ) {
144
+ const nestedSelect: Record<string, unknown> | true = select
145
+ ? select((sel) => nestedSelection(sel, ['edges', 'node']), args, ctx)
146
+ : nestedSelection(true, ['edges', 'node']);
147
+ const queryArgs = getQueryArgs(args, ctx);
148
+
149
+ const selectState = createState(
150
+ config.relations.tablesConfig[tableName],
151
+ builder.options.drizzle?.skipDeferredFragments ?? true,
152
+ );
153
+
154
+ mergeSelection(config, selectState, queryArgs.select);
155
+
156
+ if (typeof nestedSelect === 'object' && nestedSelect) {
157
+ mergeSelection(config, selectState, nestedSelect);
158
+ }
159
+
160
+ const baseQuery = typeof query === 'function' ? query(args, ctx) : (query ?? {});
161
+ const queryResult = selectionToQuery(config, selectState);
162
+
163
+ return {
164
+ ...baseQuery,
165
+ ...queryResult,
166
+ } as unknown as Omit<Selection, 'orderBy'> & {
167
+ orderBy: {
168
+ [K in keyof Table['columns']]?: 'asc' | 'desc' | undefined;
169
+ };
170
+ };
171
+ }
172
+
173
+ const getArgs = () => (createArgs ? builder.args(createArgs) : {}) as ExtraArgs;
174
+
175
+ return {
176
+ ref: (typeof refOrType === 'string'
177
+ ? getRefFromModel(refOrType, builder)
178
+ : refOrType) as DrizzleRef<Types, Type extends DrizzleRef<Types, infer T> ? T : Type, Shape>,
179
+ resolve,
180
+ select: select ?? {},
181
+ getQuery,
182
+ getArgs,
183
+ };
184
+ }
@@ -17,10 +17,11 @@ import {
17
17
  isThenable,
18
18
  } from '@pothos/core';
19
19
  import {
20
- type InferModelFromColumns,
20
+ type InferSelectModel,
21
21
  Many,
22
+ type Table,
22
23
  type TableRelationalConfig,
23
- getOperators,
24
+ getTableUniqueName,
24
25
  } from 'drizzle-orm';
25
26
  import type { DrizzleRef } from './interface-ref';
26
27
  import type {
@@ -50,13 +51,11 @@ const RootBuilder: {
50
51
  ): PothosSchemaTypes.RootFieldBuilder<Types, Shape, Kind>;
51
52
  } = RootFieldBuilder as never;
52
53
 
53
- const ops = getOperators();
54
-
55
54
  export class DrizzleObjectFieldBuilder<
56
55
  Types extends SchemaTypes,
57
56
  TableConfig extends TableRelationalConfig,
58
57
  Shape,
59
- ExposableShape = InferModelFromColumns<TableConfig['columns']>,
58
+ ExposableShape = InferSelectModel<Extract<TableConfig['table'], { _: { brand: 'Table' } }>>,
60
59
  > extends RootBuilder<Types, Shape, 'DrizzleObject'> {
61
60
  exposeBoolean = this.createExpose('Boolean');
62
61
 
@@ -197,8 +196,11 @@ export class DrizzleObjectFieldBuilder<
197
196
  edgeOptions = {},
198
197
  ) {
199
198
  const schemaConfig = getSchemaConfig(this.builder);
200
- const relationField = schemaConfig.schema?.[this.table].relations[name as string];
201
- const relatedModel = schemaConfig.dbToSchema[relationField?.referencedTableName];
199
+ const relationField =
200
+ schemaConfig.relations.tablesConfig?.[this.table].relations[name as string];
201
+ const tableUniqueName = getTableUniqueName(relationField.targetTable as Table);
202
+ const tableName = schemaConfig.relations.tableNamesMap[tableUniqueName];
203
+ const relatedModel = schemaConfig.relations.tables[tableName] as Table;
202
204
 
203
205
  if (!relatedModel) {
204
206
  throw new PothosSchemaError(
@@ -206,28 +208,27 @@ export class DrizzleObjectFieldBuilder<
206
208
  );
207
209
  }
208
210
 
209
- const ref = options.type ?? getRefFromModel(relatedModel.tsName, this.builder);
211
+ const ref = options.type ?? getRefFromModel(tableName, this.builder);
210
212
  let typeName: string | undefined;
211
213
 
212
214
  const getQuery = (args: PothosSchemaTypes.DefaultConnectionArguments, ctx: {}) => {
213
215
  const { limit, orderBy, where, ...fieldQuery } =
214
216
  (typeof query === 'function' ? query(args, ctx) : query) ?? {};
215
217
 
218
+ const tableUniqueName = getTableUniqueName(relatedModel as Table);
219
+ const tableName = schemaConfig.relations.tableNamesMap[tableUniqueName];
220
+
216
221
  const { cursorColumns, columns, ...connectionQuery } = drizzleCursorConnectionQuery({
217
222
  ctx,
218
223
  maxSize,
219
224
  defaultSize,
220
225
  args,
221
- orderBy: orderBy
222
- ? typeof orderBy === 'function'
223
- ? orderBy(relatedModel.columns)
224
- : orderBy
225
- : relatedModel.primaryKey,
226
- where: where
227
- ? typeof where === 'function'
228
- ? where(relatedModel.columns, ops)
229
- : where
230
- : undefined,
226
+ orderBy:
227
+ (typeof orderBy === 'function' ? orderBy(relatedModel) : orderBy) ??
228
+ getSchemaConfig(this.builder).getPrimaryKey(tableName),
229
+ where,
230
+ config: schemaConfig,
231
+ table: schemaConfig.relations.tablesConfig[tableName],
231
232
  });
232
233
 
233
234
  return {
@@ -322,7 +323,7 @@ export class DrizzleObjectFieldBuilder<
322
323
  [
323
324
  options: VariantFieldOptions<
324
325
  Types,
325
- TableConfig['tsName'] & keyof Types['DrizzleRelationSchema'],
326
+ TableConfig['tsName'] & keyof Types['DrizzleRelationsConfig'],
326
327
  Variant,
327
328
  Args,
328
329
  Nullable,
@@ -341,7 +342,7 @@ export class DrizzleObjectFieldBuilder<
341
342
  _args: object,
342
343
  _context: object,
343
344
  nestedQuery: (query: unknown) => unknown,
344
- ) => nestedQuery({});
345
+ ) => nestedQuery(options.select ?? {});
345
346
 
346
347
  return this.field({
347
348
  ...(options as {}),
@@ -389,16 +390,19 @@ export class DrizzleObjectFieldBuilder<
389
390
  ): FieldRef<Types, TypesForRelation<Types, TableConfig['relations'][Field]>, 'Object'> {
390
391
  const [options = {} as never] = allArgs;
391
392
  const schemaConfig = getSchemaConfig(this.builder);
392
- const relationField = schemaConfig.schema?.[this.table].relations[name as string];
393
- const relatedModel = schemaConfig.dbToSchema[relationField?.referencedTableName];
393
+ const relationField =
394
+ schemaConfig.relations.tablesConfig?.[this.table].relations[name as string];
395
+
396
+ const tableUniqueName = getTableUniqueName(relationField.targetTable as Table);
397
+ const tableName = schemaConfig.relations.tableNamesMap[tableUniqueName];
398
+ const relatedModel = schemaConfig.relations.tables[tableName];
394
399
 
395
400
  if (!relatedModel) {
396
401
  throw new PothosSchemaError(
397
402
  `Could not find relation ${name as string} on table ${this.table}`,
398
403
  );
399
404
  }
400
-
401
- const ref = options.type ?? getRefFromModel(relatedModel.tsName, this.builder);
405
+ const ref = options.type ?? getRefFromModel(tableName, this.builder);
402
406
 
403
407
  const { query = {}, extensions, ...rest } = options;
404
408
 
@@ -455,7 +459,7 @@ export class DrizzleObjectFieldBuilder<
455
459
  ) {
456
460
  const [name, options = {} as never] = args;
457
461
 
458
- const typeConfig = this.builder.configStore.getTypeConfig(this.typename, 'Object');
462
+ const typeConfig = this.builder.configStore.getTypeConfig(this.typename, this.graphqlKind);
459
463
  const usingSelect = !!typeConfig.extensions?.pothosDrizzleSelect;
460
464
 
461
465
  return this.exposeField(name as never, {
@@ -467,7 +471,7 @@ export class DrizzleObjectFieldBuilder<
467
471
  columns: { [name as string]: true },
468
472
  },
469
473
  },
470
- });
474
+ }) as FieldRef<Types, ShapeFromTypeParam<Types, Type, Nullable>, 'DrizzleObject'>;
471
475
  }
472
476
 
473
477
  private createExpose<Type extends TypeParam<Types>>(type: Type) {
@@ -90,8 +90,8 @@ fieldBuilderProto.drizzleFieldWithInput = function drizzleFieldWithInput(
90
90
 
91
91
  fieldBuilderProto.drizzleConnection = function drizzleConnection<
92
92
  Type extends
93
- | DrizzleRef<SchemaTypes, keyof SchemaTypes['DrizzleRelationSchema']>
94
- | keyof SchemaTypes['DrizzleRelationSchema'],
93
+ | DrizzleRef<SchemaTypes, keyof SchemaTypes['DrizzleRelations']['config']>
94
+ | keyof SchemaTypes['DrizzleRelations']['config'],
95
95
  Nullable extends boolean,
96
96
  ResolveReturnShape,
97
97
  >(
@@ -118,6 +118,7 @@ fieldBuilderProto.drizzleConnection = function drizzleConnection<
118
118
  ) {
119
119
  const ref = typeof type === 'string' ? getRefFromModel(type, this.builder) : type;
120
120
  const typeName = this.builder.configStore.getTypeConfig(ref).name;
121
+ const tableName = typeof type === 'string' ? type : (ref as DrizzleRef<SchemaTypes>).tableName;
121
122
  const fieldRef = (
122
123
  this as typeof fieldBuilderProto & {
123
124
  connection: (...args: unknown[]) => FieldRef<SchemaTypes, unknown>;
@@ -132,12 +133,8 @@ fieldBuilderProto.drizzleConnection = function drizzleConnection<
132
133
  context: {},
133
134
  info: GraphQLResolveInfo,
134
135
  ) => {
135
- const drizzleModel = getSchemaConfig(this.builder).schema?.[
136
- typeof type === 'string' ? type : (ref as DrizzleRef<SchemaTypes>).tableName
137
- ]!;
138
-
139
136
  return resolveDrizzleCursorConnection(
140
- drizzleModel,
137
+ tableName,
141
138
  info,
142
139
  typeName,
143
140
  getSchemaConfig(this.builder),