@m1212e/rumble 0.8.4 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/index.cjs +6 -6
- package/index.cjs.map +1 -1
- package/index.d.cts +64 -3
- package/index.d.ts +64 -3
- package/index.js +6 -6
- package/index.js.map +1 -1
- package/package.json +1 -1
package/index.d.cts
CHANGED
@@ -501,7 +501,7 @@ declare const rumble: <UserContext extends Record<string, any>, DB extends Gener
|
|
501
501
|
/**
|
502
502
|
* A function for creating where args to filter entities
|
503
503
|
*/
|
504
|
-
|
504
|
+
whereArg: <ExplicitTableName extends keyof NonEnumFields<NonNullable<DB["_"]["relations"]["schema"]>>, RefName_1 extends string>({ table, refName, dbName, }: Partial<{
|
505
505
|
table: ExplicitTableName;
|
506
506
|
refName: RefName_1 | undefined;
|
507
507
|
dbName: string;
|
@@ -559,6 +559,67 @@ declare const rumble: <UserContext extends Record<string, any>, DB extends Gener
|
|
559
559
|
}>, {
|
560
560
|
[x: string]: unknown;
|
561
561
|
}>;
|
562
|
+
/**
|
563
|
+
* A function for creating order args to sort entities
|
564
|
+
*/
|
565
|
+
orderArg: <ExplicitTableName extends keyof NonEnumFields<NonNullable<DB["_"]["relations"]["schema"]>>, RefName_2 extends string>({ table, refName, dbName, }: Partial<{
|
566
|
+
table: ExplicitTableName;
|
567
|
+
refName: RefName_2 | undefined;
|
568
|
+
dbName: string;
|
569
|
+
}> & ({
|
570
|
+
dbName: string;
|
571
|
+
} | {
|
572
|
+
table: ExplicitTableName;
|
573
|
+
})) => PothosSchemaTypes.InputObjectRef<PothosSchemaTypes.ExtendDefaultTypes<{
|
574
|
+
Context: Awaited<UserContext & {
|
575
|
+
abilities: keyof DB["query"] extends infer T_4 extends keyof DB["query"] ? { [key_5 in T_4]: {
|
576
|
+
filter: <Injection extends Parameters<DB["query"][key_5]["findMany"]>[0]>(action: Action, options?: {
|
577
|
+
inject?: Injection | undefined;
|
578
|
+
} | undefined) => {
|
579
|
+
query: {
|
580
|
+
single: {
|
581
|
+
readonly where: any;
|
582
|
+
columns: undefined;
|
583
|
+
};
|
584
|
+
many: {
|
585
|
+
readonly where: any;
|
586
|
+
columns: undefined;
|
587
|
+
readonly limit: any;
|
588
|
+
};
|
589
|
+
};
|
590
|
+
sql: {
|
591
|
+
readonly where: drizzle_orm.SQL<unknown> | undefined;
|
592
|
+
columns: undefined;
|
593
|
+
readonly limit: any;
|
594
|
+
};
|
595
|
+
};
|
596
|
+
explicitFilters: (action: Action) => (keyof DB["query"] extends infer T_5 extends keyof DB["query"] ? { [key_3 in T_5]: { [key_4 in Action]: Filter<UserContext, any>[]; }; } : never)[key_5][Action];
|
597
|
+
}; } : never;
|
598
|
+
}>;
|
599
|
+
DrizzleRelations: DB["_"]["relations"];
|
600
|
+
Scalars: {
|
601
|
+
JSON: {
|
602
|
+
Input: unknown;
|
603
|
+
Output: unknown;
|
604
|
+
};
|
605
|
+
Date: {
|
606
|
+
Input: Date;
|
607
|
+
Output: Date;
|
608
|
+
};
|
609
|
+
DateTime: {
|
610
|
+
Input: Date;
|
611
|
+
Output: Date;
|
612
|
+
};
|
613
|
+
};
|
614
|
+
Inputs: {
|
615
|
+
IntWhereInputArgument: NumberWhereInputArgument;
|
616
|
+
FloatWhereInputArgument: NumberWhereInputArgument;
|
617
|
+
StringWhereInputArgument: StringWhereInputArgument;
|
618
|
+
DateWhereInputArgument: DateWhereInputArgument;
|
619
|
+
};
|
620
|
+
}>, {
|
621
|
+
[x: string]: unknown;
|
622
|
+
}>;
|
562
623
|
/**
|
563
624
|
* A function for creating default READ queries.
|
564
625
|
* Make sure the objects for the table you are creating the queries for are implemented
|
@@ -590,10 +651,10 @@ declare const rumble: <UserContext extends Record<string, any>, DB extends Gener
|
|
590
651
|
* The other helpers use this helper internally so in most cases you do not have to
|
591
652
|
* call this helper directly, unless you need the reference to an enum type
|
592
653
|
*/
|
593
|
-
enum_: <ExplicitEnumVariableName extends keyof (NonNullable<DB["_"]["relations"]["schema"]> extends infer T_4 ? { [K in keyof T_4 as NonNullable<DB["_"]["relations"]["schema"]>[K] extends drizzle_orm_pg_core.PgEnum<any> ? K : never]: NonNullable<DB["_"]["relations"]["schema"]>[K]; } : never), EnumColumn extends drizzle_orm_pg_core.PgEnum<any>,
|
654
|
+
enum_: <ExplicitEnumVariableName extends keyof (NonNullable<DB["_"]["relations"]["schema"]> extends infer T_4 ? { [K in keyof T_4 as NonNullable<DB["_"]["relations"]["schema"]>[K] extends drizzle_orm_pg_core.PgEnum<any> ? K : never]: NonNullable<DB["_"]["relations"]["schema"]>[K]; } : never), EnumColumn extends drizzle_orm_pg_core.PgEnum<any>, RefName_3 extends string>({ tsName, enumColumn, refName, }: Partial<{
|
594
655
|
tsName: ExplicitEnumVariableName;
|
595
656
|
enumColumn: EnumColumn;
|
596
|
-
refName?:
|
657
|
+
refName?: RefName_3 | undefined;
|
597
658
|
}> & ({
|
598
659
|
tsName: ExplicitEnumVariableName;
|
599
660
|
} | {
|
package/index.d.ts
CHANGED
@@ -501,7 +501,7 @@ declare const rumble: <UserContext extends Record<string, any>, DB extends Gener
|
|
501
501
|
/**
|
502
502
|
* A function for creating where args to filter entities
|
503
503
|
*/
|
504
|
-
|
504
|
+
whereArg: <ExplicitTableName extends keyof NonEnumFields<NonNullable<DB["_"]["relations"]["schema"]>>, RefName_1 extends string>({ table, refName, dbName, }: Partial<{
|
505
505
|
table: ExplicitTableName;
|
506
506
|
refName: RefName_1 | undefined;
|
507
507
|
dbName: string;
|
@@ -559,6 +559,67 @@ declare const rumble: <UserContext extends Record<string, any>, DB extends Gener
|
|
559
559
|
}>, {
|
560
560
|
[x: string]: unknown;
|
561
561
|
}>;
|
562
|
+
/**
|
563
|
+
* A function for creating order args to sort entities
|
564
|
+
*/
|
565
|
+
orderArg: <ExplicitTableName extends keyof NonEnumFields<NonNullable<DB["_"]["relations"]["schema"]>>, RefName_2 extends string>({ table, refName, dbName, }: Partial<{
|
566
|
+
table: ExplicitTableName;
|
567
|
+
refName: RefName_2 | undefined;
|
568
|
+
dbName: string;
|
569
|
+
}> & ({
|
570
|
+
dbName: string;
|
571
|
+
} | {
|
572
|
+
table: ExplicitTableName;
|
573
|
+
})) => PothosSchemaTypes.InputObjectRef<PothosSchemaTypes.ExtendDefaultTypes<{
|
574
|
+
Context: Awaited<UserContext & {
|
575
|
+
abilities: keyof DB["query"] extends infer T_4 extends keyof DB["query"] ? { [key_5 in T_4]: {
|
576
|
+
filter: <Injection extends Parameters<DB["query"][key_5]["findMany"]>[0]>(action: Action, options?: {
|
577
|
+
inject?: Injection | undefined;
|
578
|
+
} | undefined) => {
|
579
|
+
query: {
|
580
|
+
single: {
|
581
|
+
readonly where: any;
|
582
|
+
columns: undefined;
|
583
|
+
};
|
584
|
+
many: {
|
585
|
+
readonly where: any;
|
586
|
+
columns: undefined;
|
587
|
+
readonly limit: any;
|
588
|
+
};
|
589
|
+
};
|
590
|
+
sql: {
|
591
|
+
readonly where: drizzle_orm.SQL<unknown> | undefined;
|
592
|
+
columns: undefined;
|
593
|
+
readonly limit: any;
|
594
|
+
};
|
595
|
+
};
|
596
|
+
explicitFilters: (action: Action) => (keyof DB["query"] extends infer T_5 extends keyof DB["query"] ? { [key_3 in T_5]: { [key_4 in Action]: Filter<UserContext, any>[]; }; } : never)[key_5][Action];
|
597
|
+
}; } : never;
|
598
|
+
}>;
|
599
|
+
DrizzleRelations: DB["_"]["relations"];
|
600
|
+
Scalars: {
|
601
|
+
JSON: {
|
602
|
+
Input: unknown;
|
603
|
+
Output: unknown;
|
604
|
+
};
|
605
|
+
Date: {
|
606
|
+
Input: Date;
|
607
|
+
Output: Date;
|
608
|
+
};
|
609
|
+
DateTime: {
|
610
|
+
Input: Date;
|
611
|
+
Output: Date;
|
612
|
+
};
|
613
|
+
};
|
614
|
+
Inputs: {
|
615
|
+
IntWhereInputArgument: NumberWhereInputArgument;
|
616
|
+
FloatWhereInputArgument: NumberWhereInputArgument;
|
617
|
+
StringWhereInputArgument: StringWhereInputArgument;
|
618
|
+
DateWhereInputArgument: DateWhereInputArgument;
|
619
|
+
};
|
620
|
+
}>, {
|
621
|
+
[x: string]: unknown;
|
622
|
+
}>;
|
562
623
|
/**
|
563
624
|
* A function for creating default READ queries.
|
564
625
|
* Make sure the objects for the table you are creating the queries for are implemented
|
@@ -590,10 +651,10 @@ declare const rumble: <UserContext extends Record<string, any>, DB extends Gener
|
|
590
651
|
* The other helpers use this helper internally so in most cases you do not have to
|
591
652
|
* call this helper directly, unless you need the reference to an enum type
|
592
653
|
*/
|
593
|
-
enum_: <ExplicitEnumVariableName extends keyof (NonNullable<DB["_"]["relations"]["schema"]> extends infer T_4 ? { [K in keyof T_4 as NonNullable<DB["_"]["relations"]["schema"]>[K] extends drizzle_orm_pg_core.PgEnum<any> ? K : never]: NonNullable<DB["_"]["relations"]["schema"]>[K]; } : never), EnumColumn extends drizzle_orm_pg_core.PgEnum<any>,
|
654
|
+
enum_: <ExplicitEnumVariableName extends keyof (NonNullable<DB["_"]["relations"]["schema"]> extends infer T_4 ? { [K in keyof T_4 as NonNullable<DB["_"]["relations"]["schema"]>[K] extends drizzle_orm_pg_core.PgEnum<any> ? K : never]: NonNullable<DB["_"]["relations"]["schema"]>[K]; } : never), EnumColumn extends drizzle_orm_pg_core.PgEnum<any>, RefName_3 extends string>({ tsName, enumColumn, refName, }: Partial<{
|
594
655
|
tsName: ExplicitEnumVariableName;
|
595
656
|
enumColumn: EnumColumn;
|
596
|
-
refName?:
|
657
|
+
refName?: RefName_3 | undefined;
|
597
658
|
}> & ({
|
598
659
|
tsName: ExplicitEnumVariableName;
|
599
660
|
} | {
|
package/index.js
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
import {createYoga,createPubSub}from'graphql-yoga';import {useSofa}from'sofa-api';import {One,relationsFilterToSQL}from'drizzle-orm';import {toCamelCase}from'drizzle-orm/casing';import {PgEnumColumn}from'drizzle-orm/pg-core';import
|
2
|
-
`,s=
|
3
|
-
`)}function
|
1
|
+
import {createYoga,createPubSub}from'graphql-yoga';import {useSofa}from'sofa-api';import {One,relationsFilterToSQL}from'drizzle-orm';import {toCamelCase}from'drizzle-orm/casing';import {PgEnumColumn}from'drizzle-orm/pg-core';import {singular,plural}from'pluralize';import we,{BasePlugin}from'@pothos/core';import We from'@pothos/plugin-drizzle';import _e,{subscribeOptionsFromIterator}from'@pothos/plugin-smart-subscriptions';import {JSONResolver,DateResolver,DateTimeISOResolver}from'graphql-scalars';function J(t){return typeof t=="object"&&t!==null}function H(t,n){throw new Error("Unexpected invariant triggered.")}var be=/\r\n|[\n\r]/g;function U(t,n){let i=0,p=1;for(let r of t.body.matchAll(be)){if(typeof r.index=="number"||H(),r.index>=n)break;i=r.index+r[0].length,p+=1;}return {line:p,column:n+1-i}}function X(t){return K(t.source,U(t.source,t.start))}function K(t,n){let i=t.locationOffset.column-1,p="".padStart(i)+t.body,r=n.line-1,e=t.locationOffset.line-1,c=n.line+e,l=n.line===1?i:0,u=n.column+l,y=`${t.name}:${c}:${u}
|
2
|
+
`,s=p.split(/\r\n|[\n\r]/g),d=s[r];if(d.length>120){let a=Math.floor(u/80),h=u%80,o=[];for(let b=0;b<d.length;b+=80)o.push(d.slice(b,b+80));return y+Y([[`${c} |`,o[0]],...o.slice(1,a+1).map(b=>["|",b]),["|","^".padStart(h)],["|",o[a+1]]])}return y+Y([[`${c-1} |`,s[r-1]],[`${c} |`,d],["|","^".padStart(u)],[`${c+1} |`,s[r+1]]])}function Y(t){let n=t.filter(([p,r])=>r!==void 0),i=Math.max(...n.map(([p])=>p.length));return n.map(([p,r])=>p.padStart(i)+(r?" "+r:"")).join(`
|
3
|
+
`)}function he(t){let n=t[0];return n==null||"kind"in n||"length"in n?{nodes:n,source:t[1],positions:t[2],path:t[3],originalError:t[4],extensions:t[5]}:n}var L=class t extends Error{constructor(n,...i){var p,r,e;let{nodes:c,source:l,positions:u,path:y,originalError:s,extensions:d}=he(i);super(n),this.name="GraphQLError",this.path=y??void 0,this.originalError=s??void 0,this.nodes=Z(Array.isArray(c)?c:c?[c]:void 0);let a=Z((p=this.nodes)===null||p===void 0?void 0:p.map(o=>o.loc).filter(o=>o!=null));this.source=l??(a==null||(r=a[0])===null||r===void 0?void 0:r.source),this.positions=u??a?.map(o=>o.start),this.locations=u&&l?u.map(o=>U(l,o)):a?.map(o=>U(o.source,o.start));let h=J(s?.extensions)?s?.extensions:void 0;this.extensions=(e=d??h)!==null&&e!==void 0?e:Object.create(null),Object.defineProperties(this,{message:{writable:true,enumerable:true},name:{enumerable:false},nodes:{enumerable:false},source:{enumerable:false},positions:{enumerable:false},originalError:{enumerable:false}}),s!=null&&s.stack?Object.defineProperty(this,"stack",{value:s.stack,writable:true,configurable:true}):Error.captureStackTrace?Error.captureStackTrace(this,t):Object.defineProperty(this,"stack",{value:Error().stack,writable:true,configurable:true});}get[Symbol.toStringTag](){return "GraphQLError"}toString(){let n=this.message;if(this.nodes)for(let i of this.nodes)i.loc&&(n+=`
|
4
4
|
|
5
|
-
`+
|
5
|
+
`+X(i.loc));else if(this.source&&this.locations)for(let i of this.locations)n+=`
|
6
6
|
|
7
|
-
`+
|
8
|
-
Please ensure that you use the enum at least once as a column of a table!`);l=y.enumValues;}else if(e){let i=Object.entries(t._.relations.schema).find(([y,d])=>d===e.config.enum);if(!i)throw new S(`Could not find enum in schema for ${e.name}!`);p=i[0],l=e.enumValues;}if(!p||!l)throw new S("Could not determine enum structure!");let c=a??`${B(toCamelCase(p))}Enum`,s=o.get(c);return s||(s=n.enumType(c,{values:l}),o.set(c,s),s)}};var ie={paths:{"/webhook":{post:{operationId:"webhook_create",description:"Creates a webhook subscription.",tags:[],parameters:[],requestBody:{content:{"application/json":{schema:{$ref:"#/components/schemas/WebhookCreateBody"}}}},responses:{200:{content:{"application/json":{schema:{$ref:"#/components/schemas/WebhookDetailResponse"}}}}}}},"/webhook/{id}":{post:{operationId:"webhook_update",description:"Updates a webhook subscription.",parameters:[{name:"id",in:"path",description:"The ID of the webhook to update",required:true,schema:{type:"string"}}],requestBody:{content:{"application/json":{schema:{$ref:"#/components/schemas/WebhookCreateBody"}}}},responses:{200:{content:{"application/json":{schema:{$ref:"#/components/schemas/WebhookDetailResponse"}}}}}},delete:{operationId:"webhook_delete",description:"Removes a webhook subscription.",tags:[],parameters:[{name:"id",in:"path",description:"The ID of the webhook to delete",required:true,schema:{type:"string"}}],responses:{200:{content:{"application/json":{schema:{$ref:"#/components/schemas/WebhookDetailResponse"}}}}}}}},components:{schemas:{WebhookCreateBody:{type:"object",properties:{subscription:{description:"The subscription to subscribe to. In many cases, these match the available query IDs without the '_query' suffix. E.g., 'findFirstUser_query' -> 'findFirstUser'. See the graphql schema for more details on what subscriptions are available.",type:"string"},variables:{description:"The variables to pass to the subscription.",type:"object"},url:{description:"The URL to send the webhook to.",type:"string"}}},WebhookDetailResponse:{type:"object",properties:{id:{description:"The ID of the webhook. Can be used as reference in update or delete calls.",type:"string"}}}}}};function G({sqlType:t,fieldName:n}){let o;if(["serial","int","integer","tinyint","smallint","mediumint"].includes(t)&&(o="Int"),["real","decimal","double","float"].includes(t)&&(o="Float"),["string","text","varchar","char","text(256)"].includes(t)&&(n&&(n.toLowerCase().endsWith("_id")||n.toLowerCase().endsWith("id"))?o="ID":o="String"),["uuid"].includes(t)&&(o="ID"),["boolean"].includes(t)&&(o="Boolean"),["timestamp","datetime"].includes(t)&&(o="DateTime"),["date"].includes(t)&&(o="Date"),["json"].includes(t)&&(o="JSON"),o!==void 0)return o;throw Q(t,"SQL to GQL")}var Ie=t=>typeof t!="object"?false:!!Object.keys(t).some(n=>["args","nullable","query","subscribe","description","type","resolve"].find(o=>o===n)),oe=({db:t,schemaBuilder:n,makePubSubInstance:o,argImplementer:u,enumImplementer:r,abilityBuilder:e})=>({table:a,refName:p,readAction:l="read",adjust:c})=>{let s=N({db:t,tsName:a});Object.keys(s.primaryColumns).length===0&&console.warn(`Could not find primary key for ${a.toString()}. Cannot register subscriptions!`);let b=Object.values(s.primaryColumns)[0],{registerOnInstance:i}=o({table:a});return n.drizzleObject(a,{name:p??B(a.toString()),subscribe:(y,d,g)=>{if(!b)return;let T=d[b.name];if(!T){console.warn(`Could not find primary key value for ${JSON.stringify(d)}. Cannot register subscription!`);return}i({instance:y,action:"updated",primaryKeyValue:T});},applyFilters:e?.registeredFilters?.[a]?.[l],fields:y=>{let d=s.columns,g=(x,f,h)=>{let R=G({sqlType:x,fieldName:f});switch(R){case "Int":return y.exposeInt(f,{nullable:h});case "String":return y.exposeString(f,{nullable:h});case "Boolean":return y.exposeBoolean(f,{nullable:h});case "Date":return y.field({type:"Date",resolve:m=>m[f],nullable:h});case "DateTime":return y.field({type:"DateTime",resolve:m=>m[f],nullable:h});case "Float":return y.exposeFloat(f,{nullable:h});case "ID":return y.exposeID(f,{nullable:h});case "JSON":return y.field({type:"JSON",resolve:m=>m[f],nullable:h});default:throw new S(`Unsupported object type ${R} for column ${f}`)}},T=new Map,D=c?.(new Proxy(y,{get:(x,f)=>typeof x[f]=="function"?(...h)=>{let R=x[f](...h),m=h.find(Ie);if(!m)throw new S("Expected config object to be passed to adjust field");return T.set(R,{params:h,creatorFunction:x[f],configObject:m}),R}:x[f]}))??{},I=Object.entries(d).reduce((x,[f,h])=>{if(D[f]){let{params:R,creatorFunction:m,configObject:A}=T.get(D[f]);return typeof A.nullable!="boolean"&&(A.nullable=!h.notNull),D[f]=m.bind(y)(...R),x}if(j(h)){let R=r({enumColumn:h});x[f]=y.field({type:R,resolve:m=>m[f],nullable:!h.notNull});}else x[f]=g(h.getSQLType(),f,!h.notNull);return x},{}),E=Object.entries(s.relations??{}).reduce((x,[f,h])=>{let R=N({db:t,table:h.targetTable}),m=u({dbName:R.dbName}),A=o({table:R.tsName}),P=false,w=true,v="many";h instanceof One&&(w=false,P=h.optional,v="single");let F=(C,L)=>{A.registerOnInstance({instance:C,action:"created"}),A.registerOnInstance({instance:C,action:"removed"});};if(D[f]){let{params:C,creatorFunction:L,configObject:O}=T.get(D[f]);return typeof O.nullable!="boolean"&&(O.nullable=P),typeof O.subscribe!="function"&&(O.subscribe=F),D[f]=L.bind(y)(...C),x}return x[f]=y.relation(f,{args:{where:y.arg({type:m,required:false}),...w?{offset:y.arg.int({required:false}),limit:y.arg.int({required:false})}:{}},subscribe:F,nullable:P,query:(C,L)=>{C=JSON.parse(JSON.stringify(C));let O=L.abilities[R.tsName].filter(l,{inject:{where:C.where,limit:C.limit}}).query[v];return C.offset&&(O.offset=C.offset),O}}),x},{});return {...I,...E,...D}}})};var Ae="RUMBLE_SUBSCRIPTION_NOTIFICATION",Ee="REMOVED",Ne="UPDATED",Be="CREATED",ae=({subscriptions:t,db:n})=>{let o=t?createPubSub(...t):createPubSub();return {pubsub:o,makePubSubInstance:({table:r})=>{function e({action:a,tableName:p,primaryKeyValue:l}){let c;switch(a){case "created":c=Be;break;case "removed":c=Ee;break;case "updated":c=Ne;break;default:throw new Error(`Unknown action: ${a}`)}return `${Ae}/${p}${l?`/${l}`:""}/${c}`}return {registerOnInstance({instance:a,action:p,primaryKeyValue:l}){let c=e({tableName:r.toString(),action:p,primaryKeyValue:l});a.register(c);},created(){let a=e({tableName:r.toString(),action:"created"});return o.publish(a)},removed(a){let p=e({tableName:r.toString(),action:"removed"});return o.publish(p)},updated(a){let l=(Array.isArray(a)?a:[a]).map(s=>e({tableName:r.toString(),action:"updated",primaryKeyValue:s})),c=Array.from(new Set(l));for(let s of c)o.publish(s);}}}}};var le=({db:t,schemaBuilder:n,argImplementer:o,makePubSubInstance:u})=>({table:r,readAction:e="read",listAction:a="read"})=>{let p=o({table:r}),{registerOnInstance:l}=u({table:r});return n.queryFields(c=>({[`findMany${B(r.toString())}`]:c.drizzleField({type:[r],nullable:false,smartSubscription:true,subscribe:(s,b,i,y,d)=>{l({instance:s,action:"created"}),l({instance:s,action:"removed"});},args:{where:c.arg({type:p,required:false}),limit:c.arg.int({required:false}),offset:c.arg.int({required:false})},resolve:(s,b,i,y,d)=>{i=JSON.parse(JSON.stringify(i));let g=y.abilities[r].filter(a,i.where||i.limit||i.offset?{inject:{where:i.where,limit:i.limit}}:void 0).query.many;i.offset&&(g.offset=i.offset);let T=s(g);return g.columns&&(T.columns=g.columns),t.query[r].findMany(T)}}),[`findFirst${B(r.toString())}`]:c.drizzleField({type:r,nullable:false,smartSubscription:true,args:{where:c.arg({type:p,required:false})},resolve:(s,b,i,y,d)=>{i=JSON.parse(JSON.stringify(i));let g=y.abilities[r].filter(e,i.where?{inject:{where:i.where}}:void 0).query.single,T=s(g);return g.columns&&(T.columns=g.columns),t.query[r].findFirst(T).then(_)}})}))};var ue="ManualFiltersPlugin",pe=ue,Fe="applyFilters",V=class extends BasePlugin{wrapResolve(n,o){return async(u,r,e,a)=>{let p=(o?.type).type?.ref.currentConfig.pothosOptions[Fe];if(!p||!Array.isArray(p)||p.length===0)return n(u,r,e,a);let l=await n(u,r,e,a),c=Array.isArray(l)?l:[l],s=Array.isArray(p)?p:[p],b=await X({filters:s,entities:c,context:e});return Array.isArray(l)?b:b[0]??null}}};Pe.registerPlugin(ue,V);var ze=t=>`${B(toCamelCase(t.toString()))}WhereInputArgument`,me=({db:t,schemaBuilder:n,enumImplementer:o})=>{let u=new Map,r=({table:e,refName:a,dbName:p})=>{let l=N({db:t,dbName:p,tsName:e}),c=a??ze(l.tsName),s=u.get(c);return s||(s=n.inputType(c,{fields:i=>{let y=(T,D)=>{let I=G({sqlType:T,fieldName:D});switch(I){case "Int":return i.field({type:"IntWhereInputArgument"});case "String":return i.field({type:"StringWhereInputArgument"});case "Boolean":return i.boolean({required:false});case "Date":return i.field({type:"DateWhereInputArgument"});case "DateTime":return i.field({type:"DateWhereInputArgument"});case "Float":return i.field({type:"FloatWhereInputArgument"});case "ID":return i.id({required:false});case "JSON":return i.field({type:"JSON",required:false});default:throw new S(`Unsupported argument type ${I} for column ${T}`)}},d=Object.entries(l.columns).reduce((T,[D,I])=>{if(j(I)){let E=o({enumColumn:I});T[D]=i.field({type:E,required:false});}else T[D]=y(I.getSQLType(),D);return T},{}),g=Object.entries(l.relations??{}).reduce((T,[D,I])=>{let E=N({db:t,table:I.targetTable}),x=r({dbName:E.dbName});return T[D]=i.field({type:x,required:false}),T},{});return {...d,...g}}}),u.set(c,s),s)};return r};function ce(t){let n=t.inputRef("IntWhereInputArgument").implement({fields:e=>({eq:e.int(),ne:e.int(),gt:e.int(),gte:e.int(),lt:e.int(),lte:e.int(),in:e.intList(),notIn:e.intList(),like:e.string(),ilike:e.string(),notLike:e.string(),notIlike:e.string(),isNull:e.boolean(),isNotNull:e.boolean(),arrayOverlaps:e.intList(),arrayContained:e.intList(),arrayContains:e.intList(),AND:e.field({type:[n]}),OR:e.field({type:[n]}),NOT:e.field({type:n})})}),o=t.inputRef("FloatWhereInputArgument").implement({fields:e=>({eq:e.float(),ne:e.float(),gt:e.float(),gte:e.float(),lt:e.float(),lte:e.float(),in:e.floatList(),notIn:e.floatList(),like:e.string(),ilike:e.string(),notLike:e.string(),notIlike:e.string(),isNull:e.boolean(),isNotNull:e.boolean(),arrayOverlaps:e.floatList(),arrayContained:e.floatList(),arrayContains:e.floatList(),AND:e.field({type:[o]}),OR:e.field({type:[o]}),NOT:e.field({type:o})})}),u=t.inputRef("StringWhereInputArgument").implement({fields:e=>({eq:e.string(),ne:e.string(),gt:e.string(),gte:e.string(),lt:e.string(),lte:e.string(),in:e.stringList(),notIn:e.stringList(),like:e.string(),ilike:e.string(),notLike:e.string(),notIlike:e.string(),isNull:e.boolean(),isNotNull:e.boolean(),arrayOverlaps:e.stringList(),arrayContained:e.stringList(),arrayContains:e.stringList(),AND:e.field({type:[u]}),OR:e.field({type:[u]}),NOT:e.field({type:u})})}),r=t.inputRef("DateWhereInputArgument").implement({fields:e=>({eq:e.field({type:"Date"}),ne:e.field({type:"Date"}),gt:e.field({type:"Date"}),gte:e.field({type:"Date"}),lt:e.field({type:"Date"}),lte:e.field({type:"Date"}),in:e.field({type:["Date"]}),notIn:e.field({type:["Date"]}),like:e.string(),ilike:e.string(),notLike:e.string(),notIlike:e.string(),isNull:e.boolean(),isNotNull:e.boolean(),arrayOverlaps:e.field({type:["Date"]}),arrayContained:e.field({type:["Date"]}),arrayContains:e.field({type:["Date"]}),AND:e.field({type:[r]}),OR:e.field({type:[r]}),NOT:e.field({type:r})})});}var ye=({db:t,disableDefaultObjects:n,pubsub:o,pothosConfig:u})=>{let r=new Pe({...u,plugins:[pe,ke,qe,...u?.plugins??[]],drizzle:{client:t,relations:t._.relations,getTableConfig(e){return {columns:Object.values(e[Symbol.for("drizzle:Columns")]),primaryKeys:Object.values(e[Symbol.for("drizzle:Columns")]).filter(a=>a.primary)}}},smartSubscriptions:{...subscribeOptionsFromIterator((e,a)=>o.subscribe(e))}});return r.addScalarType("JSON",JSONResolver),r.addScalarType("Date",DateResolver),r.addScalarType("DateTime",DateTimeISOResolver),ce(r),n?.query||r.queryType({}),n?.subscription||r.subscriptionType({}),n?.mutation||r.mutationType({}),{schemaBuilder:r}};var _e=t=>{t.actions||(t.actions=["read","update","delete"]),t.defaultLimit===void 0&&(t.defaultLimit=100);let n=te(t),o=ne({...t,abilityBuilder:n}),{makePubSubInstance:u,pubsub:r}=ae({...t}),{schemaBuilder:e}=ye({...t,pubsub:r}),a=re({...t,schemaBuilder:e}),p=me({...t,schemaBuilder:e,enumImplementer:a}),l=oe({...t,schemaBuilder:e,makePubSubInstance:u,argImplementer:p,enumImplementer:a,abilityBuilder:n}),c=le({...t,schemaBuilder:e,argImplementer:p,makePubSubInstance:u}),s=z(()=>e.toSchema());return {abilityBuilder:n,schemaBuilder:e,createYoga:y=>createYoga({...y,schema:s(),context:o}),createSofa:y=>(y.openAPI&&(y.openAPI={...ie,...y.openAPI}),useSofa({...y,schema:s(),context:o})),object:l,arg:p,query:c,pubsub:u,enum_:a}};export{S as RumbleError,q as RumbleErrorSafe,_ as assertFindFirstExists,he as assertFirstEntryExists,_e as rumble};//# sourceMappingURL=index.js.map
|
7
|
+
`+K(this.source,i);return n}toJSON(){let n={message:this.message};return this.locations!=null&&(n.locations=this.locations),this.path!=null&&(n.path=this.path),this.extensions!=null&&Object.keys(this.extensions).length>0&&(n.extensions=this.extensions),n}};function Z(t){return t===void 0||t.length===0?void 0:t}var I=class extends Error{constructor(n){super(n),this.name="RumbleError";}},w=class extends L{};var V=t=>{if(!t)throw new w("Value not found but required (findFirst)");return t},Ce=t=>{let n=t.at(0);if(!n)throw new w("Value not found but required (firstEntry)");return n},ee=async({filters:t,entities:n,context:i})=>(await Promise.all(t.map(p=>p({context:i,entities:n})))).reduce((p,r)=>(p.push(...r),p),[]);function v(t){let n,i=false;return ()=>(i||(n=t(),i=true),n)}var G=(t,n)=>new I(`RumbleError: Unknown SQL type '${t}'. Please open an issue (https://github.com/m1212e/rumble/issues) so it can be added. (${n})`);function te(t){if(["serial","int","integer","tinyint","smallint","mediumint"].includes(t))return {value1:1,value2:2};if(["real","decimal","double","float"].includes(t))return {value1:1.1,value2:2.2};if(["string","text","varchar","char","text(256)"].includes(t))return {value1:"a",value2:"b"};if(["uuid"].includes(t))return {value1:"fba31870-5528-42d7-b27e-2e5ee657aea5",value2:"fc65db81-c2d1-483d-8a25-a30e2cf6e02d"};if(["boolean"].includes(t))return {value1:true,value2:false};if(["timestamp","datetime"].includes(t))return {value1:new Date(2022,1,1),value2:new Date(2022,1,2)};if(["date"].includes(t))return {value1:new Date(2022,1,1),value2:new Date(2022,1,2)};if(["json"].includes(t))return {value1:{a:1},value2:{b:2}};throw G(t,"Distinct")}var M=Symbol.for("drizzle:Name"),ne=Symbol.for("drizzle:Columns");function B({dbName:t,tsName:n,table:i,db:p}){let r=i;if(n&&(r=p._.relations.schema[n]),t&&(r=Object.values(p._.relations.schema).find(e=>e[M]===t)),!r)throw new I(`Could not find schema for ${JSON.stringify({tsName:n,dbName:t,table:i?.[M]}).toString()}`);return {tableSchema:r,columns:r[ne],get primaryColumns(){return Object.entries(r[ne]).filter(([e,c])=>c.primary).reduce((e,[c,l])=>(e[c]=l,e),{})},relations:p._.relations.config[n],dbName:r[M],get tsName(){return Object.entries(p._.relations.schema).find(([e,c])=>c===r).at(0)}}}function Re(t){return typeof t!="function"}function Se(t){return typeof t=="function"&&t.constructor.name!=="AsyncFunction"}var re=({db:t,actions:n,defaultLimit:i})=>{let p={},r={},e={},c=l=>{for(let u of n)e[l]||(e[l]={}),e[l][u]||(e[l][u]=[]);return {allow:u=>{let y=r[l];y||(y={},r[l]=y);let s=Array.isArray(u)?u:[u];for(let d of s){let a=y[d];a||(a="unspecified",y[d]=a);}return {when:d=>{for(let a of s)y[a]==="unspecified"&&(y[a]=[]),y[a].push(d);}}},filter:u=>{let y=Array.isArray(u)?u:[u];return {by:s=>{for(let d of y)e[l][d].push(s);}}}}};for(let l of Object.keys(t.query))p[l]=c(l);return {...p,registeredQueryFilters:r,registeredFilters:e,buildWithUserContext:l=>{let u={},y=s=>({filter:(d,a)=>{let h=m=>{let R=v(()=>{if(!(!m?.where&&!a?.inject?.where)){if(a?.inject?.where&&m?.where)return {AND:[m?.where,a?.inject?.where]};if(a?.inject?.where&&!m?.where)return a?.inject?.where;if(!a?.inject?.where&&m?.where)return m?.where;!a?.inject?.where&&m?.where;}}),P=v(()=>{let E=R();if(!E)return;let Q=B({tsName:s,db:t});return relationsFilterToSQL(Q.tableSchema,E)}),k=v(()=>{let E=m?.limit??i;return a?.inject?.limit&&(!E||E>a.inject.limit)&&(E=a.inject.limit),m?.limit&&(!E||m.limit>E)&&(E=m.limit),E??void 0}),F=v(()=>{if(!(!m?.columns&&!a?.inject?.columns))return {...m?.columns,...a?.inject?.columns}}),q={query:{single:{get where(){return R()},columns:F()},many:{get where(){return R()},columns:F(),get limit(){return k()}}},sql:{get where(){return P()},columns:F(),get limit(){return k()}}};return F()||(delete q.sql.columns,delete q.query.many.columns,delete q.query.single.columns),q},o=()=>{let m=B({db:t,tsName:s});if(Object.keys(m.primaryColumns).length===0)throw new I(`No primary key found for entity ${s.toString()}`);let R=Object.values(m.primaryColumns)[0],P=te(R.getSQLType());return {where:{AND:[{[R.name]:P.value1},{[R.name]:P.value2}]}}},b=r?.[s]?.[d];if(b==="unspecified")return h();b||(b=[o()]);let f=b.filter(Re),T=b.filter(Se).map(m=>m(l)),C=T.some(m=>m==="allow"),D=[...f,...T].filter(m=>m!==void 0).filter(m=>m!=="allow");!C&&D.length===0&&(D=[o()]);let A;for(let m of D)m?.limit&&(A===void 0||m.limit>A)&&(A=m.limit);let S;for(let m of [...D,a?.inject])m?.columns&&(S===void 0?S=m.columns:S={...S,...m.columns});let g=C?[]:D.filter(m=>m?.where).map(m=>m.where),x=g.length>0?{OR:g}:void 0;return h({where:x,columns:S,limit:A})},explicitFilters:d=>e[s][d]});for(let s of Object.keys(t.query))u[s]=y(s);return u}}};var ie=({context:t,abilityBuilder:n})=>async i=>{let p=t?await t(i):{};return {...p,abilities:n.buildWithUserContext(p)}};function z(t){return String(t).charAt(0).toUpperCase()+String(t).slice(1)}function W(t){return t instanceof PgEnumColumn}var oe=({db:t,schemaBuilder:n})=>{let i=new Map;return ({tsName:r,enumColumn:e,refName:c})=>{let l,u;if(r){let a=t._.relations.schema[r];l=r.toString();let h=Object.values(t._.relations.schema).filter(o=>typeof o=="object").map(o=>Object.values(o[Symbol.for("drizzle:Columns")])).flat(2).find(o=>o.config?.enum===a);if(!h)throw new I(`Could not find applied enum column for ${r.toString()}.
|
8
|
+
Please ensure that you use the enum at least once as a column of a table!`);u=h.enumValues;}else if(e){let a=Object.entries(t._.relations.schema).find(([h,o])=>o===e.config.enum);if(!a)throw new I(`Could not find enum in schema for ${e.name}!`);l=a[0],u=e.enumValues;}if(!l||!u)throw new I("Could not determine enum structure!");let y=c??`${z(toCamelCase(l))}Enum`,s=i.get(y);return s||(s=n.enumType(y,{values:u}),i.set(y,s),s)}};var se={paths:{"/webhook":{post:{operationId:"webhook_create",description:"Creates a webhook subscription.",tags:[],parameters:[],requestBody:{content:{"application/json":{schema:{$ref:"#/components/schemas/WebhookCreateBody"}}}},responses:{200:{content:{"application/json":{schema:{$ref:"#/components/schemas/WebhookDetailResponse"}}}}}}},"/webhook/{id}":{post:{operationId:"webhook_update",description:"Updates a webhook subscription.",parameters:[{name:"id",in:"path",description:"The ID of the webhook to update",required:true,schema:{type:"string"}}],requestBody:{content:{"application/json":{schema:{$ref:"#/components/schemas/WebhookCreateBody"}}}},responses:{200:{content:{"application/json":{schema:{$ref:"#/components/schemas/WebhookDetailResponse"}}}}}},delete:{operationId:"webhook_delete",description:"Removes a webhook subscription.",tags:[],parameters:[{name:"id",in:"path",description:"The ID of the webhook to delete",required:true,schema:{type:"string"}}],responses:{200:{content:{"application/json":{schema:{$ref:"#/components/schemas/WebhookDetailResponse"}}}}}}}},components:{schemas:{WebhookCreateBody:{type:"object",properties:{subscription:{description:"The subscription to subscribe to. In many cases, these match the available query IDs without the '_query' suffix. E.g., 'findFirstUser_query' -> 'findFirstUser'. See the graphql schema for more details on what subscriptions are available.",type:"string"},variables:{description:"The variables to pass to the subscription.",type:"object"},url:{description:"The URL to send the webhook to.",type:"string"}}},WebhookDetailResponse:{type:"object",properties:{id:{description:"The ID of the webhook. Can be used as reference in update or delete calls.",type:"string"}}}}}};function _({sqlType:t,fieldName:n}){let i;if(["serial","int","integer","tinyint","smallint","mediumint"].includes(t)&&(i="Int"),["real","decimal","double","float"].includes(t)&&(i="Float"),["string","text","varchar","char","text(256)"].includes(t)&&(n&&(n.toLowerCase().endsWith("_id")||n.toLowerCase().endsWith("id"))?i="ID":i="String"),["uuid"].includes(t)&&(i="ID"),["boolean"].includes(t)&&(i="Boolean"),["timestamp","datetime"].includes(t)&&(i="DateTime"),["date"].includes(t)&&(i="Date"),["json"].includes(t)&&(i="JSON"),i!==void 0)return i;throw G(t,"SQL to GQL")}var Ee=t=>typeof t!="object"?false:!!Object.keys(t).some(n=>["args","nullable","query","subscribe","description","type","resolve"].find(i=>i===n)),ae=({db:t,schemaBuilder:n,makePubSubInstance:i,whereArgImplementer:p,orderArgImplementer:r,enumImplementer:e,abilityBuilder:c})=>({table:l,refName:u,readAction:y="read",adjust:s})=>{let d=B({db:t,tsName:l});Object.keys(d.primaryColumns).length===0&&console.warn(`Could not find primary key for ${l.toString()}. Cannot register subscriptions!`);let a=Object.values(d.primaryColumns)[0],{registerOnInstance:h}=i({table:l});return n.drizzleObject(l,{name:u??z(l.toString()),subscribe:(o,b,f)=>{if(!a)return;let T=b[a.name];if(!T){console.warn(`Could not find primary key value for ${JSON.stringify(b)}. Cannot register subscription!`);return}h({instance:o,action:"updated",primaryKeyValue:T});},applyFilters:c?.registeredFilters?.[l]?.[y],fields:o=>{let b=d.columns,f=(S,g,x)=>{let m=_({sqlType:S,fieldName:g});switch(m){case "Int":return o.exposeInt(g,{nullable:x});case "String":return o.exposeString(g,{nullable:x});case "Boolean":return o.exposeBoolean(g,{nullable:x});case "Date":return o.field({type:"Date",resolve:R=>R[g],nullable:x});case "DateTime":return o.field({type:"DateTime",resolve:R=>R[g],nullable:x});case "Float":return o.exposeFloat(g,{nullable:x});case "ID":return o.exposeID(g,{nullable:x});case "JSON":return o.field({type:"JSON",resolve:R=>R[g],nullable:x});default:throw new I(`Unsupported object type ${m} for column ${g}`)}},T=new Map,C=s?.(new Proxy(o,{get:(S,g)=>typeof S[g]=="function"?(...x)=>{let m=S[g](...x),R=x.find(Ee);if(!R)throw new I("Expected config object to be passed to adjust field");return T.set(m,{params:x,creatorFunction:S[g],configObject:R}),m}:S[g]}))??{},D=Object.entries(b).reduce((S,[g,x])=>{if(C[g]){let{params:m,creatorFunction:R,configObject:P}=T.get(C[g]);return typeof P.nullable!="boolean"&&(P.nullable=!x.notNull),C[g]=R.bind(o)(...m),S}if(W(x)){let m=e({enumColumn:x});S[g]=o.field({type:m,resolve:R=>R[g],nullable:!x.notNull});}else S[g]=f(x.getSQLType(),g,!x.notNull);return S},{}),A=Object.entries(d.relations??{}).reduce((S,[g,x])=>{let m=B({db:t,table:x.targetTable}),R=p({dbName:m.dbName}),P=r({dbName:m.dbName}),k=i({table:m.tsName}),F=false,q=true,E="many";x instanceof One&&(q=false,F=x.optional,E="single");let Q=(N,j)=>{k.registerOnInstance({instance:N,action:"created"}),k.registerOnInstance({instance:N,action:"removed"});};if(C[g]){let{params:N,creatorFunction:j,configObject:O}=T.get(C[g]);return typeof O.nullable!="boolean"&&(O.nullable=F),typeof O.subscribe!="function"&&(O.subscribe=Q),C[g]=j.bind(o)(...N),S}return S[g]=o.relation(g,{args:{where:o.arg({type:R,required:false}),orderBy:o.arg({type:P,required:false}),...q?{offset:o.arg.int({required:false}),limit:o.arg.int({required:false})}:{}},subscribe:Q,nullable:F,query:(N,j)=>{N=JSON.parse(JSON.stringify(N));let O=j.abilities[m.tsName].filter(y,{inject:{where:N.where,limit:N.limit}}).query[E];return N.offset&&(O.offset=N.offset),N.orderBy&&(O.orderBy=N.orderBy),O}}),S},{});return {...D,...A,...C}}})};var Pe=t=>`${z(toCamelCase(t.toString()))}OrderInputArgument`,le=({db:t,schemaBuilder:n})=>{let i=new Map,p=v(()=>n.enumType("SortingParameter",{values:["asc","desc"]})),r=({table:e,refName:c,dbName:l})=>{let u=B({db:t,dbName:l,tsName:e}),y=c??Pe(u.tsName),s=i.get(y);return s||(s=n.inputType(y,{fields:a=>{let h=Object.entries(u.columns).reduce((b,[f,T])=>(b[f]=a.field({type:p(),required:false}),b),{}),o=Object.entries(u.relations??{}).reduce((b,[f,T])=>{let C=B({db:t,table:T.targetTable}),D=r({dbName:C.dbName});return b[f]=a.field({type:D,required:false}),b},{});return {...h,...o}}}),i.set(y,s),s)};return r};var ve="RUMBLE_SUBSCRIPTION_NOTIFICATION",Fe="REMOVED",Oe="UPDATED",ze="CREATED",pe=({subscriptions:t,db:n})=>{let i=t?createPubSub(...t):createPubSub();return {pubsub:i,makePubSubInstance:({table:r})=>{function e({action:c,tableName:l,primaryKeyValue:u}){let y;switch(c){case "created":y=ze;break;case "removed":y=Fe;break;case "updated":y=Oe;break;default:throw new Error(`Unknown action: ${c}`)}return `${ve}/${l}${u?`/${u}`:""}/${y}`}return {registerOnInstance({instance:c,action:l,primaryKeyValue:u}){let y=e({tableName:r.toString(),action:l,primaryKeyValue:u});c.register(y);},created(){let c=e({tableName:r.toString(),action:"created"});return i.publish(c)},removed(c){let l=e({tableName:r.toString(),action:"removed"});return i.publish(l)},updated(c){let u=(Array.isArray(c)?c:[c]).map(s=>e({tableName:r.toString(),action:"updated",primaryKeyValue:s})),y=Array.from(new Set(u));for(let s of y)i.publish(s);}}}}};var me=({db:t,schemaBuilder:n,whereArgImplementer:i,orderArgImplementer:p,makePubSubInstance:r})=>({table:e,readAction:c="read",listAction:l="read"})=>{let u=i({table:e}),y=p({table:e}),s=B({db:t,tsName:e}),d=Object.values(s.primaryColumns)[0],{registerOnInstance:a}=r({table:e});return n.queryFields(h=>({[plural(e.toString())]:h.drizzleField({type:[e],nullable:false,smartSubscription:true,subscribe:(o,b,f,T,C)=>{a({instance:o,action:"created"}),a({instance:o,action:"removed"});},args:{where:h.arg({type:u,required:false}),orderBy:h.arg({type:y,required:false}),limit:h.arg.int({required:false}),offset:h.arg.int({required:false})},resolve:(o,b,f,T,C)=>{f=JSON.parse(JSON.stringify(f));let D=T.abilities[e].filter(l,f.where||f.limit||f.offset?{inject:{where:f.where,limit:f.limit}}:void 0).query.many;f.offset&&(D.offset=f.offset),f.orderBy&&(D.orderBy=f.orderBy);let A=o(D);return D.columns&&(A.columns=D.columns),t.query[e].findMany(A)}}),[singular(e.toString())]:h.drizzleField({type:e,nullable:false,smartSubscription:true,args:{id:h.arg.id({required:true})},resolve:(o,b,f,T,C)=>{f=JSON.parse(JSON.stringify(f));let D=T.abilities[e].filter(c,{inject:{where:{[d.name]:f.id}}}).query.single,A=o(D);return D.columns&&(A.columns=D.columns),t.query[e].findFirst(A).then(V)}})}))};var ce="ManualFiltersPlugin",ye=ce,Ue="applyFilters",$=class extends BasePlugin{wrapResolve(n,i){return async(p,r,e,c)=>{let l=(i?.type).type?.ref.currentConfig.pothosOptions[Ue];if(!l||!Array.isArray(l)||l.length===0)return n(p,r,e,c);let u=await n(p,r,e,c),y=Array.isArray(u)?u:[u],s=Array.isArray(l)?l:[l],d=await ee({filters:s,entities:y,context:e});return Array.isArray(u)?d:d[0]??null}}};we.registerPlugin(ce,$);var je=t=>`${z(toCamelCase(t.toString()))}WhereInputArgument`,de=({db:t,schemaBuilder:n,enumImplementer:i})=>{let p=new Map,r=({table:e,refName:c,dbName:l})=>{let u=B({db:t,dbName:l,tsName:e}),y=c??je(u.tsName),s=p.get(y);return s||(s=n.inputType(y,{fields:a=>{let h=(f,T)=>{let C=_({sqlType:f,fieldName:T});switch(C){case "Int":return a.field({type:"IntWhereInputArgument"});case "String":return a.field({type:"StringWhereInputArgument"});case "Boolean":return a.boolean({required:false});case "Date":return a.field({type:"DateWhereInputArgument"});case "DateTime":return a.field({type:"DateWhereInputArgument"});case "Float":return a.field({type:"FloatWhereInputArgument"});case "ID":return a.id({required:false});case "JSON":return a.field({type:"JSON",required:false});default:throw new I(`Unsupported argument type ${C} for column ${f}`)}},o=Object.entries(u.columns).reduce((f,[T,C])=>{if(W(C)){let D=i({enumColumn:C});f[T]=a.field({type:D,required:false});}else f[T]=h(C.getSQLType(),T);return f},{}),b=Object.entries(u.relations??{}).reduce((f,[T,C])=>{let D=B({db:t,table:C.targetTable}),A=r({dbName:D.dbName});return f[T]=a.field({type:A,required:false}),f},{});return {...o,...b}}}),p.set(y,s),s)};return r};function fe(t){let n=t.inputRef("IntWhereInputArgument").implement({fields:e=>({eq:e.int(),ne:e.int(),gt:e.int(),gte:e.int(),lt:e.int(),lte:e.int(),in:e.intList(),notIn:e.intList(),like:e.string(),ilike:e.string(),notLike:e.string(),notIlike:e.string(),isNull:e.boolean(),isNotNull:e.boolean(),arrayOverlaps:e.intList(),arrayContained:e.intList(),arrayContains:e.intList(),AND:e.field({type:[n]}),OR:e.field({type:[n]}),NOT:e.field({type:n})})}),i=t.inputRef("FloatWhereInputArgument").implement({fields:e=>({eq:e.float(),ne:e.float(),gt:e.float(),gte:e.float(),lt:e.float(),lte:e.float(),in:e.floatList(),notIn:e.floatList(),like:e.string(),ilike:e.string(),notLike:e.string(),notIlike:e.string(),isNull:e.boolean(),isNotNull:e.boolean(),arrayOverlaps:e.floatList(),arrayContained:e.floatList(),arrayContains:e.floatList(),AND:e.field({type:[i]}),OR:e.field({type:[i]}),NOT:e.field({type:i})})}),p=t.inputRef("StringWhereInputArgument").implement({fields:e=>({eq:e.string(),ne:e.string(),gt:e.string(),gte:e.string(),lt:e.string(),lte:e.string(),in:e.stringList(),notIn:e.stringList(),like:e.string(),ilike:e.string(),notLike:e.string(),notIlike:e.string(),isNull:e.boolean(),isNotNull:e.boolean(),arrayOverlaps:e.stringList(),arrayContained:e.stringList(),arrayContains:e.stringList(),AND:e.field({type:[p]}),OR:e.field({type:[p]}),NOT:e.field({type:p})})}),r=t.inputRef("DateWhereInputArgument").implement({fields:e=>({eq:e.field({type:"Date"}),ne:e.field({type:"Date"}),gt:e.field({type:"Date"}),gte:e.field({type:"Date"}),lt:e.field({type:"Date"}),lte:e.field({type:"Date"}),in:e.field({type:["Date"]}),notIn:e.field({type:["Date"]}),like:e.string(),ilike:e.string(),notLike:e.string(),notIlike:e.string(),isNull:e.boolean(),isNotNull:e.boolean(),arrayOverlaps:e.field({type:["Date"]}),arrayContained:e.field({type:["Date"]}),arrayContains:e.field({type:["Date"]}),AND:e.field({type:[r]}),OR:e.field({type:[r]}),NOT:e.field({type:r})})});}var ge=({db:t,disableDefaultObjects:n,pubsub:i,pothosConfig:p})=>{let r=new we({...p,plugins:[ye,We,_e,...p?.plugins??[]],drizzle:{client:t,relations:t._.relations,getTableConfig(e){return {columns:Object.values(e[Symbol.for("drizzle:Columns")]),primaryKeys:Object.values(e[Symbol.for("drizzle:Columns")]).filter(c=>c.primary)}}},smartSubscriptions:{...subscribeOptionsFromIterator((e,c)=>i.subscribe(e))}});return r.addScalarType("JSON",JSONResolver),r.addScalarType("Date",DateResolver),r.addScalarType("DateTime",DateTimeISOResolver),fe(r),n?.query||r.queryType({}),n?.subscription||r.subscriptionType({}),n?.mutation||r.mutationType({}),{schemaBuilder:r}};var Ye=t=>{t.actions||(t.actions=["read","update","delete"]),t.defaultLimit===void 0&&(t.defaultLimit=100);let n=re(t),i=ie({...t,abilityBuilder:n}),{makePubSubInstance:p,pubsub:r}=pe({...t}),{schemaBuilder:e}=ge({...t,pubsub:r}),c=oe({...t,schemaBuilder:e}),l=de({...t,schemaBuilder:e,enumImplementer:c}),u=le({...t,schemaBuilder:e}),y=ae({...t,schemaBuilder:e,makePubSubInstance:p,whereArgImplementer:l,orderArgImplementer:u,enumImplementer:c,abilityBuilder:n}),s=me({...t,schemaBuilder:e,whereArgImplementer:l,orderArgImplementer:u,makePubSubInstance:p}),d=v(()=>e.toSchema());return {abilityBuilder:n,schemaBuilder:e,createYoga:o=>createYoga({...o,schema:d(),context:i}),createSofa:o=>(o.openAPI&&(o.openAPI={...se,...o.openAPI}),useSofa({...o,schema:d(),context:i})),object:y,whereArg:l,orderArg:u,query:s,pubsub:p,enum_:c}};export{I as RumbleError,w as RumbleErrorSafe,V as assertFindFirstExists,Ce as assertFirstEntryExists,Ye as rumble};//# sourceMappingURL=index.js.map
|
9
9
|
//# sourceMappingURL=index.js.map
|