@querykitjs/prisma-pg 2.0.0 → 2.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.
- package/README.en.md +10 -0
- package/README.md +10 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +10 -10
- package/dist/index.d.ts +10 -10
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/skills/querykit-prisma-pg/SKILL.md +1 -0
package/README.en.md
CHANGED
|
@@ -293,6 +293,16 @@ const p2 = await postsRepository.findCursor({ limit: 20, cursor: p1.meta.next_cu
|
|
|
293
293
|
p1.meta; // { limit, has_next, has_prev, next_cursor, prev_cursor }
|
|
294
294
|
```
|
|
295
295
|
|
|
296
|
+
### A stable order across offset pages
|
|
297
|
+
|
|
298
|
+
`findList` and `findInfinite` always end the order on the primary key, in the first key's direction: `sort: [{ key: "age", direction: "desc" }]` → `age` desc, then `id` desc. A row with an equal value cannot repeat or go missing between pages.
|
|
299
|
+
|
|
300
|
+
- The primary key does not count against `maxSortFields` and need not be in `sortable`; whether a client may sort by it does not change. A sort that already holds it gets no second copy.
|
|
301
|
+
- `findAll` and `findOne` keep their order: they do not page.
|
|
302
|
+
- A composite primary key adds every field. A table with no primary key keeps its order and raises no error.
|
|
303
|
+
- On a column with no NULLs the order equals `findCursor`'s. On an optional field `findList` sends `nulls` (first on asc, last on desc) and `findCursor` does not.
|
|
304
|
+
- ⚠️ **Index cost.** An index on `(col)` alone no longer serves this order directly: PostgreSQL may use an incremental sort. On a large table add `@@index([col, id])`; on an optional field the index needs the same NULL order. `findCursor` needs `(col, id)` too.
|
|
305
|
+
|
|
296
306
|
### Cursor: ties and signing
|
|
297
307
|
|
|
298
308
|
- The seek key is `(cursorKey, @id)`: with a non-unique `cursorKey` (for example a shared `createdAt`) no row is skipped or repeated. When `cursorKey` is the primary key itself the seek uses that one field.
|
package/README.md
CHANGED
|
@@ -293,6 +293,16 @@ const p2 = await postsRepository.findCursor({ limit: 20, cursor: p1.meta.next_cu
|
|
|
293
293
|
p1.meta; // { limit, has_next, has_prev, next_cursor, prev_cursor }
|
|
294
294
|
```
|
|
295
295
|
|
|
296
|
+
### Offset sahifalarda barqaror tartib
|
|
297
|
+
|
|
298
|
+
`findList` va `findInfinite` tartibi doim primary key bilan tugaydi, birinchi kalit yo'nalishida: `sort: [{ key: "age", direction: "desc" }]` → `age` desc, keyin `id` desc. Teng qiymatli qator sahifalar orasida takrorlanmaydi va tushib qolmaydi.
|
|
299
|
+
|
|
300
|
+
- Primary key `maxSortFields` ga sanalmaydi va `sortable` da bo'lishi shart emas; mijoz u bo'yicha saralay olishi o'zgarmaydi. Sort'da allaqachon bo'lsa, qayta qo'shilmaydi.
|
|
301
|
+
- `findAll` va `findOne` tartibi o'zgarmaydi: ular sahifalamaydi.
|
|
302
|
+
- Composite primary key'da hamma maydon qo'shiladi. Primary key bo'lmasa, tartib avvalgidek va xato yo'q.
|
|
303
|
+
- NULL bo'lmagan ustunda tartib `findCursor` tartibi bilan bir xil. Optional maydonda `findList` `nulls` yozadi (asc'da first, desc'da last), `findCursor` yozmaydi.
|
|
304
|
+
- ⚠️ **Indeks narxi.** Faqat `(col)` indeksi bu tartibga to'g'ridan-to'g'ri xizmat qilmaydi: PostgreSQL incremental sort ishlatishi mumkin. Katta jadvalda `@@index([col, id])` qo'ying; optional maydonda indeks ham o'sha NULL tartibida bo'lishi kerak. `findCursor` ga ham `(col, id)` kerak.
|
|
305
|
+
|
|
296
306
|
### Cursor: teng qiymatlar va imzo
|
|
297
307
|
|
|
298
308
|
- Seek kaliti `(cursorKey, @id)`: `cursorKey` unikal bo'lmasa ham (masalan bir xil `createdAt`) hech bir qator tushib qolmaydi va takrorlanmaydi. `cursorKey` primary key'ning o'zi bo'lsa — bitta maydonli seek.
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var core=require('@querykitjs/core'),internal=require('@querykitjs/core/internal');function H(e){if(typeof e!="object"||e===null)return false;let t=e;return typeof t.findMany=="function"&&typeof t.findFirst=="function"&&typeof t.count=="function"}function U(e){return Object.keys(e).filter(t=>!t.startsWith("$")&&!t.startsWith("_")&&t!=="constructor"&&H(e[t]))}var Me=e=>e&&e[0].toLowerCase()+e.slice(1),Pe=new Set(["scalar","enum","object","unsupported"]),Oe=e=>typeof e=="string"&&Pe.has(e)?e:"scalar";function We(e,t){let n=e._runtimeDataModel,r=n?.models;if(!r||typeof r!="object")return;let i=Object.keys(r).find(a=>Me(a)===t);if(!i)return;let o=r[i]?.fields;if(!Array.isArray(o))return;let s=[];for(let a of o)typeof a?.name=="string"&&s.push({name:a.name,type:typeof a.type=="string"?a.type:"",kind:Oe(a.kind),isId:a.isId===true,isUpdatedAt:a.isUpdatedAt===true,isList:a.isList===true,...typeof a.dbName=="string"&&a.dbName?{dbName:a.dbName}:{},...Ne(n?.enums,a),...typeof a.isRequired=="boolean"?{isRequired:a.isRequired}:{},...Se(a.nativeType)});return s.length?{name:i,fields:s,primaryKey:r[i]?.primaryKey??null}:void 0}function Ce(e,t){let n=e?.fields;if(!n||typeof n!="object")return;let r=[],i;for(let o of Object.values(n)){let s=o;typeof s.name=="string"&&(typeof s.modelName=="string"&&(i??=s.modelName),r.push({name:s.name,type:typeof s.typeName=="string"?s.typeName:"",kind:s.isEnum===true?"enum":"scalar",isId:s.name==="id",isUpdatedAt:false,isList:s.isList===true}));}return r.length?{name:i??t,fields:r}:void 0}function Z(e,t,n){let r=e[t];if(!H(r)){let g=U(e);throw new Error(`createRegistry: "${t}" is not a model delegate on this Prisma client. Available models: ${g.join(", ")||"(none)"}. Note the key is camelCase \u2014 model "LegalEntity" is "legalEntity".`)}let i=We(e,t)??Ce(r,t),o=n?.length?{name:i?.name??t,fields:Ie(i?.fields??[],n)}:i;if(!o)throw new Error(`createRegistry: could not read field metadata for model "${t}". This adapter reads it from the Prisma client at runtime (\`_runtimeDataModel\`, then \`delegate.fields\`); both were unavailable, which usually means an unsupported @prisma/client version (^6.19 or ^7.10 expected). Pass \`fields\` in the repository options to supply it explicitly.`);let s=new Map,a=new Map;for(let g of o.fields)s.set(g.name,g),g.dbName&&g.dbName!==g.name&&a.set(g.dbName,g.name);for(let g of s.keys())a.delete(g);let p=s.get("id")?.name??[...s.values()].find(g=>g.isId)?.name,f=s.get("updatedAt"),h=o.primaryKey,d=Array.isArray(h?.fields)?h.fields.filter(g=>typeof g=="string"):[],c=p?[p]:d.filter(g=>s.has(g)),R=p?void 0:(typeof h?.name=="string"&&h.name?h.name:c.join("_"))||void 0;return {name:o.name,fields:s,byDbName:a,primaryKey:c,primaryKeyName:R,idField:p,hasDeletedAt:s.has("deletedAt"),stampUpdatedAt:f&&!f.isUpdatedAt?f.name:void 0,hasCreatedAt:s.has("createdAt")}}function x(e,t){return t==="id"?e.fields.has("id")?"id":e.idField:e.fields.has(t)?t:e.byDbName.get(t)}function J(e,t){return e.fields.get(t)}function Ee(e,t){return e.fields.get(t)?.type==="DateTime"}function Y(e,t){return e.fields.get(t)?.type==="String"}function ee(e,t,n){if(!Ee(e,t)||n==null||n instanceof Date||typeof n!="string"&&typeof n!="number")return n;let r=new Date(n);return Number.isNaN(r.getTime())?n:r}function Ne(e,t){if(t.kind!=="enum"||typeof t.type!="string")return {};let n=e?.[t.type]?.values?.map(r=>r.name).filter(r=>typeof r=="string");return n&&n.length>0?{enumValues:n}:{}}function Ie(e,t){let n=new Map(t.map(o=>[o.name,o])),r=e.map(o=>({...o,...n.get(o.name)})),i=new Set(e.map(o=>o.name));for(let o of t)i.has(o.name)||r.push({type:"",kind:"scalar",isId:false,isUpdatedAt:false,isList:false,...o});return r}function Se(e){let t=Array.isArray(e)?e[0]:e;return typeof t=="string"&&t?{nativeType:t}:{}}function te(e,t,n,r=e.hasCreatedAt?"createdAt":void 0){let i=[];for(let{key:o,direction:s}of internal.normalizeSort(t,n)){let a=x(e,o);a?i.push({[a]:e.fields.get(a)?.isRequired===false?{sort:s,nulls:s==="asc"?"first":"last"}:s}):internal.reportSkip(n,{site:"sort",key:o,reason:"unknown-key"});}return i.length>0?i:r?[{[r]:"desc"}]:e.idField?[{[e.idField]:"desc"}]:[]}function V(e){return Object.entries(e).filter(([,t])=>t).map(([t])=>t)}function q(e,t){if(e.forcedKeys)return e.forcedKeys;let n=t?V(t):[];if(!e.allowed)return n.length>0?n:void 0;let r=n.filter(i=>e.allowed.has(i));return r.length>0?r:[...e.allowed]}function ne(e,t,n,r,i=[]){let o={};if(r)for(let[h,d]of Object.entries(r))d&&(o[h]=d);let s=Object.keys(o).length>0,a=q(t,n),p={};if(a)for(let h of [...a,...i]){let d=x(e,h);d&&(p[d]=true);}return Object.keys(p).length>0?s?{select:{...p,...o}}:{select:p}:s?{include:o}:{}}var re=new Set(core.TEXT_FILTER_OPERATORS),T=Symbol("querykit.invalid-value"),oe=e=>re.has(e),_e=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function E(e,t,n){if(n==null)return n;let r=J(e,t)?.type;if(r==="DateTime"){if(n instanceof Date)return Number.isNaN(n.getTime())?T:n;let o=ee(e,t,n);return o instanceof Date?Number.isNaN(o.getTime())?T:o:T}if(r==="Int"||r==="BigInt"){if(typeof n=="number")return Number.isInteger(n)?n:T;if(typeof n=="bigint")return n;if(typeof n=="string"&&n.trim()!==""){let o=Number(n);return Number.isInteger(o)?o:T}return T}if(r==="Float"||r==="Decimal"){if(typeof n=="number")return Number.isFinite(n)?n:T;if(typeof n=="string"&&n.trim()!==""){let o=Number(n);return Number.isFinite(o)?o:T}return T}if(r==="Boolean")return typeof n=="boolean"?n:n==="true"||n==="1"||n===1?true:n==="false"||n==="0"||n===0?false:T;if(e.fields.get(t)?.nativeType==="Uuid")return typeof n=="string"&&_e.test(n)?n:T;let i=e.fields.get(t)?.enumValues;return i?typeof n=="string"&&i.includes(n)?n:T:n}function ie(e,t,n,r){if(r===void 0||re.has(n))return r;if(Array.isArray(r)){let o=[];for(let s of r){let a=E(e,t,s);if(a===T)return T;o.push(a);}return o}let i=E(e,t,r);return i===T?T:i}var Q=e=>typeof e?.buildFor=="function",W=e=>String(e??""),se=e=>Array.isArray(e)&&e.length===2?[e[0],e[1]]:void 0,P=(e,t)=>t.isString?{...e,mode:"insensitive"}:e;function v(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n];if(r==="\\"){let i=e[n+1];if(i===void 0)return;t.push({kind:"lit",char:i}),n++;continue}r==="%"?t.push({kind:"any",char:"%"}):r==="_"?t.push({kind:"one",char:"_"}):t.push({kind:"lit",char:r});}return t}var ae=e=>e.map(t=>t.kind==="lit"&&(t.char==="%"||t.char==="_"||t.char==="\\")?`\\${t.char}`:t.char).join("");function Be(e){let t=v(e);if(!t)return;let n=0,r=t.length,i=false,o=false;for(;n<r&&t[n].kind==="any";)i=true,n++;for(;r>n&&t[r-1].kind==="any";)o=true,r--;let s=t.slice(n,r);if(s.some(f=>f.kind!=="lit"))return;let a=s.map(f=>f.char).join(""),p=i&&o?"contains":i?"endsWith":o?"startsWith":"equals";if(!(p!=="equals"&&/[%_]/.test(a)))return {op:p,value:a}}function Ue(e,t,n){let r=v(e);if(!r)return;let i=s=>n?P(s,t):s,o=ae(r);return {buildFor(s){if(r[r.length-1]?.kind==="any")return {[s]:i({startsWith:o.replace(/%$/,"")})};let a=r.map(p=>p.kind).lastIndexOf("any");if(a>=0){let p=ae(r.slice(a+1));return {AND:[{[s]:i({startsWith:o})},{[s]:i({endsWith:p})}]}}return {AND:[{[s]:i({startsWith:o})},{NOT:{[s]:i({startsWith:`${o}_`})}}]}}}}var $=(e,t,n)=>{let r=W(e);if(v(r)?.some(o=>o.kind==="one"))return;let i=Be(r);if(i){let o={[i.op]:i.value};return n?P(o,t):o}return Ue(r,t,n)},de={"=":e=>({equals:e}),eq:e=>({equals:e}),"!=":e=>({not:e}),ne:e=>({not:e}),">":e=>({gt:e}),gt:e=>({gt:e}),">=":e=>({gte:e}),gte:e=>({gte:e}),"<":e=>({lt:e}),lt:e=>({lt:e}),"<=":e=>({lte:e}),lte:e=>({lte:e}),contains:(e,t)=>P({contains:W(e)},t),"%_%":(e,t)=>P({contains:W(e)},t),startsWith:(e,t)=>P({startsWith:W(e)},t),"%_":(e,t)=>P({startsWith:W(e)},t),endsWith:(e,t)=>P({endsWith:W(e)},t),"_%":(e,t)=>P({endsWith:W(e)},t),like:(e,t)=>$(e,t,false),ilike:(e,t)=>$(e,t,true),notLike:(e,t)=>{let n=$(e,t,false);if(n)return Q(n)?{buildFor:r=>({NOT:n.buildFor(r)})}:{not:n}},in:e=>Array.isArray(e)?{in:e}:void 0,notIn:e=>Array.isArray(e)?{notIn:e}:void 0,between:e=>{let t=se(e);return t?{gte:t[0],lte:t[1]}:void 0},notBetween:e=>{let t=se(e);if(t)return {buildFor:n=>({NOT:{[n]:{gte:t[0],lte:t[1]}}})}},isNull:()=>({equals:null}),isNotNull:()=>({not:null})};var ue=e=>typeof e=="object"&&e!==null,$e=e=>ue(e)&&"key"in e&&!("and"in e)&&!("or"in e)&&!("not"in e);function S(e,t){let n=t.filter(r=>r!==void 0);if(n.length!==0)return n.length===1?n[0]:{[e]:n}}function Qe(e,t,n){let r=t.operation??"=",i=de[r];if(!i)throw new Error(`Unsupported filter operator: "${r}"`);let o=x(e,t.key);if(!o){internal.reportSkip(n,{site:"filter",key:t.key,operation:r,reason:"unknown-key"});return}let s=Y(e,o);if(oe(r)&&!s){internal.reportSkip(n,{site:"filter",key:t.key,operation:r,reason:"invalid-value"});return}let a=ie(e,o,r,t.value);if(a===T){internal.reportSkip(n,{site:"filter",key:t.key,operation:r,reason:"invalid-value"});return}let p=i(a,{isString:s});if(p===void 0){internal.reportSkip(n,{site:"filter",key:t.key,operation:r,reason:"invalid-value"});return}return Q(p)?p.buildFor(o):{[o]:p}}function N(e,t,n){if($e(t))return Qe(e,t,n);if(ue(t)){if("and"in t)return S("AND",t.and.map(r=>N(e,r,n)));if("or"in t)return S("OR",t.or.map(r=>N(e,r,n)));if("not"in t){let r=N(e,t.not,n);return r?{NOT:r}:void 0}if(internal.isRaw(t))return t;throw new core.QueryKitError({source:e.name,site:"filter",key:Object.keys(t)[0]??"",reason:"forbidden-key"})}}function j(e,t,n){if(t!==void 0)return Array.isArray(t)?S("AND",t.map(r=>N(e,r,n))):N(e,t,n)}function K(e){return S("AND",e)}function fe(e,t,n){let r=Z(e.baseClient,t,n.fields),i=()=>e.getExecutor()[t],o={source:r.name,strict:e.strict,onSkipped:e.onSkippedCondition},s=x(r,e.timestamps?.deletedAt??"deletedAt"),a=x(r,e.timestamps?.createdAt??"createdAt"),p=w=>te(r,w,o,a),f=w=>internal.checkWith(w,n.relations,Ye,o.source),h=Ze(r,n),d=et(r,n,e.limits,a),c=(w,b)=>K([w,h,s&&!b?{[s]:null}:void 0]),R=(w,b)=>c(j(r,w,o),b),g=(w,b)=>{if(internal.isAllRows(w))return c(void 0);internal.isEmptyFilter(w)&&internal.refuseEmptyFilter(o.source,b),d.checkFilter(w);let A=j(r,w,o);return A===void 0?internal.refuseEmptyFilter(o.source,b):c(A)},D=(w,b,A)=>{if(!x(r,b))throw new core.QueryKitError({source:r.name,site:"filter",key:b,reason:"unknown-key"});let C={key:b,operation:"=",value:A};return w?Array.isArray(w)?[...w,C]:{and:[w,C]}:[C]},F=Je(n),{forcedKeys:u,allowed:l}=F;return {runtime:e,meta:r,diag:o,delegate:i,guard:F,policy:d,guarded:!!(u??l),permits:w=>u?u.includes(w):l?l.has(w):true,projection:(w,b,A)=>ne(r,F,w,b,A),deletedAtField:s,createdAtField:a,sortBy:p,withOf:f,composeWhere:R,mutationWhere:g,withId:D,countWhere:w=>i().count({where:w})}}var M=e=>e===void 0?[]:Array.isArray(e)?e:[e];function Ze(e,t){let n=internal.scopeConditions(t.scope);for(let r of n)if(!x(e,r.key))throw new core.QueryKitError({source:e.name,site:"filter",key:r.key,reason:"unknown-key"});return n.length?j(e,n):void 0}function Je(e){let t=e.forcedColumns?V(e.forcedColumns):void 0;if(e.forcedColumns&&t.length===0)throw new Error("buildRepository: forcedColumns must select at least one field (an empty selection would return the full row).");let n=e.allowedColumns?new Set(e.allowedColumns):void 0;if(e.allowedColumns&&n.size===0)throw new Error("buildRepository: allowedColumns must list at least one field (an empty allowlist would return the full row).");return {forcedKeys:t,allowed:n}}var Ye={columns:"select",nested:"include",filters:["where"],logical:["AND","OR","NOT"],paging:["take","skip"],orderBy:"orderBy"};function et(e,t,n,r){let i=o=>{let s=o.indexOf(".");return s<0?x(e,o):e.fields.get(o.slice(0,s))?.kind==="object"?o:void 0};return internal.resolvePolicy({source:e.name,fieldOf:i,primaryKey:e.idField??"id",createdAt:r,filterable:t.filterable,sortable:t.sortable,allowedColumns:t.allowedColumns,forcedColumns:t.forcedColumns,limits:{...n,...t.limits}})}function ge(e){let t={};for(let[n,r]of Object.entries(e)){if(!n.startsWith("_")){t[n]=r;continue}if(n==="_count"){typeof r=="number"&&(t.count=r);continue}let i=n.slice(1);for(let[o,s]of Object.entries(r??{}))s!==void 0&&(t[`${i}_${o}`]=s);}return t}function pe(e){let{meta:t,diag:n,delegate:r,permits:i,policy:o,composeWhere:s}=e,a=f=>{let h=i(f)?x(t,f):void 0;return h||internal.reportSkip(n,{site:"aggregate",key:f,reason:"unknown-key"}),h},p=f=>{let h={};for(let d of f){let c=a(d);c&&(h[c]=true);}return Object.keys(h).length?h:void 0};return {async aggregate(f){o.checkFilter(f.filter);for(let F of [f.groupBy,f.sum,f.avg,f.min,f.max].flatMap(u=>M(u)))o.checkAggregateKey(F);let h=M(f.groupBy).map(a).filter(F=>!!F),d=p(M(f.sum)),c=p(M(f.avg)),R=p(M(f.min)),g=p(M(f.max)),D={where:s(f.filter,f.withDeleted)};return f.count&&(D._count=true),d&&(D._sum=d),c&&(D._avg=c),R&&(D._min=R),g&&(D._max=g),h.length>0?(await r().groupBy({...D,by:h})).map(ge):[ge(await r().aggregate(D))]}}}function me(e){let{runtime:t,meta:n,diag:r,delegate:i,guard:o,guarded:s,permits:a,projection:p,policy:f,withOf:h,composeWhere:d}=e;return {async findCursor(c={}){let R=internal.clampPageSize(c.limit,t.defaultLimit,t.maxLimit),g=c.cursorKey??"id";f.checkFilter(c.filter),c.cursorKey!==void 0&&f.checkCursorKey(g);let D=c.order??"asc",F=c.direction??"forward",u=x(n,g);if(!u)throw new core.QueryKitError({source:r.source,site:"cursorKey",key:g,reason:"unknown-key"});let l=n.idField??"id",y=await internal.decodeCursorToken(c.cursor,{source:r.source,secret:t.cursorSecret,key:g}),m=y===void 0?void 0:E(n,u,y.k),k=y===void 0?void 0:E(n,l,y.id);if(m===T||k===T)throw new core.QueryKitError({source:r.source,site:"cursorKey",key:g,reason:"invalid-value"});let w=d(c.filter,c.withDeleted),b=F==="forward"?D==="asc":D==="desc",A=b?"gt":"lt",C=u!==l,xe=y===void 0?void 0:C?{OR:[{[u]:{[A]:m}},{AND:[{[u]:{equals:m}},{[l]:{[A]:k}}]}]}:{[u]:{[A]:m}},Fe=K([w,xe]),_=q(o,c.columns),X=_===void 0?[]:[u,l].filter(O=>s&&(!a(O)||!_.includes(O))||O===l&&O!==u&&!_.includes(O)),be=await i().findMany({where:Fe,orderBy:C?[{[u]:b?"asc":"desc"},{[l]:b?"asc":"desc"}]:[{[u]:b?"asc":"desc"}],take:R+1,...p(c.columns,h(c.with),[u,l])}),B=await internal.cursorPage(be,{limit:R,direction:F,hasCursor:y!==void 0,cursorField:u,idField:l,secret:t.cursorSecret});return X.length>0&&(B.data=B.data.map(O=>Object.fromEntries(Object.entries(O).filter(([Ae])=>!X.includes(Ae))))),B}}}function G(e,t){if(e.primaryKey.length===0)throw new Error(`${t}: model "${e.name}" has no primary key, so a row cannot be addressed individually. Use updateWhere/deleteWhere with an explicit filter instead.`);return e.primaryKey}var we=e=>Object.fromEntries(e.map(t=>[t,true]));function z(e,t,n){return t.length===1?{[t[0]]:n[t[0]]}:{[e.primaryKeyName??t.join("_")]:Object.fromEntries(t.map(r=>[r,n[r]]))}}var ke=1e3;function Re(e,t){let{runtime:n,meta:r,delegate:i,deletedAtField:o,createdAtField:s,composeWhere:a,mutationWhere:p,withId:f}=e,h=u=>internal.clampPageSize(u.limit,n.defaultLimit,n.maxLimit),d=u=>({...internal.scopeDefaults(t.scope),...u,...internal.scopeDefaults(t.scope)}),c=u=>{let l={...u};return r.stampUpdatedAt&&(l[r.stampUpdatedAt]=new Date),l},R=(u,l)=>{let y=u.map(m=>{let k=x(r,m);if(!k)throw new Error(`upsert: unknown target field "${m}".`);return k});return y.length===1?{[y[0]]:l[y[0]]}:{[y.join("_")]:Object.fromEntries(y.map(m=>[m,l[m]]))}},g=(u,l)=>{let y=new Set([...l,s??"createdAt"]),m={};for(let[k,w]of Object.entries(u))y.has(k)||(m[k]=w);return c(m)},D=async(u,l,y)=>{let m=d(u),k=l.set?c(l.set):g(m,y);return await i().upsert({where:R(y,m),create:m,update:k})},F=async(u,l,y)=>{let m=G(r,y),k=i(),w=await k.findFirst({where:u,select:we(m)});if(w)return await k.update({where:z(r,m,w),data:l})};return {async create(u){return await i().create({data:d(u)})},async createMany(u){if(u.length===0)return [];let l=u.map(k=>d(k)),y=i();if(typeof y.createManyAndReturn=="function")return await y.createManyAndReturn({data:l});let m=[];for(let k of l)m.push(await y.create({data:k}));return m},upsert(u,l){return D(u,l,M(l.target))},async upsertMany(u,l){if(u.length===0)return [];let y=M(l.target),m=[];for(let k=0;k<u.length;k+=ke)for(let w of u.slice(k,k+ke))m.push(await D(w,l,y));return m},async updateById(u,l,y="id"){return F(a(f(void 0,y,u)),c(l),"updateById")},async updateWhere(u,l,y={}){let m=p(u,"updateWhere"),k=c(l);if(!y.returning)return {count:(await i().updateMany({where:m,data:k})).count};let w=await i().updateManyAndReturn({where:m,data:k});return {count:w.length,rows:w.slice(0,h(y.returning))}},async deleteById(u,l="id"){let y=G(r,"deleteById"),m=i(),k=await m.findFirst({where:a(f(void 0,l,u))});if(k)return await m.delete({where:z(r,y,k)})},async deleteWhere(u,l={}){let y=p(u,"deleteWhere"),m=l.returning?await i().findMany({where:y,take:h(l.returning)}):void 0,{count:k}=await i().deleteMany({where:y});return m?{count:k,rows:m}:{count:k}},async softDelete(u,l="id"){if(!o)throw new Error("softDelete: model has no deletedAt field.");return F(a(f(void 0,l,u),false),c({[o]:new Date}),"softDelete")},async restore(u,l="id"){if(!o)throw new Error("restore: model has no deletedAt field.");return F(a(f(void 0,l,u),true),c({[o]:null}),"restore")}}}function De(e){let{runtime:t,delegate:n,projection:r,policy:i,sortBy:o,withOf:s,composeWhere:a,withId:p,countWhere:f}=e,h=d=>{i.checkFilter(d.filter),i.checkSort(d.sort);};return {async findAll(d={}){return h(d),await n().findMany({where:a(d.filter,d.withDeleted),orderBy:o(d.sort),...r(d.columns,s(d.with))})},async findOne(d={}){return h(d),await n().findFirst({where:a(d.filter,d.withDeleted),orderBy:o(d.sort),...r(d.columns,s(d.with))})??void 0},async findById(d,c={}){let{idKey:R="id",filter:g}=c;return i.checkFilter(g),await n().findFirst({where:a(p(g,R,d),c.withDeleted),...r(c.columns,s(c.with))})??void 0},async findList(d={}){h(d);let c=internal.clampPage(d.page),R=internal.clampPageSize(d.perPage,t.defaultPerPage,t.maxPerPage);i.checkPage({page:c,perPage:R});let g=a(d.filter,d.withDeleted),D=l=>n().findMany({where:g,orderBy:o(d.sort),take:l,skip:(c-1)*R,...r(d.columns,s(d.with))});if(d.withTotal===false)return internal.offsetPageWithoutTotal(await D(R+1),c,R);let[F,u]=await Promise.all([D(R),f(g)]);return {data:F,meta:internal.offsetMeta(c,R,u)}},async findInfinite(d={}){let c=internal.clampPageSize(d.limit,t.defaultLimit,t.maxLimit),R=internal.clampOffset(d.offset);h(d),i.checkPage({offset:R});let g=await n().findMany({where:a(d.filter,d.withDeleted),orderBy:o(d.sort),take:c+1,skip:R,...r(d.columns,s(d.with))});return internal.infinitePage(g,c,R)},async count(d){return i.checkFilter(d),f(a(d))},async exists(d){return i.checkFilter(d),await f(a(d))>0}}}function L(e,t,n={}){let r=fe(e,t,n);return {get delegate(){return r.delegate()},...De(r),...me(r),...Re(r,n),...pe(r),scoped(o){return L(e,t,{...n,scope:{...n.scope,...o}})}}}function mt(e,t){if(typeof t=="string")return t;let n=U(e),r=n.find(i=>e[i]===t);if(!r)throw new Error(`createRegistry: the given delegate does not belong to this Prisma client. Pass a model from the same client you passed to createRegistry (available: ${n.join(", ")||"(none)"}), or use its name, e.g. repository("user").`);return r}function wt(e,t={}){let n=internal.createContextStore(),r={baseClient:e,getExecutor:()=>n.get()?.executor??e,defaultPerPage:t.defaultPerPage??core.DEFAULT_PER_PAGE,defaultLimit:t.defaultLimit??core.DEFAULT_LIMIT,maxPerPage:t.maxPerPage??core.DEFAULT_MAX_PER_PAGE,maxLimit:t.maxLimit??core.DEFAULT_MAX_LIMIT,strict:t.strict??false,onSkippedCondition:t.onSkippedCondition,limits:t.limits,cursorSecret:t.cursorSecret,timestamps:t.timestamps};function i(s,a,p){let f=typeof a=="function"?void 0:a,h=typeof a=="function"?a:p,d=L(r,mt(e,s),f);return h?{...d,...h(d)}:d}return {client:e,repository:i,transaction:s=>n.get()?.executor?s():e.$transaction(a=>n.run({executor:a},s))}}function Rt(){return core.createFilters()}Object.defineProperty(exports,"f",{enumerable:true,get:function(){return core.f}});exports.buildRepository=L;exports.createFilters=Rt;exports.createRegistry=wt;//# sourceMappingURL=index.cjs.map
|
|
1
|
+
'use strict';var core=require('@querykitjs/core'),internal=require('@querykitjs/core/internal');function J(e){if(typeof e!="object"||e===null)return false;let t=e;return typeof t.findMany=="function"&&typeof t.findFirst=="function"&&typeof t.count=="function"}function V(e){return Object.keys(e).filter(t=>!t.startsWith("$")&&!t.startsWith("_")&&t!=="constructor"&&J(e[t]))}var Oe=e=>e&&e[0].toLowerCase()+e.slice(1),Pe=new Set(["scalar","enum","object","unsupported"]),We=e=>typeof e=="string"&&Pe.has(e)?e:"scalar";function Ce(e,t){let n=e._runtimeDataModel,r=n?.models;if(!r||typeof r!="object")return;let i=Object.keys(r).find(d=>Oe(d)===t);if(!i)return;let o=r[i]?.fields;if(!Array.isArray(o))return;let a=[];for(let d of o)typeof d?.name=="string"&&a.push({name:d.name,type:typeof d.type=="string"?d.type:"",kind:We(d.kind),isId:d.isId===true,isUpdatedAt:d.isUpdatedAt===true,isList:d.isList===true,...typeof d.dbName=="string"&&d.dbName?{dbName:d.dbName}:{},...Se(n?.enums,d),...typeof d.isRequired=="boolean"?{isRequired:d.isRequired}:{},...je(d.nativeType)});return a.length?{name:i,fields:a,primaryKey:r[i]?.primaryKey??null}:void 0}function Ee(e,t){let n=e?.fields;if(!n||typeof n!="object")return;let r=[],i;for(let o of Object.values(n)){let a=o;typeof a.name=="string"&&(typeof a.modelName=="string"&&(i??=a.modelName),r.push({name:a.name,type:typeof a.typeName=="string"?a.typeName:"",kind:a.isEnum===true?"enum":"scalar",isId:a.name==="id",isUpdatedAt:false,isList:a.isList===true}));}return r.length?{name:i??t,fields:r}:void 0}function Y(e,t,n){let r=e[t];if(!J(r)){let g=V(e);throw new Error(`createRegistry: "${t}" is not a model delegate on this Prisma client. Available models: ${g.join(", ")||"(none)"}. Note the key is camelCase \u2014 model "LegalEntity" is "legalEntity".`)}let i=Ce(e,t)??Ee(r,t),o=n?.length?{name:i?.name??t,fields:Ie(i?.fields??[],n)}:i;if(!o)throw new Error(`createRegistry: could not read field metadata for model "${t}". This adapter reads it from the Prisma client at runtime (\`_runtimeDataModel\`, then \`delegate.fields\`); both were unavailable, which usually means an unsupported @prisma/client version (^6.19 or ^7.10 expected). Pass \`fields\` in the repository options to supply it explicitly.`);let a=new Map,d=new Map;for(let g of o.fields)a.set(g.name,g),g.dbName&&g.dbName!==g.name&&d.set(g.dbName,g.name);for(let g of a.keys())d.delete(g);let c=a.get("id")?.name??[...a.values()].find(g=>g.isId)?.name,f=a.get("updatedAt"),m=o.primaryKey,k=Array.isArray(m?.fields)?m.fields.filter(g=>typeof g=="string"):[],s=c?[c]:k.filter(g=>a.has(g)),R=c?void 0:(typeof m?.name=="string"&&m.name?m.name:s.join("_"))||void 0;return {name:o.name,fields:a,byDbName:d,primaryKey:s,primaryKeyName:R,idField:c,hasDeletedAt:a.has("deletedAt"),stampUpdatedAt:f&&!f.isUpdatedAt?f.name:void 0,hasCreatedAt:a.has("createdAt")}}function x(e,t){return t==="id"?e.fields.has("id")?"id":e.idField:e.fields.has(t)?t:e.byDbName.get(t)}function ee(e,t){return e.fields.get(t)}function Ne(e,t){return e.fields.get(t)?.type==="DateTime"}function te(e,t){return e.fields.get(t)?.type==="String"}function ne(e,t,n){if(!Ne(e,t)||n==null||n instanceof Date||typeof n!="string"&&typeof n!="number")return n;let r=new Date(n);return Number.isNaN(r.getTime())?n:r}function Se(e,t){if(t.kind!=="enum"||typeof t.type!="string")return {};let n=e?.[t.type]?.values?.map(r=>r.name).filter(r=>typeof r=="string");return n&&n.length>0?{enumValues:n}:{}}function Ie(e,t){let n=new Map(t.map(o=>[o.name,o])),r=e.map(o=>({...o,...n.get(o.name)})),i=new Set(e.map(o=>o.name));for(let o of t)i.has(o.name)||r.push({type:"",kind:"scalar",isId:false,isUpdatedAt:false,isList:false,...o});return r}function je(e){let t=Array.isArray(e)?e[0]:e;return typeof t=="string"&&t?{nativeType:t}:{}}function q(e,t,n,r=e.hasCreatedAt?"createdAt":void 0){let i=[];for(let{key:o,direction:a}of internal.normalizeSort(t,n)){let d=x(e,o);d?i.push({[d]:e.fields.get(d)?.isRequired===false?{sort:a,nulls:a==="asc"?"first":"last"}:a}):internal.reportSkip(n,{site:"sort",key:o,reason:"unknown-key"});}return i.length>0?i:r?[{[r]:"desc"}]:e.idField?[{[e.idField]:"desc"}]:[]}function re(e,t,n,r){let i=q(e,t,n,r),o=i[0]&&Object.values(i[0])[0],a=(typeof o=="object"?o.sort:o)==="asc"?"asc":"desc",d=new Set(i.flatMap(c=>Object.keys(c)));return [...i,...e.primaryKey.filter(c=>!d.has(c)).map(c=>({[c]:a}))]}function $(e){return Object.entries(e).filter(([,t])=>t).map(([t])=>t)}function Q(e,t){if(e.forcedKeys)return e.forcedKeys;let n=t?$(t):[];if(!e.allowed)return n.length>0?n:void 0;let r=n.filter(i=>e.allowed.has(i));return r.length>0?r:[...e.allowed]}function oe(e,t,n,r,i=[]){let o={};if(r)for(let[m,k]of Object.entries(r))k&&(o[m]=k);let a=Object.keys(o).length>0,d=Q(t,n),c={};if(d)for(let m of [...d,...i]){let k=x(e,m);k&&(c[k]=true);}return Object.keys(c).length>0?a?{select:{...c,...o}}:{select:c}:a?{include:o}:{}}var ie=new Set(core.TEXT_FILTER_OPERATORS),D=Symbol("querykit.invalid-value"),se=e=>ie.has(e),_e=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;function N(e,t,n){if(n==null)return n;let r=ee(e,t)?.type;if(r==="DateTime"){if(n instanceof Date)return Number.isNaN(n.getTime())?D:n;let o=ne(e,t,n);return o instanceof Date?Number.isNaN(o.getTime())?D:o:D}if(r==="Int"||r==="BigInt"){if(typeof n=="number")return Number.isInteger(n)?n:D;if(typeof n=="bigint")return n;if(typeof n=="string"&&n.trim()!==""){let o=Number(n);return Number.isInteger(o)?o:D}return D}if(r==="Float"||r==="Decimal"){if(typeof n=="number")return Number.isFinite(n)?n:D;if(typeof n=="string"&&n.trim()!==""){let o=Number(n);return Number.isFinite(o)?o:D}return D}if(r==="Boolean")return typeof n=="boolean"?n:n==="true"||n==="1"||n===1?true:n==="false"||n==="0"||n===0?false:D;if(e.fields.get(t)?.nativeType==="Uuid")return typeof n=="string"&&_e.test(n)?n:D;let i=e.fields.get(t)?.enumValues;return i?typeof n=="string"&&i.includes(n)?n:D:n}function ae(e,t,n,r){if(r===void 0||ie.has(n))return r;if(Array.isArray(r)){let o=[];for(let a of r){let d=N(e,t,a);if(d===D)return D;o.push(d);}return o}let i=N(e,t,r);return i===D?D:i}var G=e=>typeof e?.buildFor=="function",C=e=>String(e??""),de=e=>Array.isArray(e)&&e.length===2?[e[0],e[1]]:void 0,P=(e,t)=>t.isString?{...e,mode:"insensitive"}:e;function z(e){let t=[];for(let n=0;n<e.length;n++){let r=e[n];if(r==="\\"){let i=e[n+1];if(i===void 0)return;t.push({kind:"lit",char:i}),n++;continue}r==="%"?t.push({kind:"any",char:"%"}):r==="_"?t.push({kind:"one",char:"_"}):t.push({kind:"lit",char:r});}return t}var ue=e=>e.map(t=>t.kind==="lit"&&(t.char==="%"||t.char==="_"||t.char==="\\")?`\\${t.char}`:t.char).join("");function Ue(e){let t=z(e);if(!t)return;let n=0,r=t.length,i=false,o=false;for(;n<r&&t[n].kind==="any";)i=true,n++;for(;r>n&&t[r-1].kind==="any";)o=true,r--;let a=t.slice(n,r);if(a.some(f=>f.kind!=="lit"))return;let d=a.map(f=>f.char).join(""),c=i&&o?"contains":i?"endsWith":o?"startsWith":"equals";if(!(c!=="equals"&&/[%_]/.test(d)))return {op:c,value:d}}function Ve(e,t,n){let r=z(e);if(!r)return;let i=a=>n?P(a,t):a,o=ue(r);return {buildFor(a){if(r[r.length-1]?.kind==="any")return {[a]:i({startsWith:o.replace(/%$/,"")})};let d=r.map(c=>c.kind).lastIndexOf("any");if(d>=0){let c=ue(r.slice(d+1));return {AND:[{[a]:i({startsWith:o})},{[a]:i({endsWith:c})}]}}return {AND:[{[a]:i({startsWith:o})},{NOT:{[a]:i({startsWith:`${o}_`})}}]}}}}var v=(e,t,n)=>{let r=C(e);if(z(r)?.some(o=>o.kind==="one"))return;let i=Ue(r);if(i){let o={[i.op]:i.value};return n?P(o,t):o}return Ve(r,t,n)},le={"=":e=>({equals:e}),eq:e=>({equals:e}),"!=":e=>({not:e}),ne:e=>({not:e}),">":e=>({gt:e}),gt:e=>({gt:e}),">=":e=>({gte:e}),gte:e=>({gte:e}),"<":e=>({lt:e}),lt:e=>({lt:e}),"<=":e=>({lte:e}),lte:e=>({lte:e}),contains:(e,t)=>P({contains:C(e)},t),"%_%":(e,t)=>P({contains:C(e)},t),startsWith:(e,t)=>P({startsWith:C(e)},t),"%_":(e,t)=>P({startsWith:C(e)},t),endsWith:(e,t)=>P({endsWith:C(e)},t),"_%":(e,t)=>P({endsWith:C(e)},t),like:(e,t)=>v(e,t,false),ilike:(e,t)=>v(e,t,true),notLike:(e,t)=>{let n=v(e,t,false);if(n)return G(n)?{buildFor:r=>({NOT:n.buildFor(r)})}:{not:n}},in:e=>Array.isArray(e)?{in:e}:void 0,notIn:e=>Array.isArray(e)?{notIn:e}:void 0,between:e=>{let t=de(e);return t?{gte:t[0],lte:t[1]}:void 0},notBetween:e=>{let t=de(e);if(t)return {buildFor:n=>({NOT:{[n]:{gte:t[0],lte:t[1]}}})}},isNull:()=>({equals:null}),isNotNull:()=>({not:null})};var ce=e=>typeof e=="object"&&e!==null,Qe=e=>ce(e)&&"key"in e&&!("and"in e)&&!("or"in e)&&!("not"in e);function j(e,t){let n=t.filter(r=>r!==void 0);if(n.length!==0)return n.length===1?n[0]:{[e]:n}}function ve(e,t,n){let r=t.operation??"=",i=le[r];if(!i)throw new Error(`Unsupported filter operator: "${r}"`);let o=x(e,t.key);if(!o){internal.reportSkip(n,{site:"filter",key:t.key,operation:r,reason:"unknown-key"});return}let a=te(e,o);if(se(r)&&!a){internal.reportSkip(n,{site:"filter",key:t.key,operation:r,reason:"invalid-value"});return}let d=ae(e,o,r,t.value);if(d===D){internal.reportSkip(n,{site:"filter",key:t.key,operation:r,reason:"invalid-value"});return}let c=i(d,{isString:a});if(c===void 0){internal.reportSkip(n,{site:"filter",key:t.key,operation:r,reason:"invalid-value"});return}return G(c)?c.buildFor(o):{[o]:c}}function S(e,t,n){if(Qe(t))return ve(e,t,n);if(ce(t)){if("and"in t)return j("AND",t.and.map(r=>S(e,r,n)));if("or"in t)return j("OR",t.or.map(r=>S(e,r,n)));if("not"in t){let r=S(e,t.not,n);return r?{NOT:r}:void 0}if(internal.isRaw(t))return t;throw new core.QueryKitError({source:e.name,site:"filter",key:Object.keys(t)[0]??"",reason:"forbidden-key"})}}function K(e,t,n){if(t!==void 0)return Array.isArray(t)?j("AND",t.map(r=>S(e,r,n))):S(e,t,n)}function L(e){return j("AND",e)}function pe(e,t,n){let r=Y(e.baseClient,t,n.fields),i=()=>e.getExecutor()[t],o={source:r.name,strict:e.strict,onSkipped:e.onSkippedCondition},a=x(r,e.timestamps?.deletedAt??"deletedAt"),d=x(r,e.timestamps?.createdAt??"createdAt"),c=h=>q(r,h,o,d),f=h=>re(r,h,o,d),m=h=>internal.checkWith(h,n.relations,et,o.source),k=Je(r,n),s=tt(r,n,e.limits,d),R=(h,F)=>L([h,k,a&&!F?{[a]:null}:void 0]),g=(h,F)=>R(K(r,h,o),F),T=(h,F)=>{if(internal.isAllRows(h))return R(void 0);internal.isEmptyFilter(h)&&internal.refuseEmptyFilter(o.source,F),s.checkFilter(h);let O=K(r,h,o);return O===void 0?internal.refuseEmptyFilter(o.source,F):R(O)},b=(h,F,O)=>{if(!x(r,F))throw new core.QueryKitError({source:r.name,site:"filter",key:F,reason:"unknown-key"});let E={key:F,operation:"=",value:O};return h?Array.isArray(h)?[...h,E]:{and:[h,E]}:[E]},u=Ye(n),{forcedKeys:l,allowed:p}=u;return {runtime:e,meta:r,diag:o,delegate:i,guard:u,policy:s,guarded:!!(l??p),permits:h=>l?l.includes(h):p?p.has(h):true,projection:(h,F,O)=>oe(r,u,h,F,O),deletedAtField:a,createdAtField:d,sortBy:c,listSortBy:f,withOf:m,composeWhere:g,mutationWhere:T,withId:b,countWhere:h=>i().count({where:h})}}var M=e=>e===void 0?[]:Array.isArray(e)?e:[e];function Je(e,t){let n=internal.scopeConditions(t.scope);for(let r of n)if(!x(e,r.key))throw new core.QueryKitError({source:e.name,site:"filter",key:r.key,reason:"unknown-key"});return n.length?K(e,n):void 0}function Ye(e){let t=e.forcedColumns?$(e.forcedColumns):void 0;if(e.forcedColumns&&t.length===0)throw new Error("buildRepository: forcedColumns must select at least one field (an empty selection would return the full row).");let n=e.allowedColumns?new Set(e.allowedColumns):void 0;if(e.allowedColumns&&n.size===0)throw new Error("buildRepository: allowedColumns must list at least one field (an empty allowlist would return the full row).");return {forcedKeys:t,allowed:n}}var et={columns:"select",nested:"include",filters:["where"],logical:["AND","OR","NOT"],paging:["take","skip"],orderBy:"orderBy"};function tt(e,t,n,r){let i=o=>{let a=o.indexOf(".");return a<0?x(e,o):e.fields.get(o.slice(0,a))?.kind==="object"?o:void 0};return internal.resolvePolicy({source:e.name,fieldOf:i,primaryKey:e.idField??"id",createdAt:r,filterable:t.filterable,sortable:t.sortable,allowedColumns:t.allowedColumns,forcedColumns:t.forcedColumns,limits:{...n,...t.limits}})}function ye(e){let t={};for(let[n,r]of Object.entries(e)){if(!n.startsWith("_")){t[n]=r;continue}if(n==="_count"){typeof r=="number"&&(t.count=r);continue}let i=n.slice(1);for(let[o,a]of Object.entries(r??{}))a!==void 0&&(t[`${i}_${o}`]=a);}return t}function me(e){let{meta:t,diag:n,delegate:r,permits:i,policy:o,composeWhere:a}=e,d=f=>{let m=i(f)?x(t,f):void 0;return m||internal.reportSkip(n,{site:"aggregate",key:f,reason:"unknown-key"}),m},c=f=>{let m={};for(let k of f){let s=d(k);s&&(m[s]=true);}return Object.keys(m).length?m:void 0};return {async aggregate(f){o.checkFilter(f.filter);for(let b of [f.groupBy,f.sum,f.avg,f.min,f.max].flatMap(u=>M(u)))o.checkAggregateKey(b);let m=M(f.groupBy).map(d).filter(b=>!!b),k=c(M(f.sum)),s=c(M(f.avg)),R=c(M(f.min)),g=c(M(f.max)),T={where:a(f.filter,f.withDeleted)};return f.count&&(T._count=true),k&&(T._sum=k),s&&(T._avg=s),R&&(T._min=R),g&&(T._max=g),m.length>0?(await r().groupBy({...T,by:m})).map(ye):[ye(await r().aggregate(T))]}}}function he(e){let{runtime:t,meta:n,diag:r,delegate:i,guard:o,guarded:a,permits:d,projection:c,policy:f,withOf:m,composeWhere:k}=e;return {async findCursor(s={}){let R=internal.clampPageSize(s.limit,t.defaultLimit,t.maxLimit),g=s.cursorKey??"id";f.checkFilter(s.filter),s.cursorKey!==void 0&&f.checkCursorKey(g);let T=s.order??"asc",b=s.direction??"forward",u=x(n,g);if(!u)throw new core.QueryKitError({source:r.source,site:"cursorKey",key:g,reason:"unknown-key"});let l=n.idField??"id",p=await internal.decodeCursorToken(s.cursor,{source:r.source,secret:t.cursorSecret,key:g}),y=p===void 0?void 0:N(n,u,p.k),w=p===void 0?void 0:N(n,l,p.id);if(y===D||w===D)throw new core.QueryKitError({source:r.source,site:"cursorKey",key:g,reason:"invalid-value"});let A=k(s.filter,s.withDeleted),h=b==="forward"?T==="asc":T==="desc",F=h?"gt":"lt",O=u!==l,E=p===void 0?void 0:O?{OR:[{[u]:{[F]:y}},{AND:[{[u]:{equals:y}},{[l]:{[F]:w}}]}]}:{[u]:{[F]:y}},Fe=L([A,E]),_=Q(o,s.columns),Z=_===void 0?[]:[u,l].filter(W=>a&&(!d(W)||!_.includes(W))||W===l&&W!==u&&!_.includes(W)),Ae=await i().findMany({where:Fe,orderBy:O?[{[u]:h?"asc":"desc"},{[l]:h?"asc":"desc"}]:[{[u]:h?"asc":"desc"}],take:R+1,...c(s.columns,m(s.with),[u,l])}),U=await internal.cursorPage(Ae,{limit:R,direction:b,hasCursor:p!==void 0,cursorField:u,idField:l,secret:t.cursorSecret});return Z.length>0&&(U.data=U.data.map(W=>Object.fromEntries(Object.entries(W).filter(([Me])=>!Z.includes(Me))))),U}}}function X(e,t){if(e.primaryKey.length===0)throw new Error(`${t}: model "${e.name}" has no primary key, so a row cannot be addressed individually. Use updateWhere/deleteWhere with an explicit filter instead.`);return e.primaryKey}var ke=e=>Object.fromEntries(e.map(t=>[t,true]));function H(e,t,n){return t.length===1?{[t[0]]:n[t[0]]}:{[e.primaryKeyName??t.join("_")]:Object.fromEntries(t.map(r=>[r,n[r]]))}}var Te=1e3;function De(e,t){let{runtime:n,meta:r,delegate:i,deletedAtField:o,createdAtField:a,composeWhere:d,mutationWhere:c,withId:f}=e,m=u=>internal.clampPageSize(u.limit,n.defaultLimit,n.maxLimit),k=u=>({...internal.scopeDefaults(t.scope),...u,...internal.scopeDefaults(t.scope)}),s=u=>{let l={...u};return r.stampUpdatedAt&&(l[r.stampUpdatedAt]=new Date),l},R=(u,l)=>{let p=u.map(y=>{let w=x(r,y);if(!w)throw new Error(`upsert: unknown target field "${y}".`);return w});return p.length===1?{[p[0]]:l[p[0]]}:{[p.join("_")]:Object.fromEntries(p.map(y=>[y,l[y]]))}},g=(u,l)=>{let p=new Set([...l,a??"createdAt"]),y={};for(let[w,A]of Object.entries(u))p.has(w)||(y[w]=A);return s(y)},T=async(u,l,p)=>{let y=k(u),w=l.set?s(l.set):g(y,p);return await i().upsert({where:R(p,y),create:y,update:w})},b=async(u,l,p)=>{let y=X(r,p),w=i(),A=await w.findFirst({where:u,select:ke(y)});if(A)return await w.update({where:H(r,y,A),data:l})};return {async create(u){return await i().create({data:k(u)})},async createMany(u){if(u.length===0)return [];let l=u.map(w=>k(w)),p=i();if(typeof p.createManyAndReturn=="function")return await p.createManyAndReturn({data:l});let y=[];for(let w of l)y.push(await p.create({data:w}));return y},upsert(u,l){return T(u,l,M(l.target))},async upsertMany(u,l){if(u.length===0)return [];let p=M(l.target),y=[];for(let w=0;w<u.length;w+=Te)for(let A of u.slice(w,w+Te))y.push(await T(A,l,p));return y},async updateById(u,l,p="id"){return b(d(f(void 0,p,u)),s(l),"updateById")},async updateWhere(u,l,p={}){let y=c(u,"updateWhere"),w=s(l);if(!p.returning)return {count:(await i().updateMany({where:y,data:w})).count};let A=await i().updateManyAndReturn({where:y,data:w});return {count:A.length,rows:A.slice(0,m(p.returning))}},async deleteById(u,l="id"){let p=X(r,"deleteById"),y=i(),w=await y.findFirst({where:d(f(void 0,l,u))});if(w)return await y.delete({where:H(r,p,w)})},async deleteWhere(u,l={}){let p=c(u,"deleteWhere"),y=l.returning?await i().findMany({where:p,take:m(l.returning)}):void 0,{count:w}=await i().deleteMany({where:p});return y?{count:w,rows:y}:{count:w}},async softDelete(u,l="id"){if(!o)throw new Error("softDelete: model has no deletedAt field.");return b(d(f(void 0,l,u),false),s({[o]:new Date}),"softDelete")},async restore(u,l="id"){if(!o)throw new Error("restore: model has no deletedAt field.");return b(d(f(void 0,l,u),true),s({[o]:null}),"restore")}}}function be(e){let{runtime:t,delegate:n,projection:r,policy:i,sortBy:o,listSortBy:a,withOf:d,composeWhere:c,withId:f,countWhere:m}=e,k=s=>{i.checkFilter(s.filter),i.checkSort(s.sort);};return {async findAll(s={}){return k(s),await n().findMany({where:c(s.filter,s.withDeleted),orderBy:o(s.sort),...r(s.columns,d(s.with))})},async findOne(s={}){return k(s),await n().findFirst({where:c(s.filter,s.withDeleted),orderBy:o(s.sort),...r(s.columns,d(s.with))})??void 0},async findById(s,R={}){let{idKey:g="id",filter:T}=R;return i.checkFilter(T),await n().findFirst({where:c(f(T,g,s),R.withDeleted),...r(R.columns,d(R.with))})??void 0},async findList(s={}){k(s);let R=internal.clampPage(s.page),g=internal.clampPageSize(s.perPage,t.defaultPerPage,t.maxPerPage);i.checkPage({page:R,perPage:g});let T=c(s.filter,s.withDeleted),b=p=>n().findMany({where:T,orderBy:a(s.sort),take:p,skip:(R-1)*g,...r(s.columns,d(s.with))});if(s.withTotal===false)return internal.offsetPageWithoutTotal(await b(g+1),R,g);let[u,l]=await Promise.all([b(g),m(T)]);return {data:u,meta:internal.offsetMeta(R,g,l)}},async findInfinite(s={}){let R=internal.clampPageSize(s.limit,t.defaultLimit,t.maxLimit),g=internal.clampOffset(s.offset);k(s),i.checkPage({offset:g});let T=await n().findMany({where:c(s.filter,s.withDeleted),orderBy:a(s.sort),take:R+1,skip:g,...r(s.columns,d(s.with))});return internal.infinitePage(T,R,g)},async count(s){return i.checkFilter(s),m(c(s))},async exists(s){return i.checkFilter(s),await m(c(s))>0}}}function B(e,t,n={}){let r=pe(e,t,n);return {get delegate(){return r.delegate()},...be(r),...he(r),...De(r,n),...me(r),scoped(o){return B(e,t,{...n,scope:{...n.scope,...o}})}}}function wt(e,t){if(typeof t=="string")return t;let n=V(e),r=n.find(i=>e[i]===t);if(!r)throw new Error(`createRegistry: the given delegate does not belong to this Prisma client. Pass a model from the same client you passed to createRegistry (available: ${n.join(", ")||"(none)"}), or use its name, e.g. repository("user").`);return r}function ht(e,t={}){let n=internal.createContextStore(),r={baseClient:e,getExecutor:()=>n.get()?.executor??e,defaultPerPage:t.defaultPerPage??core.DEFAULT_PER_PAGE,defaultLimit:t.defaultLimit??core.DEFAULT_LIMIT,maxPerPage:t.maxPerPage??core.DEFAULT_MAX_PER_PAGE,maxLimit:t.maxLimit??core.DEFAULT_MAX_LIMIT,strict:t.strict??false,onSkippedCondition:t.onSkippedCondition,limits:t.limits,cursorSecret:t.cursorSecret,timestamps:t.timestamps};function i(a,d,c){let f=typeof d=="function"?void 0:d,m=typeof d=="function"?d:c,k=B(r,wt(e,a),f);return m?{...k,...m(k)}:k}return {client:e,repository:i,transaction:a=>n.get()?.executor?a():e.$transaction(d=>n.run({executor:d},a))}}function Tt(){return core.createFilters()}Object.defineProperty(exports,"f",{enumerable:true,get:function(){return core.f}});exports.buildRepository=B;exports.createFilters=Tt;exports.createRegistry=ht;//# sourceMappingURL=index.cjs.map
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|