@pothos/plugin-drizzle 0.15.0 → 0.16.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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/cursors.ts"],"names":["drizzleCursorConnectionQuery","formatCursorChunk","formatDrizzleCursor","formatIDChunk","getColumnParser","getColumnSerializer","getCursorFormatter","getCursorParser","getIDParser","getIDSerializer","parseDrizzleCursor","parseSerializedDrizzleColumn","parseSerializedIDColumn","resolveDrizzleCursorConnection","wrapConnectionResult","DEFAULT_MAX_SIZE","DEFAULT_SIZE","value","Date","String","Number","PothosValidationError","record","fields","config","length","map","field","keyAsName","JSON","stringify","col","columnToTsName","serializer","encodeBase64","cursor","decoded","decodeBase64","startsWith","slice","type","rawValue","match","parseInt","parse","BigInt","id","dataType","error","name","parsed","Array","isArray","forEach","i","parseOrderBy","table","orderBy","invert","entries","columns","normalized","asc","desc","push","direction","column","tableColumns","getColumns","Object","fromEntries","args","ctx","maxSize","defaultSize","where","before","after","first","last","maxSizeForConnection","defaultSizeForConnection","limit","Math","min","inverted","parsedOrderBy","whereClauses","cursorParser","parsedCursor","parts","index","columnName","compare","gt","lt","AND","c","OR","cursorColumns","results","resolveNode","parent","edges","gotFullResults","abs","hasNextPage","hasPreviousPage","nodes","connection","pageInfo","startCursor","endCursor","node","reverse","tableName","info","typeName","options","resolve","relations","query","formatter","q","connectionQuery","getPrimaryKey","queryFromInfo","context","select","paths","undefined"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/utils/cursors.ts"],"names":["drizzleCursorConnectionQuery","formatCursorChunk","formatDrizzleCursor","formatIDChunk","getColumnParser","getColumnSerializer","getCursorFormatter","getCursorParser","getIDParser","getIDSerializer","parseDrizzleCursor","parseSerializedDrizzleColumn","parseSerializedIDColumn","resolveDrizzleCursorConnection","wrapConnectionResult","DEFAULT_MAX_SIZE","DEFAULT_SIZE","value","Date","String","Number","PothosValidationError","record","fields","config","length","map","field","keyAsName","JSON","stringify","col","columnToTsName","serializer","encodeBase64","cursor","decoded","decodeBase64","startsWith","slice","type","rawValue","match","parseInt","parse","BigInt","id","dataType","error","name","parsed","Array","isArray","forEach","i","parseOrderBy","table","orderBy","invert","entries","columns","normalized","asc","desc","push","direction","column","tableColumns","getColumns","Object","fromEntries","args","ctx","maxSize","defaultSize","where","before","after","first","last","maxSizeForConnection","defaultSizeForConnection","limit","Math","min","inverted","parsedOrderBy","whereClauses","cursorParser","parsedCursor","parts","index","columnName","compare","gt","lt","AND","c","OR","cursorColumns","results","resolveNode","parent","totalCount","edges","gotFullResults","abs","hasNextPage","hasPreviousPage","nodes","connection","pageInfo","startCursor","endCursor","node","reverse","tableName","info","typeName","options","resolve","relations","query","formatter","q","connectionQuery","getPrimaryKey","queryFromInfo","context","select","paths","undefined"],"mappings":";;;;;;;;;;;QA0VgBA;eAAAA;;QAlUAC;eAAAA;;QAqBAC;eAAAA;;QAQAC;eAAAA;;QA8KAC;eAAAA;;QAhJAC;eAAAA;;QAcAC;eAAAA;;QAoKAC;eAAAA;;QA5EAC;eAAAA;;QArHAC;eAAAA;;QAyCAC;eAAAA;;QAiBAC;eAAAA;;QA2BAC;eAAAA;;QAuWMC;eAAAA;;QAvDNC;eAAAA;;;sBAncT;4BAQA;0BAIuB;AAG9B,MAAMC,mBAAmB;AACzB,MAAMC,eAAe;AAEd,SAASf,kBAAkBgB,KAAc;IAC9C,IAAIA,SAAS,MAAM;QACjB,OAAO;IACT;IAEA,IAAIA,iBAAiBC,MAAM;QACzB,OAAO,CAAC,EAAE,EAAEC,OAAOC,OAAOH,SAAS;IACrC;IAEA,OAAQ,OAAOA;QACb,KAAK;YACH,OAAO,CAAC,EAAE,EAAEA,OAAO;QACrB,KAAK;YACH,OAAO,CAAC,EAAE,EAAEA,OAAO;QACrB,KAAK;YACH,OAAO,CAAC,EAAE,EAAEA,OAAO;QACrB;YACE,MAAM,IAAII,2BAAqB,CAAC,CAAC,wBAAwB,EAAE,OAAOJ,OAAO;IAC7E;AACF;AAEO,SAASf,oBACdoB,MAA+B,EAC/BC,MAAgB,EAChBC,MAAiC;IAEjC,OAAOlB,mBAAmBiB,QAAQC,QAAQF;AAC5C;AAEO,SAASnB,cAAcc,KAAc;IAC1C,IAAIA,iBAAiBC,MAAM;QACzB,OAAO,GAAGC,OAAOC,OAAOH,SAAS;IACnC;IAEA,OAAQ,OAAOA;QACb,KAAK;QACL,KAAK;QACL,KAAK;YACH,OAAO,GAAGA,OAAO;QACnB;YACE,MAAM,IAAII,2BAAqB,CAAC,CAAC,oBAAoB,EAAE,OAAOJ,OAAO;IACzE;AACF;AAEO,SAASR,gBAAgBc,MAAgB,EAAEC,MAAiC;IACjF,IAAID,OAAOE,MAAM,KAAK,GAAG;QACvB,MAAM,IAAIJ,2BAAqB,CAAC;IAClC;IAEA,OAAO,CAACJ;QACN,IAAIM,OAAOE,MAAM,GAAG,GAAG;YACrBF,OAAOG,GAAG,CAAC,CAACC,QAAUA,MAAMC,SAAS;YACrC,OAAO,GAAGC,KAAKC,SAAS,CAACP,OAAOG,GAAG,CAAC,CAACK,MAAQd,KAAK,CAACO,OAAOQ,cAAc,CAACD,KAAK,IAAI;QACpF;QAEA,OAAO,GAAG5B,cAAcc,KAAK,CAACO,OAAOQ,cAAc,CAACT,MAAM,CAAC,EAAE,EAAE,GAAG;IACpE;AACF;AAEO,SAASlB,oBAAoBkB,MAAgB,EAAEC,MAAiC;IACrF,IAAID,OAAOE,MAAM,KAAK,GAAG;QACvB,MAAM,IAAIJ,2BAAqB,CAAC;IAClC;IAEA,OAAO,CAACJ;QACN,IAAIM,OAAOE,MAAM,GAAG,GAAG;YACrB,OAAO,CAAC,EAAE,EAAEI,KAAKC,SAAS,CAACP,OAAOG,GAAG,CAAC,CAACK,MAAQd,KAAK,CAACO,OAAOQ,cAAc,CAACD,KAAK,IAAI;QACtF;QAEA,OAAO9B,kBAAkBgB,KAAK,CAACO,OAAOQ,cAAc,CAACT,MAAM,CAAC,EAAE,EAAE;IAClE;AACF;AAEO,SAASjB,mBAAmBiB,MAAgB,EAAEC,MAAiC;IACpF,IAAID,OAAOE,MAAM,KAAK,GAAG;QACvB,MAAM,IAAIJ,2BAAqB,CAAC;IAClC;IAEA,MAAMY,aAAa5B,oBAAoBkB,QAAQC;IAE/C,OAAO,CAACP;QACN,OAAOiB,IAAAA,kBAAY,EAAC,CAAC,GAAG,EAAED,WAAWhB,QAAQ;IAC/C;AACF;AAEO,SAASP,mBAAmByB,MAAe;IAChD,IAAI,OAAOA,WAAW,UAAU;QAC9B,MAAM,IAAId,2BAAqB,CAAC;IAClC;IAEA,IAAI;QACF,MAAMe,UAAUC,IAAAA,kBAAY,EAACF;QAC7B,IAAI,CAACC,QAAQE,UAAU,CAAC,QAAQ;YAC9B,MAAM,IAAIjB,2BAAqB,CAAC;QAClC;QAEA,OAAOV,6BAA6ByB,QAAQG,KAAK,CAAC;IACpD,EAAE,OAAM;QACN,MAAM,IAAIlB,2BAAqB,CAAC,CAAC,gBAAgB,EAAEc,QAAQ;IAC7D;AACF;AAEO,SAASxB,6BAA6BM,KAAc;IACzD,IAAI,OAAOA,UAAU,UAAU;QAC7B,MAAM,IAAII,2BAAqB,CAAC;IAClC;IAEA,IAAI;QACF,MAAM,GAAGmB,MAAMC,SAAS,GAAGxB,MAAMyB,KAAK,CAAC;QAEvC,OAAQF;YACN,KAAK;gBACH,OAAOC;YACT,KAAK;gBACH,OAAOrB,OAAOuB,QAAQ,CAACF,UAAU;YACnC,KAAK;gBACH,OAAO,IAAIvB,KAAKE,OAAOuB,QAAQ,CAACF,UAAU;YAC5C,KAAK;gBACH,OAAOZ,KAAKe,KAAK,CAACH;YACpB,KAAK;gBACH,OAAOI,OAAOJ;YAChB;gBACE,MAAM,IAAIpB,2BAAqB,CAAC,CAAC,oBAAoB,EAAEmB,MAAM;QACjE;IACF,EAAE,OAAM;QACN,MAAM,IAAInB,2BAAqB,CAAC,CAAC,yBAAyB,EAAEJ,OAAO;IACrE;AACF;AAEO,SAASL,wBAAwBkC,EAAU,EAAEnB,KAAa;IAC/D,IAAI,CAACmB,IAAI;QACP,OAAOA;IACT;IAEA,IAAI;QACF,IAAInB,MAAMoB,QAAQ,CAACT,UAAU,CAAC,WAAW;YACvC,OAAOlB,OAAOuB,QAAQ,CAACG,IAAI;QAC7B;QAEA,IAAInB,MAAMoB,QAAQ,CAACT,UAAU,CAAC,WAAW;YACvC,OAAOO,OAAOC;QAChB;QAEA,IAAInB,MAAMoB,QAAQ,CAACT,UAAU,CAAC,WAAW;YACvC,OAAOQ;QACT;QAEA,IAAInB,MAAMoB,QAAQ,KAAK,eAAe;YACpC,OAAO,IAAI7B,KAAK4B;QAClB;QAEA,MAAM,IAAIzB,2BAAqB,CAAC,CAAC,oBAAoB,EAAEM,MAAMoB,QAAQ,EAAE;IACzE,EAAE,OAAOC,OAAgB;QACvB,IAAIA,iBAAiB3B,2BAAqB,EAAE;YAC1C,MAAM2B;QACR;QAEA,MAAM,IAAI3B,2BAAqB,CAAC,CAAC,uBAAuB,EAAEyB,IAAI;IAChE;AACF;AAEO,SAAStC,YAAYe,MAAyB;IACnD,IAAIA,OAAOE,MAAM,KAAK,GAAG;QACvB,MAAM,IAAIJ,2BAAqB,CAAC;IAClC;IAEA,OAAO,CAACJ;QACN,IAAIM,OAAOE,MAAM,KAAK,GAAG;YACvB,OAAO;gBAAE,CAACF,MAAM,CAAC,EAAE,CAAC0B,IAAI,CAAC,EAAErC,wBAAwBK,OAAOM,MAAM,CAAC,EAAE;YAAE;QACvE;QAEA,IAAI;YACF,MAAM2B,SAASrB,KAAKe,KAAK,CAAC3B;YAE1B,IAAI,CAACkC,MAAMC,OAAO,CAACF,SAAS;gBAC1B,MAAM,IAAI7B,2BAAqB,CAC7B,CAAC,kDAAkD,EAAEJ,OAAO;YAEhE;YAEA,IAAIiC,OAAOzB,MAAM,KAAKF,OAAOE,MAAM,EAAE;gBACnC,MAAM,IAAIJ,2BAAqB,CAC7B,CAAC,gCAAgC,EAAEE,OAAOE,MAAM,CAAC,mBAAmB,EAAEyB,OAAOzB,MAAM,EAAE;YAEzF;YAEA,MAAMH,SAAkC,CAAC;YAEzCC,OAAO8B,OAAO,CAAC,CAAC1B,OAAO2B;gBACrBhC,MAAM,CAACK,MAAMsB,IAAI,CAAC,GAAGC,MAAM,CAACI,EAAE;YAChC;YAEA,OAAOhC;QACT,EAAE,OAAO0B,OAAgB;YACvB,IAAIA,iBAAiB3B,2BAAqB,EAAE;gBAC1C,MAAM2B;YACR;YAEA,MAAM,IAAI3B,2BAAqB,CAAC,CAAC,uBAAuB,EAAEJ,OAAO;QACnE;IACF;AACF;AAEO,SAASb,gBAAgBmB,MAAyB;IACvD,IAAIA,OAAOE,MAAM,KAAK,GAAG;QACvB,MAAM,IAAIJ,2BAAqB,CAAC;IAClC;IAEA,OAAO,CAACJ;QACN,MAAMiC,SAASvC,6BAA6BM;QAE5C,IAAIM,OAAOE,MAAM,KAAK,GAAG;YACvB,OAAO;gBAAE,CAACF,MAAM,CAAC,EAAE,CAAC0B,IAAI,CAAC,EAAEC;YAAO;QACpC;QAEA,IAAI,CAACC,MAAMC,OAAO,CAACF,SAAS;YAC1B,MAAM,IAAI7B,2BAAqB,CAC7B,CAAC,sDAAsD,EAAE6B,QAAQ;QAErE;QAEA,IAAIA,OAAOzB,MAAM,KAAKF,OAAOE,MAAM,EAAE;YACnC,MAAM,IAAIJ,2BAAqB,CAC7B,CAAC,oCAAoC,EAAEE,OAAOE,MAAM,CAAC,mBAAmB,EAAEyB,OAAOzB,MAAM,EAAE;QAE7F;QAEA,MAAMH,SAAkC,CAAC;QAEzCC,OAAO8B,OAAO,CAAC,CAAC1B,OAAO2B;YACrBhC,MAAM,CAACK,MAAMsB,IAAI,CAAC,GAAGC,MAAM,CAACI,EAAE;QAChC;QAEA,OAAOhC;IACT;AACF;AAEO,SAASf,gBAAgBgB,MAAyB;IACvD,IAAIA,OAAOE,MAAM,KAAK,GAAG;QACvB,MAAM,IAAIJ,2BAAqB,CAAC;IAClC;IAEA,OAAO,CAACc;QACN,MAAMe,SAASxC,mBAAmByB;QAElC,IAAIZ,OAAOE,MAAM,KAAK,GAAG;YACvB,OAAO;gBAAE,CAACF,MAAM,CAAC,EAAE,CAAC0B,IAAI,CAAC,EAAEC;YAAO;QACpC;QAEA,IAAI,CAACC,MAAMC,OAAO,CAACF,SAAS;YAC1B,MAAM,IAAI7B,2BAAqB,CAC7B,CAAC,sDAAsD,EAAE6B,QAAQ;QAErE;QAEA,MAAM5B,SAAkC,CAAC;QAEzCC,OAAO8B,OAAO,CAAC,CAAC1B,OAAO2B;YACrBhC,MAAM,CAACK,MAAMsB,IAAI,CAAC,GAAGC,MAAM,CAACI,EAAE;QAChC;QAEA,OAAOhC;IACT;AACF;AAaA,SAASiC,aACP/B,MAAiC,EACjCgC,KAA4B,EAC5BC,OAAiD,EACjDC,MAAe;IAEf,MAAMC,UAAuD,EAAE;IAC/D,MAAMC,UAAoB,EAAE;IAC5B,MAAMC,aAA8D,EAAE;IAEtE,MAAMC,MAAMJ,SAAS,SAAS;IAC9B,MAAMK,OAAOL,SAAS,QAAQ;IAE9B,IAAI,WAAWD,WAAWA,QAAQD,KAAK,IAAI,OAAOC,QAAQD,KAAK,KAAK,UAAU;QAC5EG,QAAQK,IAAI,CAAC;YAACxC,OAAOQ,cAAc,CAACyB;YAAoBK;SAAI;QAC5DF,QAAQI,IAAI,CAACP;QACbI,WAAWG,IAAI,CAAC;YAAEC,WAAW;YAAOC,QAAQT;QAAkB;IAChE,OAAO,IAAIN,MAAMC,OAAO,CAACK,UAAU;QACjC,KAAK,MAAM9B,SAAS8B,QAAS;YAC3BE,QAAQK,IAAI,CAAC;gBAACxC,OAAOQ,cAAc,CAACL;gBAAQmC;aAAI;YAChDF,QAAQI,IAAI,CAACrC;YACbkC,WAAWG,IAAI,CAAC;gBAAEC,WAAW;gBAAOC,QAAQvC;YAAM;QACpD;IACF,OAAO;QACL,MAAMwC,eAAeC,IAAAA,sBAAU,EAACZ,MAAMA,KAAK;QAC3Ca,OAAOV,OAAO,CACZF,SAGAJ,OAAO,CAAC,CAAC,CAACJ,MAAMgB,UAAU;YAC1B,IAAIA,WAAW;gBACb,MAAMC,SAASC,YAAY,CAAClB,KAAK;gBACjCW,QAAQI,IAAI,CAACE;gBACbP,QAAQK,IAAI,CAAC;oBAACf;oBAAMgB,cAAc,QAAQH,MAAMC;iBAAK;gBACrDF,WAAWG,IAAI,CAAC;oBAAEC,WAAWA;oBAAWC;gBAAO;YACjD;QACF;IACF;IAEA,OAAO;QACLL;QACAD;QACAH,SAASY,OAAOC,WAAW,CAACX;IAC9B;AACF;AAEO,SAAS3D,6BAA6B,EAC3CuE,IAAI,EACJC,GAAG,EACHC,UAAU1D,gBAAgB,EAC1B2D,cAAc1D,YAAY,EAC1ByC,OAAO,EACPkB,KAAK,EACLnD,MAAM,EACNgC,KAAK,EAC+B;IACpC,MAAM,EAAEoB,MAAM,EAAEC,KAAK,EAAEC,KAAK,EAAEC,IAAI,EAAE,GAAGR;IACvC,IAAIO,SAAS,QAAQA,QAAQ,GAAG;QAC9B,MAAM,IAAIzD,2BAAqB,CAAC;IAClC;IAEA,IAAI0D,QAAQ,QAAQA,OAAO,GAAG;QAC5B,MAAM,IAAI1D,2BAAqB,CAAC;IAClC;IAEA,IAAIyD,SAAS,QAAQC,QAAQ,MAAM;QACjC,MAAM,IAAI1D,2BAAqB,CAC7B;IAEJ;IAEA,MAAM2D,uBAAuB,OAAOP,YAAY,aAAaA,QAAQF,MAAMC,OAAOC;IAClF,MAAMQ,2BACJ,OAAOP,gBAAgB,aAAaA,YAAYH,MAAMC,OAAOE;QAExCI;IAAvB,MAAMI,QAAQC,KAAKC,GAAG,CAACN,CAAAA,OAAAA,kBAAAA,mBAAAA,QAASC,kBAATD,kBAAAA,OAAiBG,0BAA0BD,wBAAwB;IAC1F,MAAMK,WAAW,CAACP,SAAS,CAAC,CAACC;IAE7B,MAAMO,gBAAgB/B,aAAa/B,QAAQgC,OAAOC,SAAS4B;IAE3D,MAAMzB,UAAmC,CAAC;IAE1C,KAAK,MAAMM,UAAUoB,cAAc1B,OAAO,CAAE;QAC1CA,OAAO,CAACpC,OAAOQ,cAAc,CAACkC,QAAQ,GAAG;IAC3C;IAEA,MAAMqB,eAAqB,EAAE;IAE7B,IAAIZ,OAAO;QACTY,aAAavB,IAAI,CAACW;IACpB;IAEA,IAAIE,OAAO;QACT,MAAMW,eAAejF,gBAAgB+E,cAAc1B,OAAO;QAC1D,MAAM6B,eAAeD,aAAaX;QAElC,MAAMa,QAAQJ,cAAczB,UAAU,CAACnC,GAAG,CAAC,CAAC,EAAEuC,SAAS,EAAEC,MAAM,EAAE,EAAEyB;YACjE,MAAMC,aAAapE,OAAOQ,cAAc,CAACkC;YACzC,MAAM2B,UACJ5B,cAAc,QACV;gBAAE,CAAC2B,WAAW,EAAE;oBAAEE,IAAIL,YAAY,CAACvB,OAAOjB,IAAI,CAAC;gBAAC;YAAE,IAClD;gBAAE,CAAC2C,WAAW,EAAE;oBAAEG,IAAIN,YAAY,CAACvB,OAAOjB,IAAI,CAAC;gBAAC;YAAE;YAExD,IAAI0C,UAAU,GAAG;gBACf,OAAOE;YACT;YAEA,OAAO;gBACLG,KAAK;uBACAV,cAAczB,UAAU,CAACtB,KAAK,CAAC,GAAGoD,OAAOjE,GAAG,CAAC,CAAC,EAAEwC,QAAQ+B,CAAC,EAAE;wBAC5D,OAAO;4BAAE,CAACzE,OAAOQ,cAAc,CAACiE,GAAG,EAAER,YAAY,CAACQ,EAAEhD,IAAI,CAAC;wBAAC;oBAC5D;oBACA4C;iBACD;YACH;QACF;QAEAN,aAAavB,IAAI,CAAC0B,MAAMjE,MAAM,GAAG,IAAI;YAAEyE,IAAIR;QAAM,IAAIA,KAAK,CAAC,EAAE;IAC/D;IAEA,IAAId,QAAQ;QACV,MAAMY,eAAejF,gBAAgB+E,cAAc1B,OAAO;QAC1D,MAAM6B,eAAeD,aAAaZ;QAElC,MAAMc,QAAQJ,cAAczB,UAAU,CAACnC,GAAG,CAAC,CAAC,EAAEuC,SAAS,EAAEC,MAAM,EAAE,EAAEyB;YACjE,MAAMC,aAAapE,OAAOQ,cAAc,CAACkC;YACzC,MAAM2B,UACJ5B,cAAc,SACV;gBAAE,CAAC2B,WAAW,EAAE;oBAAEE,IAAIL,YAAY,CAACvB,OAAOjB,IAAI,CAAC;gBAAC;YAAE,IAClD;gBAAE,CAAC2C,WAAW,EAAE;oBAAEG,IAAIN,YAAY,CAACvB,OAAOjB,IAAI,CAAC;gBAAC;YAAE;YAExD,IAAI0C,UAAU,GAAG;gBACf,OAAOE;YACT;YAEA,OAAO;gBACLG,KAAK;uBACAV,cAAczB,UAAU,CAACtB,KAAK,CAAC,GAAGoD,OAAOjE,GAAG,CAAC,CAAC,EAAEwC,QAAQ+B,CAAC,EAAE;wBAC5D,OAAO;4BAAE,CAACzE,OAAOQ,cAAc,CAACiE,GAAG,EAAER,YAAY,CAACQ,EAAEhD,IAAI,CAAC;wBAAC;oBAC5D;oBACA4C;iBACD;YACH;QACF;QAEAN,aAAavB,IAAI,CAAC0B,MAAMjE,MAAM,GAAG,IAAI;YAAEyE,IAAIR;QAAM,IAAIA,KAAK,CAAC,EAAE;IAC/D;IAEA,OAAO;QACLS,eAAeb,cAAc1B,OAAO;QACpCA;QACAH,SAAS6B,cAAc7B,OAAO;QAC9ByB;QACAP,OAAOY,aAAa9D,MAAM,GAAG,IAAI;YAAEuE,KAAKT;QAAa,IAAIA,YAAY,CAAC,EAAE;IAC1E;AACF;AAEO,SAASzE,qBACdsF,OAAqB,EACrB7B,IAAkD,EAClDW,KAAa,EACb/C,MAA2B,EAC3BkE,WAAwD,EACxDC,MAAgB,EAChBC,UAAyD;QA0CvBC,SACFA;IAzChC,MAAMC,iBAAiBL,QAAQ3E,MAAM,KAAK0D,KAAKuB,GAAG,CAACxB;IACnD,MAAMyB,cAAcpC,KAAKK,MAAM,GAAG,OAAOL,KAAKQ,IAAI,GAAG,QAAQ0B;IAC7D,MAAMG,kBAAkBrC,KAAKM,KAAK,GAAG,OAAO,CAACN,KAAKO,KAAK,IAAI,CAAC,CAACP,KAAKQ,IAAI,GAAG0B,iBAAiB;IAC1F,MAAMI,QAAQJ,iBAAiBL,QAAQ7D,KAAK,CAAC,GAAG,CAAC,KAAK6D;IAEtD,MAAMU,aAAa;QACjBR;QACA/B;QACAgC;QACAC,OAAO,EAAE;QACTO,UAAU;YACRC,aAAa;YACbC,WAAW;YACXL;YACAD;QACF;IACF;IAEA,MAAMH,QAAQK,MAAMnF,GAAG,CAAC,CAACT,QACvBA,SAAS,OACL,OACAoF,cACE;YACES;YACA,GAAG7F,KAAK;YACRkB,QAAQA,OAAOlB;YACfiG,MAAMb,YAAYpF;QACpB,IACA;YACE6F;YACA3E,QAAQA,OAAOlB;YACfiG,MAAMjG;QACR;IAGR,IAAIsD,KAAKQ,IAAI,IAAI,CAACR,KAAKO,KAAK,EAAE;QAC5B0B,MAAMW,OAAO;IACf;IAEAL,WAAWN,KAAK,GAAGA;QACeA;IAAlCM,WAAWC,QAAQ,CAACC,WAAW,GAAGR,CAAAA,kBAAAA,UAAAA,KAAK,CAAC,EAAE,cAARA,8BAAAA,QAAUrE,MAAM,cAAhBqE,4BAAAA,iBAAoB;QACtBA;IAAhCM,WAAWC,QAAQ,CAACE,SAAS,GAAGT,CAAAA,mBAAAA,WAAAA,KAAK,CAACA,MAAM/E,MAAM,GAAG,EAAE,cAAvB+E,+BAAAA,SAAyBrE,MAAM,cAA/BqE,6BAAAA,kBAAmC;IAEnE,OAAOM;AACT;AAEO,eAAejG,+BACpBuG,SAAiB,EACjBC,IAAwB,EACxBC,QAAgB,EAChB9F,MAAiC,EACjC+F,OAEC,EACDC,OAE+B,EAC/BlB,MAAe;IAEf,MAAM9C,QAAQhC,OAAOiG,SAAS,CAACL,UAAU;IACzC,IAAIM;IACJ,IAAIC;IACJ,MAAMvB,UAAU,MAAMoB,QAAQ,CAACI,IAAI,CAAC,CAAC;YAK9B;QAJL,MAAM,EAAEzB,aAAa,EAAE,GAAG0B,iBAAiB,GAAG7H,6BAA6B;YACzE,GAAGuH,OAAO;YACV/F;YACAiC,SACE,CAAC,OAAA,OAAOmE,EAAEnE,OAAO,KAAK,aAAamE,EAAEnE,OAAO,CAACD,MAAMA,KAAK,IAAaoE,EAAEnE,OAAO,cAA7E,kBAAA,OACDjC,OAAOsG,aAAa,CAACtE,MAAMP,IAAI;YACjCO;QACF;QACAmE,YAAYrH,mBAAmB6F,eAAe3E;QAE9CkG,QAAQK,IAAAA,uBAAa,EAAC;YACpBC,SAAST,QAAQ/C,GAAG;YACpB6C;YACAY,QAAQ;gBACN,GAAGJ,eAAe;gBAClBjE,SAAS;oBACP,GAAGgE,EAAEhE,OAAO;oBACZ,GAAGiE,gBAAgBjE,OAAO;gBAC5B;gBACAe,OACEkD,gBAAgBlD,KAAK,IAAIiD,EAAEjD,KAAK,GAC5B;oBACEqB,KAAK;wBAAC4B,EAAEjD,KAAK;wBAAEkD,gBAAgBlD,KAAK;qBAAC;gBACvC,IACAiD,EAAEjD,KAAK,IAAIkD,gBAAgBlD,KAAK;YACxC;YACAuD,OAAO;gBAAC;oBAAC;iBAAQ;gBAAE;oBAAC;oBAAS;iBAAO;aAAC;YACrCZ;YACA9F;QAEF;QAEA,OAAOkG;IACT;IAEA,IAAI,CAACtB,SAAS;QACZ,OAAOA;IACT;IAEA,qFAAqF;IACrF,IAAI,CAACsB,OAAO;QACV,OAAO;YACLpB;YACA/B,MAAMgD,QAAQhD,IAAI;YAClBgC,YAAYgB,QAAQhB,UAAU;YAC9BC,OAAO,EAAE;YACTO,UAAU;gBACRC,aAAa;gBACbC,WAAW;gBACXL,iBAAiB;gBACjBD,aAAa;YACf;QACF;IACF;IAEA,OAAO7F,qBACLsF,SACAmB,QAAQhD,IAAI,EACZmD,MAAMxC,KAAK,EACXyC,WACAQ,WACA7B,QACAiB,QAAQhB,UAAU;AAEtB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pothos/plugin-drizzle",
3
- "version": "0.15.0",
3
+ "version": "0.16.0",
4
4
  "description": "A Pothos plugin for drizzle",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./dts/index.d.ts",
@@ -47,10 +47,10 @@
47
47
  "graphql-tag": "^2.12.6",
48
48
  "postgres": "^3.4.7",
49
49
  "@pothos/core": "4.10.0",
50
- "@pothos/plugin-add-graphql": "4.2.4",
51
50
  "@pothos/plugin-errors": "4.8.0",
52
- "@pothos/plugin-relay": "4.6.2",
53
51
  "@pothos/plugin-scope-auth": "4.1.6",
52
+ "@pothos/plugin-add-graphql": "4.2.4",
53
+ "@pothos/plugin-relay": "4.6.2",
54
54
  "@pothos/plugin-with-input": "4.1.4",
55
55
  "@pothos/test-utils": "2.1.3"
56
56
  },
@@ -5,6 +5,7 @@ import {
5
5
  type FieldRef,
6
6
  type InferredFieldOptionKeys,
7
7
  type InputFieldMap,
8
+ type InputShapeFromFields,
8
9
  type InterfaceParam,
9
10
  isThenable,
10
11
  type MaybePromise,
@@ -17,18 +18,30 @@ import {
17
18
  type ShapeFromTypeParam,
18
19
  type TypeParam,
19
20
  } from '@pothos/core';
20
- import { type InferSelectModel, Many, type TableRelationalConfig } from 'drizzle-orm';
21
+ import {
22
+ and,
23
+ type BuildQueryResult,
24
+ type DBQueryConfig,
25
+ eq,
26
+ type InferSelectModel,
27
+ Many,
28
+ type SQL,
29
+ type Table,
30
+ type TableRelationalConfig,
31
+ } from 'drizzle-orm';
32
+ import type { FieldNode } from 'graphql';
21
33
  import type { DrizzleRef } from './interface-ref';
22
34
  import type {
23
35
  DrizzleConnectionShape,
24
36
  ListRelation,
25
37
  RelatedConnectionOptions,
38
+ RelatedCountOptions,
26
39
  RelatedFieldOptions,
27
40
  ShapeFromConnection,
28
41
  TypesForRelation,
29
42
  VariantFieldOptions,
30
43
  } from './types';
31
- import { getSchemaConfig } from './utils/config';
44
+ import { getClient, getSchemaConfig } from './utils/config';
32
45
  import {
33
46
  drizzleCursorConnectionQuery,
34
47
  getCursorFormatter,
@@ -156,6 +169,7 @@ export class DrizzleObjectFieldBuilder<
156
169
  resolve: _,
157
170
  extensions,
158
171
  description,
172
+ totalCount,
159
173
  ...options
160
174
  }: {
161
175
  type?: ObjectRef<Types, unknown, unknown>;
@@ -164,6 +178,7 @@ export class DrizzleObjectFieldBuilder<
164
178
  extensions?: {};
165
179
  description?: string;
166
180
  query?: ((args: {}, ctx: {}) => {}) | {};
181
+ totalCount?: boolean;
167
182
  resolve?: (
168
183
  query: {},
169
184
  parent: unknown,
@@ -188,6 +203,15 @@ export class DrizzleObjectFieldBuilder<
188
203
  const ref = options.type ?? getRefFromModel(relationField.targetTableName, this.builder);
189
204
  let typeName: string | undefined;
190
205
 
206
+ const buildCountFilter = (parentTable: TableConfig['table']): SQL => {
207
+ const { sourceColumns, targetColumns } = relationField;
208
+ return and(
209
+ ...sourceColumns.map((sourceCol: { name: string }, i: number) =>
210
+ eq(targetColumns[i], parentTable[sourceCol.name as never]),
211
+ ),
212
+ )!;
213
+ };
214
+
191
215
  const getQuery = (args: PothosSchemaTypes.DefaultConnectionArguments, ctx: {}) => {
192
216
  const { limit, orderBy, where, ...fieldQuery } =
193
217
  (typeof query === 'function' ? query(args, ctx) : query) ?? {};
@@ -223,8 +247,31 @@ export class DrizzleObjectFieldBuilder<
223
247
  args: object,
224
248
  context: object,
225
249
  nestedQuery: (query: unknown, path?: unknown) => { select?: object },
250
+ getSelection: (path: string[]) => FieldNode | null,
226
251
  ) => {
227
252
  typeName ??= this.builder.configStore.getTypeConfig(ref).name;
253
+
254
+ const hasTotalCount = totalCount && !!getSelection(['totalCount']);
255
+ const hasEdges = !!getSelection(['edges']);
256
+ const hasNodes = !!getSelection(['nodes']);
257
+ const hasPageInfo = !!getSelection(['pageInfo']);
258
+ const totalCountOnly = hasTotalCount && !hasEdges && !hasNodes && !hasPageInfo;
259
+ const countSelection = {
260
+ [`_${name as string}_count`]: (parent: TableConfig['table']) =>
261
+ getClient(this.builder, context).$count(
262
+ relatedTable.table as Table,
263
+ buildCountFilter(parent),
264
+ ),
265
+ };
266
+
267
+ if (totalCountOnly) {
268
+ return {
269
+ columns: {},
270
+ with: {},
271
+ extras: countSelection,
272
+ };
273
+ }
274
+
228
275
  const nested = nestedQuery(getQuery(args, context).select, {
229
276
  getType: () => typeName!,
230
277
  paths: [[{ name: 'nodes' }], [{ name: 'edges' }, { name: 'node' }]],
@@ -235,6 +282,7 @@ export class DrizzleObjectFieldBuilder<
235
282
  with: {
236
283
  [name]: nested,
237
284
  },
285
+ extras: hasTotalCount ? countSelection : {},
238
286
  };
239
287
  };
240
288
  const fieldRef = (
@@ -255,14 +303,37 @@ export class DrizzleObjectFieldBuilder<
255
303
  args: PothosSchemaTypes.DefaultConnectionArguments,
256
304
  context: {},
257
305
  ) => {
306
+ const countKey = `_${name as string}_count`;
307
+ const parentRecord = parent as Record<string, unknown>;
308
+ const countValue = totalCount
309
+ ? (parentRecord[countKey] as number | undefined)
310
+ : undefined;
311
+
312
+ if (!(name in parentRecord)) {
313
+ return {
314
+ parent,
315
+ args,
316
+ totalCount: countValue,
317
+ edges: [],
318
+ pageInfo: {
319
+ startCursor: null,
320
+ endCursor: null,
321
+ hasPreviousPage: false,
322
+ hasNextPage: false,
323
+ },
324
+ };
325
+ }
326
+
258
327
  const { select, cursorColumns } = getQuery(args, context);
328
+
259
329
  return wrapConnectionResult(
260
- (parent as Record<string, never>)[name],
330
+ parentRecord[name] as readonly {}[],
261
331
  args,
262
332
  select.limit,
263
333
  getCursorFormatter(cursorColumns, schemaConfig),
264
334
  undefined,
265
335
  parent,
336
+ countValue,
266
337
  );
267
338
  },
268
339
  },
@@ -270,6 +341,17 @@ export class DrizzleObjectFieldBuilder<
270
341
  ? connectionOptions
271
342
  : {
272
343
  ...connectionOptions,
344
+ fields: totalCount
345
+ ? (
346
+ t: PothosSchemaTypes.ObjectFieldBuilder<SchemaTypes, { totalCount?: number }>,
347
+ ) => ({
348
+ totalCount: t.int({
349
+ nullable: false,
350
+ resolve: (connection) => connection.totalCount,
351
+ }),
352
+ ...(connectionOptions as { fields?: (t: unknown) => {} }).fields?.(t),
353
+ })
354
+ : (connectionOptions as { fields: undefined }).fields,
273
355
  },
274
356
  edgeOptions,
275
357
  );
@@ -406,6 +488,128 @@ export class DrizzleObjectFieldBuilder<
406
488
  } as never) as never;
407
489
  }
408
490
 
491
+ relatedField<
492
+ Field extends keyof TableConfig['relations'],
493
+ Type extends TypeParam<Types>,
494
+ Nullable extends boolean,
495
+ Args extends InputFieldMap,
496
+ Select extends DBQueryConfig<'many', Types['DrizzleRelations'], TableConfig>,
497
+ ShapeWithSelection = Shape &
498
+ BuildQueryResult<Types['DrizzleRelations'], TableConfig, Select & { columns: {} }>,
499
+ >(
500
+ relationName: Field,
501
+ options: {
502
+ type: Type;
503
+ nullable?: Nullable;
504
+ args?: Args;
505
+ description?: string;
506
+ select: (
507
+ buildFilter: (parentTable: TableConfig['table']) => SQL,
508
+ args: Args extends InputFieldMap ? InputShapeFromFields<Args> : {},
509
+ ctx: Types['Context'],
510
+ nestedQuery: (
511
+ query: DBQueryConfig<'many', Types['DrizzleRelations'], TableConfig>,
512
+ ) => DBQueryConfig<'many', Types['DrizzleRelations'], TableConfig>,
513
+ ) => Select;
514
+ resolve: (
515
+ parent: ShapeWithSelection,
516
+ args: Args extends InputFieldMap ? InputShapeFromFields<Args> : {},
517
+ ctx: Types['Context'],
518
+ info: unknown,
519
+ ) => ShapeFromTypeParam<Types, Type, Nullable>;
520
+ },
521
+ ): FieldRef<Types, ShapeFromTypeParam<Types, Type, Nullable>, 'DrizzleObject'> {
522
+ const schemaConfig = getSchemaConfig(this.builder);
523
+ const relationField = schemaConfig.relations?.[this.table].relations[relationName as string];
524
+
525
+ if (!relationField) {
526
+ throw new PothosSchemaError(
527
+ `Could not find relation ${relationName as string} on table ${this.table}`,
528
+ );
529
+ }
530
+
531
+ const buildFilter = (parentTable: TableConfig['table']): SQL => {
532
+ const { sourceColumns, targetColumns } = relationField;
533
+
534
+ return and(
535
+ ...sourceColumns.map((sourceCol, i) =>
536
+ eq(targetColumns[i], parentTable[sourceCol.name as never]),
537
+ ),
538
+ )!;
539
+ };
540
+
541
+ const relationSelect = (
542
+ args: object,
543
+ context: Types['Context'],
544
+ nestedQuery: (query: unknown) => unknown,
545
+ ) => {
546
+ const selection = options.select(
547
+ buildFilter as never,
548
+ args as never,
549
+ context,
550
+ nestedQuery as never,
551
+ ) as Select & { with?: unknown };
552
+ return {
553
+ columns: selection.columns ?? {},
554
+ extras: selection.extras,
555
+ with: selection.with,
556
+ };
557
+ };
558
+
559
+ return this.field({
560
+ type: options.type,
561
+ nullable: options.nullable,
562
+ args: options.args,
563
+ description: options.description,
564
+ extensions: {
565
+ pothosDrizzleSelect: relationSelect as never,
566
+ },
567
+ resolve: options.resolve as never,
568
+ } as never) as never;
569
+ }
570
+
571
+ relatedCount<
572
+ Field extends keyof TableConfig['relations'],
573
+ Args extends InputFieldMap,
574
+ Where extends SQL | undefined,
575
+ >(
576
+ relationName: Field,
577
+ ...allArgs: NormalizeArgs<[options: RelatedCountOptions<Types, Shape, Args, Where>]>
578
+ ): FieldRef<Types, number, 'DrizzleObject'> {
579
+ const [{ where, ...options } = {} as never] = allArgs;
580
+ const countKey = `_${relationName as string}_count`;
581
+ const schemaConfig = getSchemaConfig(this.builder);
582
+ const relationField = schemaConfig.relations?.[this.table].relations[relationName as string];
583
+ const relatedTable = schemaConfig.relations[relationField.targetTableName];
584
+
585
+ return this.relatedField(relationName, {
586
+ ...options,
587
+ type: 'Int' as never,
588
+ nullable: false,
589
+ select: (
590
+ buildFilter: (parent: TableConfig['table']) => SQL,
591
+ args: object,
592
+ ctx: Types['Context'],
593
+ ) => {
594
+ const whereClause =
595
+ typeof where === 'function'
596
+ ? (where as (args: unknown, ctx: unknown) => SQL | undefined)(args, ctx)
597
+ : where;
598
+
599
+ return {
600
+ extras: {
601
+ [countKey]: (parent: TableConfig['table']) =>
602
+ getClient(this.builder, ctx).$count(
603
+ relatedTable.table as Table,
604
+ whereClause ? and(buildFilter(parent), whereClause) : buildFilter(parent),
605
+ ),
606
+ },
607
+ } as never;
608
+ },
609
+ resolve: (parent: Record<string, number>) => parent[countKey],
610
+ } as never) as FieldRef<Types, number, 'DrizzleObject'>;
611
+ }
612
+
409
613
  expose<
410
614
  Type extends TypeParam<Types>,
411
615
  Nullable extends boolean,
@@ -1,7 +1,8 @@
1
- import type { FieldRef } from '@pothos/core';
1
+ import type { FieldRef, MaybePromise } from '@pothos/core';
2
2
  import { type FieldKind, ObjectRef, RootFieldBuilder, type SchemaTypes } from '@pothos/core';
3
3
  import type { TableRelationalConfig } from 'drizzle-orm';
4
4
  import type { GraphQLResolveInfo } from 'graphql';
5
+ import { isInterfaceType, isObjectType, Kind } from 'graphql';
5
6
  import type { DrizzleRef } from './interface-ref';
6
7
  import type { DrizzleConnectionFieldOptions } from './types';
7
8
  import { getSchemaConfig } from './utils/config';
@@ -101,6 +102,7 @@ fieldBuilderProto.drizzleConnection = function drizzleConnection<
101
102
  maxSize = this.builder.options.drizzle?.maxConnectionSize,
102
103
  defaultSize = this.builder.options.drizzle?.defaultConnectionSize,
103
104
  resolve,
105
+ totalCount,
104
106
  ...options
105
107
  }: DrizzleConnectionFieldOptions<
106
108
  SchemaTypes,
@@ -133,6 +135,21 @@ fieldBuilderProto.drizzleConnection = function drizzleConnection<
133
135
  context: {},
134
136
  info: GraphQLResolveInfo,
135
137
  ) => {
138
+ const returnType = info.returnType;
139
+ const fields =
140
+ isObjectType(returnType) || isInterfaceType(returnType) ? returnType.getFields() : {};
141
+
142
+ const selections = info.fieldNodes;
143
+
144
+ const totalCountOnly = selections.every((selection) =>
145
+ selection.selectionSet?.selections.every(
146
+ (s) =>
147
+ s.kind === Kind.FIELD &&
148
+ (fields[s.name.value]?.extensions?.pothosDrizzleTotalCount ||
149
+ s.name.value === '__typename'),
150
+ ),
151
+ );
152
+
136
153
  return resolveDrizzleCursorConnection(
137
154
  tableName,
138
155
  info,
@@ -143,8 +160,13 @@ fieldBuilderProto.drizzleConnection = function drizzleConnection<
143
160
  maxSize,
144
161
  defaultSize,
145
162
  args,
163
+ totalCount: totalCount && (() => totalCount(parent, args as never, context, info)),
146
164
  },
147
165
  (q) => {
166
+ if (totalCountOnly) {
167
+ return [];
168
+ }
169
+
148
170
  // return checkIfQueryIsUsed(
149
171
  // this.builder,
150
172
  // query,
@@ -160,6 +182,23 @@ fieldBuilderProto.drizzleConnection = function drizzleConnection<
160
182
  ? connectionOptions
161
183
  : {
162
184
  ...connectionOptions,
185
+ fields: totalCount
186
+ ? (
187
+ t: PothosSchemaTypes.ObjectFieldBuilder<
188
+ SchemaTypes,
189
+ { totalCount?: () => MaybePromise<number> }
190
+ >,
191
+ ) => ({
192
+ totalCount: t.int({
193
+ nullable: false,
194
+ extensions: {
195
+ pothosDrizzleTotalCount: true,
196
+ },
197
+ resolve: (parent) => parent.totalCount?.(),
198
+ }),
199
+ ...(connectionOptions as { fields?: (t: unknown) => {} }).fields?.(t),
200
+ })
201
+ : (connectionOptions as { fields: undefined }).fields,
163
202
  extensions: {
164
203
  ...(connectionOptions as Record<string, object> | undefined)?.extensions,
165
204
  },
package/src/types.ts CHANGED
@@ -51,6 +51,7 @@ export type DrizzleClient = {
51
51
  readonly relations: AnyRelations;
52
52
  };
53
53
  query: {};
54
+ $count: (table: Table, filter?: SQL) => SQL<number>;
54
55
  };
55
56
 
56
57
  export type DrizzlePluginOptions<Types extends SchemaTypes> = {
@@ -428,6 +429,18 @@ export type RefForRelation<Types extends SchemaTypes, Rel extends Relation> = Re
428
429
  ? ObjectRef<Types, TypesForRelation<Types, Rel>>
429
430
  : [ObjectRef<Types, TypesForRelation<Types, Rel>>];
430
431
 
432
+ export type RelatedCountOptions<
433
+ Types extends SchemaTypes,
434
+ Shape,
435
+ Args extends InputFieldMap,
436
+ Where,
437
+ > = Omit<
438
+ PothosSchemaTypes.ObjectFieldOptions<Types, Shape, 'Int', false, Args, number>,
439
+ 'type' | InferredFieldOptionKeys
440
+ > & {
441
+ where?: Where | ((args: InputShapeFromFields<Args>, context: Types['Context']) => Where);
442
+ };
443
+
431
444
  export type TypesForRelation<Types extends SchemaTypes, Rel extends Relation> = BuildQueryResult<
432
445
  Types['DrizzleRelations'],
433
446
  Types['DrizzleRelations'][Rel['targetTable']['_']['name']],
@@ -543,6 +556,12 @@ export type DrizzleConnectionFieldOptions<
543
556
  type: Type;
544
557
  defaultSize?: number | ((args: ConnectionArgs, ctx: Types['Context']) => number);
545
558
  maxSize?: number | ((args: ConnectionArgs, ctx: Types['Context']) => number);
559
+ totalCount?: (
560
+ parent: ParentShape,
561
+ args: ConnectionArgs,
562
+ context: Types['Context'],
563
+ info: GraphQLResolveInfo,
564
+ ) => MaybePromise<number>;
546
565
 
547
566
  resolve: (
548
567
  query: <T = {}>(
@@ -626,7 +645,7 @@ export type RelatedConnectionOptions<
626
645
 
627
646
  defaultSize?: number | ((args: ConnectionArgs, ctx: Types['Context']) => number);
628
647
  maxSize?: number | ((args: ConnectionArgs, ctx: Types['Context']) => number);
629
- // totalCount?: NeedsResolve extends false ? boolean : false;
648
+ totalCount?: boolean;
630
649
  }
631
650
  : never);
632
651
 
@@ -462,6 +462,7 @@ export function wrapConnectionResult<T extends {}>(
462
462
  cursor: (node: T) => string,
463
463
  resolveNode?: (node: Record<string, unknown>) => unknown,
464
464
  parent?: unknown,
465
+ totalCount?: number | (() => MaybePromise<number>) | null,
465
466
  ) {
466
467
  const gotFullResults = results.length === Math.abs(limit);
467
468
  const hasNextPage = args.before ? true : args.last ? false : gotFullResults;
@@ -471,6 +472,7 @@ export function wrapConnectionResult<T extends {}>(
471
472
  const connection = {
472
473
  parent,
473
474
  args,
475
+ totalCount,
474
476
  edges: [] as ({ cursor: string; node: unknown } | null)[],
475
477
  pageInfo: {
476
478
  startCursor: null as string | null,
@@ -513,14 +515,16 @@ export async function resolveDrizzleCursorConnection<T extends {}>(
513
515
  info: GraphQLResolveInfo,
514
516
  typeName: string,
515
517
  config: PothosDrizzleSchemaConfig,
516
- options: Omit<DrizzleCursorConnectionQueryOptions, 'orderBy' | 'config' | 'table'>,
518
+ options: Omit<DrizzleCursorConnectionQueryOptions, 'orderBy' | 'config' | 'table'> & {
519
+ totalCount?: () => MaybePromise<number>;
520
+ },
517
521
  resolve: (
518
522
  queryFn: (query: QueryForDrizzleConnection<SchemaTypes, TableRelationalConfig>) => SelectionMap,
519
523
  ) => MaybePromise<readonly T[]>,
520
524
  parent: unknown,
521
525
  ) {
522
526
  const table = config.relations[tableName];
523
- let query: DBQueryConfig<'many'>;
527
+ let query: DBQueryConfig<'many'> | undefined;
524
528
  let formatter: (node: Record<string, unknown>) => string;
525
529
  const results = await resolve((q = {}) => {
526
530
  const { cursorColumns, ...connectionQuery } = drizzleCursorConnectionQuery({
@@ -562,12 +566,29 @@ export async function resolveDrizzleCursorConnection<T extends {}>(
562
566
  return results;
563
567
  }
564
568
 
569
+ // Handle totalCountOnly case where resolve returns [] without calling query function
570
+ if (!query) {
571
+ return {
572
+ parent,
573
+ args: options.args,
574
+ totalCount: options.totalCount,
575
+ edges: [],
576
+ pageInfo: {
577
+ startCursor: null,
578
+ endCursor: null,
579
+ hasPreviousPage: false,
580
+ hasNextPage: false,
581
+ },
582
+ };
583
+ }
584
+
565
585
  return wrapConnectionResult(
566
586
  results,
567
587
  options.args,
568
- query!.limit as number,
588
+ query.limit as number,
569
589
  formatter!,
570
590
  undefined,
571
591
  parent,
592
+ options.totalCount,
572
593
  );
573
594
  }