@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/dist/index.d.cts
CHANGED
|
@@ -126,7 +126,7 @@ type AggregateRow = Record<string, unknown>;
|
|
|
126
126
|
interface OffsetParams<TDelegate = AnyDelegate> extends QueryParams<TDelegate> {
|
|
127
127
|
page?: number;
|
|
128
128
|
perPage?: number;
|
|
129
|
-
/** `false` — no count query: `perPage + 1` rows are read, `total_items` / `total_pages` are `null
|
|
129
|
+
/** `false` — no count query: `perPage + 1` rows are read, `total_items` / `total_pages` are `null`. Default `true`. */
|
|
130
130
|
withTotal?: boolean;
|
|
131
131
|
}
|
|
132
132
|
type OffsetMeta = _querykitjs_core.OffsetMeta;
|
|
@@ -239,7 +239,7 @@ interface Repository<TDelegate = AnyDelegate> {
|
|
|
239
239
|
/** Update one row by id; returns the updated row (or `undefined`). */
|
|
240
240
|
updateById(id: Id, patch: Partial<Insert<TDelegate>>, idKey?: FieldKey<TDelegate>): Promise<Row<TDelegate> | undefined>;
|
|
241
241
|
/**
|
|
242
|
-
* Update every row matching the filter in one atomic `updateMany` → `{ count }
|
|
242
|
+
* Update every row matching the filter in one atomic `updateMany` → `{ count }`.
|
|
243
243
|
* No filter only with `{ all: true }` (the scope still applies); an empty or fully skipped
|
|
244
244
|
* filter is `QueryKitError` `empty-filter`. The filter passes the request policy like a read.
|
|
245
245
|
*/
|
|
@@ -305,11 +305,11 @@ interface FieldMeta {
|
|
|
305
305
|
isList: boolean;
|
|
306
306
|
/** The `@map`ped database column, when it differs from the field name. */
|
|
307
307
|
dbName?: string;
|
|
308
|
-
/** `false` for an optional (nullable) field — Prisma accepts `nulls` in `orderBy` only there
|
|
308
|
+
/** `false` for an optional (nullable) field — Prisma accepts `nulls` in `orderBy` only there. */
|
|
309
309
|
isRequired?: boolean;
|
|
310
|
-
/** The database type (`"Uuid"` for `@db.Uuid`) — from the runtime model when it has one, or the `fields` override
|
|
310
|
+
/** The database type (`"Uuid"` for `@db.Uuid`) — from the runtime model when it has one, or the `fields` override. */
|
|
311
311
|
nativeType?: string;
|
|
312
|
-
/** An enum field's values (from the runtime data model), for the
|
|
312
|
+
/** An enum field's values (from the runtime data model), for the cast. */
|
|
313
313
|
enumValues?: readonly string[];
|
|
314
314
|
}
|
|
315
315
|
/** Everything the repository needs to know about one model. */
|
|
@@ -377,13 +377,13 @@ interface RegistryOptions {
|
|
|
377
377
|
*/
|
|
378
378
|
limits?: Partial<_querykitjs_core.QueryLimits>;
|
|
379
379
|
/**
|
|
380
|
-
* Signs cursor tokens (HMAC-SHA256
|
|
380
|
+
* Signs cursor tokens (HMAC-SHA256). With it a token that was not
|
|
381
381
|
* issued by this server — or was changed — is `invalid-value`. Without it tokens
|
|
382
382
|
* are unsigned but still checked (scalar values, v2 shape).
|
|
383
383
|
*/
|
|
384
384
|
cursorSecret?: string;
|
|
385
385
|
/**
|
|
386
|
-
* The createdAt / deletedAt field names (
|
|
386
|
+
* The createdAt / deletedAt field names (default `createdAt`, `deletedAt`): the default
|
|
387
387
|
* sort and the default `sortable` use `createdAt`, soft delete uses `deletedAt`.
|
|
388
388
|
*/
|
|
389
389
|
timestamps?: {
|
|
@@ -406,7 +406,7 @@ interface RegistryOptions {
|
|
|
406
406
|
*/
|
|
407
407
|
interface RepositoryOptions<TDelegate = AnyDelegate> {
|
|
408
408
|
/**
|
|
409
|
-
* Relations a client may open with `with` (
|
|
409
|
+
* Relations a client may open with `with` (R21): relation → `{ columns, filterable?, nested? }`.
|
|
410
410
|
* `columns` is required (a list or `"*"`); an unlisted relation, column, `where` field or nested
|
|
411
411
|
* `include` is `QueryKitError` `forbidden-key`, `site: "with"`. Without it `with` opens nothing.
|
|
412
412
|
*/
|
|
@@ -541,9 +541,9 @@ interface RepoRuntime {
|
|
|
541
541
|
onSkippedCondition?: (info: SkippedCondition) => void;
|
|
542
542
|
/** Registry-level request limits; a repository's own `limits` win. */
|
|
543
543
|
limits?: Partial<QueryLimits>;
|
|
544
|
-
/** Signs cursor tokens
|
|
544
|
+
/** Signs cursor tokens. */
|
|
545
545
|
cursorSecret?: string;
|
|
546
|
-
/** createdAt / deletedAt field names
|
|
546
|
+
/** createdAt / deletedAt field names; default `createdAt`, `deletedAt`. */
|
|
547
547
|
timestamps?: {
|
|
548
548
|
createdAt?: string;
|
|
549
549
|
deletedAt?: string;
|
package/dist/index.d.ts
CHANGED
|
@@ -126,7 +126,7 @@ type AggregateRow = Record<string, unknown>;
|
|
|
126
126
|
interface OffsetParams<TDelegate = AnyDelegate> extends QueryParams<TDelegate> {
|
|
127
127
|
page?: number;
|
|
128
128
|
perPage?: number;
|
|
129
|
-
/** `false` — no count query: `perPage + 1` rows are read, `total_items` / `total_pages` are `null
|
|
129
|
+
/** `false` — no count query: `perPage + 1` rows are read, `total_items` / `total_pages` are `null`. Default `true`. */
|
|
130
130
|
withTotal?: boolean;
|
|
131
131
|
}
|
|
132
132
|
type OffsetMeta = _querykitjs_core.OffsetMeta;
|
|
@@ -239,7 +239,7 @@ interface Repository<TDelegate = AnyDelegate> {
|
|
|
239
239
|
/** Update one row by id; returns the updated row (or `undefined`). */
|
|
240
240
|
updateById(id: Id, patch: Partial<Insert<TDelegate>>, idKey?: FieldKey<TDelegate>): Promise<Row<TDelegate> | undefined>;
|
|
241
241
|
/**
|
|
242
|
-
* Update every row matching the filter in one atomic `updateMany` → `{ count }
|
|
242
|
+
* Update every row matching the filter in one atomic `updateMany` → `{ count }`.
|
|
243
243
|
* No filter only with `{ all: true }` (the scope still applies); an empty or fully skipped
|
|
244
244
|
* filter is `QueryKitError` `empty-filter`. The filter passes the request policy like a read.
|
|
245
245
|
*/
|
|
@@ -305,11 +305,11 @@ interface FieldMeta {
|
|
|
305
305
|
isList: boolean;
|
|
306
306
|
/** The `@map`ped database column, when it differs from the field name. */
|
|
307
307
|
dbName?: string;
|
|
308
|
-
/** `false` for an optional (nullable) field — Prisma accepts `nulls` in `orderBy` only there
|
|
308
|
+
/** `false` for an optional (nullable) field — Prisma accepts `nulls` in `orderBy` only there. */
|
|
309
309
|
isRequired?: boolean;
|
|
310
|
-
/** The database type (`"Uuid"` for `@db.Uuid`) — from the runtime model when it has one, or the `fields` override
|
|
310
|
+
/** The database type (`"Uuid"` for `@db.Uuid`) — from the runtime model when it has one, or the `fields` override. */
|
|
311
311
|
nativeType?: string;
|
|
312
|
-
/** An enum field's values (from the runtime data model), for the
|
|
312
|
+
/** An enum field's values (from the runtime data model), for the cast. */
|
|
313
313
|
enumValues?: readonly string[];
|
|
314
314
|
}
|
|
315
315
|
/** Everything the repository needs to know about one model. */
|
|
@@ -377,13 +377,13 @@ interface RegistryOptions {
|
|
|
377
377
|
*/
|
|
378
378
|
limits?: Partial<_querykitjs_core.QueryLimits>;
|
|
379
379
|
/**
|
|
380
|
-
* Signs cursor tokens (HMAC-SHA256
|
|
380
|
+
* Signs cursor tokens (HMAC-SHA256). With it a token that was not
|
|
381
381
|
* issued by this server — or was changed — is `invalid-value`. Without it tokens
|
|
382
382
|
* are unsigned but still checked (scalar values, v2 shape).
|
|
383
383
|
*/
|
|
384
384
|
cursorSecret?: string;
|
|
385
385
|
/**
|
|
386
|
-
* The createdAt / deletedAt field names (
|
|
386
|
+
* The createdAt / deletedAt field names (default `createdAt`, `deletedAt`): the default
|
|
387
387
|
* sort and the default `sortable` use `createdAt`, soft delete uses `deletedAt`.
|
|
388
388
|
*/
|
|
389
389
|
timestamps?: {
|
|
@@ -406,7 +406,7 @@ interface RegistryOptions {
|
|
|
406
406
|
*/
|
|
407
407
|
interface RepositoryOptions<TDelegate = AnyDelegate> {
|
|
408
408
|
/**
|
|
409
|
-
* Relations a client may open with `with` (
|
|
409
|
+
* Relations a client may open with `with` (R21): relation → `{ columns, filterable?, nested? }`.
|
|
410
410
|
* `columns` is required (a list or `"*"`); an unlisted relation, column, `where` field or nested
|
|
411
411
|
* `include` is `QueryKitError` `forbidden-key`, `site: "with"`. Without it `with` opens nothing.
|
|
412
412
|
*/
|
|
@@ -541,9 +541,9 @@ interface RepoRuntime {
|
|
|
541
541
|
onSkippedCondition?: (info: SkippedCondition) => void;
|
|
542
542
|
/** Registry-level request limits; a repository's own `limits` win. */
|
|
543
543
|
limits?: Partial<QueryLimits>;
|
|
544
|
-
/** Signs cursor tokens
|
|
544
|
+
/** Signs cursor tokens. */
|
|
545
545
|
cursorSecret?: string;
|
|
546
|
-
/** createdAt / deletedAt field names
|
|
546
|
+
/** createdAt / deletedAt field names; default `createdAt`, `deletedAt`. */
|
|
547
547
|
timestamps?: {
|
|
548
548
|
createdAt?: string;
|
|
549
549
|
deletedAt?: string;
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {TEXT_FILTER_OPERATORS,DEFAULT_MAX_LIMIT,DEFAULT_MAX_PER_PAGE,DEFAULT_LIMIT,DEFAULT_PER_PAGE,createFilters,QueryKitError}from'@querykitjs/core';export{f}from'@querykitjs/core';import {createContextStore,clampPageSize,decodeCursorToken,cursorPage,clampOffset,infinitePage,clampPage,offsetPageWithoutTotal,offsetMeta,scopeConditions,resolvePolicy,isAllRows,isEmptyFilter,refuseEmptyFilter,checkWith,reportSkip,scopeDefaults,normalizeSort,isRaw}from'@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 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}):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(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){reportSkip(n,{site:"filter",key:t.key,operation:r,reason:"unknown-key"});return}let s=Y(e,o);if(oe(r)&&!s){reportSkip(n,{site:"filter",key:t.key,operation:r,reason:"invalid-value"});return}let a=ie(e,o,r,t.value);if(a===T){reportSkip(n,{site:"filter",key:t.key,operation:r,reason:"invalid-value"});return}let p=i(a,{isString:s});if(p===void 0){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(isRaw(t))return t;throw new 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=>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(isAllRows(w))return c(void 0);isEmptyFilter(w)&&refuseEmptyFilter(o.source,b),d.checkFilter(w);let A=j(r,w,o);return A===void 0?refuseEmptyFilter(o.source,b):c(A)},D=(w,b,A)=>{if(!x(r,b))throw new 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=scopeConditions(t.scope);for(let r of n)if(!x(e,r.key))throw new 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 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||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=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 QueryKitError({source:r.source,site:"cursorKey",key:g,reason:"unknown-key"});let l=n.idField??"id",y=await 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 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 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=>clampPageSize(u.limit,n.defaultLimit,n.maxLimit),d=u=>({...scopeDefaults(t.scope),...u,...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=clampPage(d.page),R=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 offsetPageWithoutTotal(await D(R+1),c,R);let[F,u]=await Promise.all([D(R),f(g)]);return {data:F,meta:offsetMeta(c,R,u)}},async findInfinite(d={}){let c=clampPageSize(d.limit,t.defaultLimit,t.maxLimit),R=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 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=createContextStore(),r={baseClient:e,getExecutor:()=>n.get()?.executor??e,defaultPerPage:t.defaultPerPage??DEFAULT_PER_PAGE,defaultLimit:t.defaultLimit??DEFAULT_LIMIT,maxPerPage:t.maxPerPage??DEFAULT_MAX_PER_PAGE,maxLimit:t.maxLimit??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 createFilters()}export{L as buildRepository,Rt as createFilters,wt as createRegistry};//# sourceMappingURL=index.js.map
|
|
1
|
+
import {TEXT_FILTER_OPERATORS,DEFAULT_MAX_LIMIT,DEFAULT_MAX_PER_PAGE,DEFAULT_LIMIT,DEFAULT_PER_PAGE,createFilters,QueryKitError}from'@querykitjs/core';export{f}from'@querykitjs/core';import {createContextStore,clampPageSize,decodeCursorToken,cursorPage,clampOffset,infinitePage,clampPage,offsetPageWithoutTotal,offsetMeta,scopeConditions,resolvePolicy,isAllRows,isEmptyFilter,refuseEmptyFilter,checkWith,reportSkip,scopeDefaults,normalizeSort,isRaw}from'@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 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}):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(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){reportSkip(n,{site:"filter",key:t.key,operation:r,reason:"unknown-key"});return}let a=te(e,o);if(se(r)&&!a){reportSkip(n,{site:"filter",key:t.key,operation:r,reason:"invalid-value"});return}let d=ae(e,o,r,t.value);if(d===D){reportSkip(n,{site:"filter",key:t.key,operation:r,reason:"invalid-value"});return}let c=i(d,{isString:a});if(c===void 0){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(isRaw(t))return t;throw new 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=>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(isAllRows(h))return R(void 0);isEmptyFilter(h)&&refuseEmptyFilter(o.source,F),s.checkFilter(h);let O=K(r,h,o);return O===void 0?refuseEmptyFilter(o.source,F):R(O)},b=(h,F,O)=>{if(!x(r,F))throw new 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=scopeConditions(t.scope);for(let r of n)if(!x(e,r.key))throw new 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 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||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=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 QueryKitError({source:r.source,site:"cursorKey",key:g,reason:"unknown-key"});let l=n.idField??"id",p=await 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 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 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=>clampPageSize(u.limit,n.defaultLimit,n.maxLimit),k=u=>({...scopeDefaults(t.scope),...u,...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=clampPage(s.page),g=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 offsetPageWithoutTotal(await b(g+1),R,g);let[u,l]=await Promise.all([b(g),m(T)]);return {data:u,meta:offsetMeta(R,g,l)}},async findInfinite(s={}){let R=clampPageSize(s.limit,t.defaultLimit,t.maxLimit),g=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 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=createContextStore(),r={baseClient:e,getExecutor:()=>n.get()?.executor??e,defaultPerPage:t.defaultPerPage??DEFAULT_PER_PAGE,defaultLimit:t.defaultLimit??DEFAULT_LIMIT,maxPerPage:t.maxPerPage??DEFAULT_MAX_PER_PAGE,maxLimit:t.maxLimit??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 createFilters()}export{B as buildRepository,Tt as createFilters,ht as createRegistry};//# sourceMappingURL=index.js.map
|
|
2
2
|
//# sourceMappingURL=index.js.map
|