Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@gqlite/gql2sql

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@gqlite/gql2sql - npm Package Compare versions

Comparing version
0.1.3
to
0.1.4
+4
-0
dist/gq2sql.d.ts

@@ -75,2 +75,6 @@ import type { Database } from "bun:sqlite";

/**
* Get the foreign key name for a table in a junction table
*/
private getJunctionForeignKey;
/**
* Build SELECT fields with JSON aggregation

@@ -77,0 +81,0 @@ */

+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"gq2sql.d.ts","sourceRoot":"","sources":["../src/gq2sql.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EACX,MAAM,EAON,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,OAAO,CAgCxE;AAED,qBAAa,wBAAwB;IACpC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAK;gBAEb,MAAM,EAAE,MAAM;IAI1B;;OAEG;IACH,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG;QAC9B,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAChC;IAmBD;;OAEG;IACG,iBAAiB,CACtB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,QAAQ,GAChB,OAAO,CAAC,OAAO,CAAC;IAiBnB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAsC3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA6DzB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAwI9B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAiB/B;;OAEG;IACH,OAAO,CAAC,cAAc;IAmBtB;;OAEG;IACH,OAAO,CAAC,YAAY;IASpB;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,aAAa;IA2CrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAe1B;;OAEG;IACH,OAAO,CAAC,UAAU;IAclB;;OAEG;IACH,OAAO,CAAC,YAAY;IAgEpB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAoB1B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;OAEG;IACH,OAAO,CAAC,0BAA0B;IA6LlC;;OAEG;IACH,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACH,OAAO,CAAC,eAAe;IAkIvB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAyBhC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAsB/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAuT3B;;OAEG;IACH,OAAO,CAAC,+BAA+B;IA0BvC;;OAEG;IACH,OAAO,CAAC,0CAA0C;IAyBlD;;OAEG;IACH,OAAO,CAAC,eAAe;IAMvB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkBxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAexB;;OAEG;IACH,OAAO,CAAC,YAAY;IAoCpB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;IACH,OAAO,CAAC,YAAY;CAKpB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACpC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GAChB,OAAO,CAAC,OAAO,CAAC,CAGlB;AAGD,eAAO,MAAM,aAAa,EAAE,MA4B3B,CAAC"}
{"version":3,"file":"gq2sql.d.ts","sourceRoot":"","sources":["../src/gq2sql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQ3C,OAAO,KAAK,EAKX,MAAM,EAGN,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,OAAO,CAgCxE;AAED,qBAAa,wBAAwB;IACpC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,YAAY,CAAK;gBAEb,MAAM,EAAE,MAAM;IAI1B;;OAEG;IACH,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG;QAC9B,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAChC;IAmBD;;OAEG;IACG,iBAAiB,CACtB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,QAAQ,GAChB,OAAO,CAAC,OAAO,CAAC;IAiBnB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAsC3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA6DzB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IA8I9B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAiB/B;;OAEG;IACH,OAAO,CAAC,cAAc;IAmBtB;;OAEG;IACH,OAAO,CAAC,YAAY;IASpB;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAsDrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAe1B;;OAEG;IACH,OAAO,CAAC,UAAU;IAclB;;OAEG;IACH,OAAO,CAAC,YAAY;IAkGpB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwB1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAY7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAyMlC;;OAEG;IACH,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACH,OAAO,CAAC,eAAe;IA2IvB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAwDhC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAsB/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA4iB3B;;OAEG;IACH,OAAO,CAAC,+BAA+B;IA+BvC;;OAEG;IACH,OAAO,CAAC,0CAA0C;IAyBlD;;OAEG;IACH,OAAO,CAAC,eAAe;IAMvB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA+BxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAexB;;OAEG;IACH,OAAO,CAAC,YAAY;IAoCpB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;IACH,OAAO,CAAC,YAAY;CAKpB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACpC,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,GAChB,OAAO,CAAC,OAAO,CAAC,CAGlB;AAGD,eAAO,MAAM,aAAa,EAAE,MA4B3B,CAAC"}

@@ -1,4 +0,4 @@

import{createRequire as B}from"node:module";var M=B(import.meta.url);import{parse as w}from"graphql";function v(E){if(E.length===0)return[];return E.map((H)=>{let z={};for(let I in H){let W=H[I];if(typeof W==="string"&&(W.startsWith("{")||W.startsWith("[")))try{let Y=JSON.parse(W);if(Array.isArray(Y))z[I]=Y.filter(($)=>$!==null);else z[I]=Y}catch{z[I]=W}else z[I]=W}return z})}class k{schema;paramCounter=0;constructor(E){this.schema=E}convert(E){try{let H=w(E),z=this.extractQueryContext(H),{sql:I,params:W}=this.buildSQLQuery(z);return{sql:I,params:W}}catch(H){let z=H instanceof Error?H.message:String(H);throw new Error(`GraphQL to SQL conversion failed: ${z}`)}}async convertAndExecute(E,H){try{let{sql:z,params:I}=this.convert(E),W=this.executeQuery(z,I,H);return v(W)}catch(z){let I=z instanceof Error?z.message:String(z);throw new Error(`GraphQL to SQL conversion failed: ${I}`)}}extractQueryContext(E){let H=E.definitions[0];if(!H||H.kind!=="OperationDefinition"||H.operation!=="query")throw new Error("Only query operations are supported");let z=H.selectionSet.selections[0];if(z.kind!=="Field")throw new Error("Invalid query structure");let I=this.getTableName(z.name.value),W="t0";return{tableName:I,alias:W,selections:this.extractSelections(z.selectionSet,z.name.value),joins:[],where:this.extractWhereConditions(z.arguments||[],I,W),orderBy:this.extractOrderBy(z.arguments||[]),limit:this.extractLimit(z.arguments||[]),offset:this.extractOffset(z.arguments||[])}}extractSelections(E,H){if(!E)return[];let z=this.schema[H];if(!z)return[];return E.selections.filter((I)=>I.kind==="Field").map((I)=>{let W=I.name.value,Y=z[W],$=I.selectionSet&&I.selectionSet.selections.length>0,V=!!(Y?.relation&&$),X,U,D,Z;if(V&&I.arguments&&I.arguments.length>0){let _=`nested_${W}`;X=this.extractWhereConditions(I.arguments,Y?.relation?.table||H,_),U=this.extractOrderBy(I.arguments),D=this.extractLimit(I.arguments),Z=this.extractOffset(I.arguments)}return{fieldName:W,isRelation:V,relationInfo:Y?.relation,whereConditions:X,orderBy:U,limit:D,offset:Z,nestedSelections:V&&Y?.relation?this.extractSelections(I.selectionSet,Y.relation.table):void 0}})}extractWhereConditions(E,H,z){let I=[];for(let W of E)if(W.name.value==="where"&&W.value.kind==="ObjectValue")for(let Y of W.value.fields){let $=this.sanitizeFieldName(Y.name.value);if(Y.value.kind==="StringValue"||Y.value.kind==="IntValue"||Y.value.kind==="FloatValue"){let V=`param_${++this.paramCounter}`,X=Y.value.value;if(Y.value.kind==="IntValue")X=Number.parseInt(X,10);else if(Y.value.kind==="FloatValue")X=Number.parseFloat(X);I.push({field:`${z}.${$}`,operator:"=",value:X,paramName:V})}else if(Y.value.kind==="Variable"){let V=Y.value.name.value;I.push({field:`${z}.${$}`,operator:"=",value:`$${V}`,paramName:V})}else if(Y.value.kind==="ObjectValue")for(let V of Y.value.fields){let X=V.name.value;if(V.value.kind==="StringValue"||V.value.kind==="IntValue"||V.value.kind==="FloatValue"){let U=`param_${++this.paramCounter}`,D=this.mapGraphQLOperatorToSQL(X),Z=V.value.value;if(V.value.kind==="IntValue")Z=Number.parseInt(Z,10);else if(V.value.kind==="FloatValue")Z=Number.parseFloat(Z);I.push({field:`${z}.${$}`,operator:D,value:Z,paramName:U})}else if(V.value.kind==="Variable"){let U=V.value.name.value,D=this.mapGraphQLOperatorToSQL(X);I.push({field:`${z}.${$}`,operator:D,value:`$${U}`,paramName:U})}}}else if(W.name.value!=="orderBy"&&W.name.value!=="limit"&&W.name.value!=="offset"){let Y=this.sanitizeFieldName(W.name.value);if(W.value.kind==="StringValue"||W.value.kind==="IntValue"||W.value.kind==="FloatValue"){let $=`param_${++this.paramCounter}`,V=W.value.value;if(W.value.kind==="IntValue")V=Number.parseInt(V,10);else if(W.value.kind==="FloatValue")V=Number.parseFloat(V);I.push({field:`${z}.${Y}`,operator:"=",value:V,paramName:$})}else if(W.value.kind==="Variable"){let $=W.value.name.value;I.push({field:`${z}.${Y}`,operator:"=",value:`$${$}`,paramName:$})}}return I}mapGraphQLOperatorToSQL(E){return{eq:"=",ne:"!=",gt:">",gte:">=",lt:"<",lte:"<=",like:"LIKE",ilike:"LIKE",in:"IN",notIn:"NOT IN"}[E]||"="}extractOrderBy(E){let H=[];for(let z of E)if(z.name.value==="orderBy"&&z.value.kind==="ObjectValue"){for(let I of z.value.fields)if(I.value.kind==="EnumValue")H.push({field:this.sanitizeFieldName(I.name.value),direction:I.value.value==="DESC"?"DESC":"ASC"})}return H}extractLimit(E){let H=E.find((z)=>z.name.value==="limit");if(H&&H.value.kind==="IntValue"){let z=Number.parseInt(H.value.value);return Math.min(Math.max(z,1),1000)}return}extractOffset(E){let H=E.find((z)=>z.name.value==="offset");if(H&&H.value.kind==="IntValue"){let z=Number.parseInt(H.value.value);return Math.max(z,0)}return}buildSQLQuery(E){let H=this.buildJoins(E),z=new Map,I=this.buildSelectFields(E,H,z),W=this.buildWhereClause(E.where,z),Y=this.buildOrderByClause(E.orderBy,E.alias),$=this.buildLimitClause(E.limit,E.offset),V=this.buildGroupByClause(E,H),X=`SELECT ${I} FROM ${E.tableName} AS ${E.alias} ${H.map((Z)=>`${Z.joinType} JOIN ${Z.table} AS ${Z.alias} ON ${Z.condition} `).join("")}${W?`WHERE ${W} `:""}${V?`GROUP BY ${V} `:""}${Y?`ORDER BY ${Y} `:""}`+`${$}`.trim().replace(/\s+/g," "),U={},D=0;for(let[Z,_]of z.entries())U[D.toString()]=_,D++;return{sql:X,params:U}}collectNestedParams(E,H){for(let z of E){if(z.whereConditions)H.push(...z.whereConditions.map((I)=>I.value));if(z.nestedSelections)this.collectNestedParams(z.nestedSelections,H)}}buildGroupByClause(E,H){if(E.selections.some((I)=>I.isRelation&&I.relationInfo?.type==="one-to-many"))return`${E.alias}.id`;return""}buildJoins(E){let H=[];return this.collectJoins(E.selections,E.tableName,E.alias,H,new Map,"",0),H}collectJoins(E,H,z,I,W=new Map,Y="",$=0){let V=I.length+1;for(let X of E)if(X.isRelation&&X.relationInfo){let U=Y?`${Y}.${X.fieldName}`:X.fieldName,D=`${U}`,Z=W.get(D),_=$>0&&X.relationInfo.type==="one-to-many";if(!Z&&!_){Z=`t${V++}`,W.set(D,Z);let G=this.buildJoinCondition(z,Z,X.relationInfo);I.push({table:X.relationInfo.table,alias:Z,joinType:"LEFT",condition:G,path:U})}if(X.nestedSelections&&X.nestedSelections.length>0&&!_)this.collectJoins(X.nestedSelections,X.relationInfo.table,Z||z,I,W,U,$+1)}}buildJoinCondition(E,H,z){switch(z.type){case"one-to-many":return`${E}.id = ${H}.${z.foreignKey}`;case"many-to-one":return`${E}.${z.foreignKey} = ${H}.id`;case"many-to-many":throw new Error("Many-to-many relations require junction table handling");default:throw new Error(`Unsupported relation type: ${z.type}`)}}buildSelectFields(E,H,z){let I=[],W=new Map(H.map((Y)=>[Y.table,Y.alias]));return this.buildSelectFieldsRecursive(E.selections,E.tableName,E.alias,I,W,H,z,""),I.join(", ")}buildSelectFieldsRecursive(E,H,z,I,W,Y,$,V=""){for(let X of E){let U=X.fieldName,D=V?`${V}_${U}`:U;if(X.isRelation&&X.relationInfo){let Z=X.relationInfo.table,_=this.findJoinAlias(Y,Z,z);if(_)if(X.nestedSelections&&X.nestedSelections.length>0)if((X.relationInfo.type==="one-to-many"||X.whereConditions&&X.whereConditions.length>0)&&X.relationInfo.type==="one-to-many"){let O=this.buildSubqueryFields(X.nestedSelections,X.relationInfo.table,0,!0,"sub",$);if(O){let{whereClause:K,paramMap:R}=this.buildSubqueryWhereClause("sub",X.relationInfo.foreignKey,z,X.whereConditions,$);for(let[J,P]of R.entries())$.set(J,P);let Q="",L="";if(X.orderBy&&X.orderBy.length>0)Q=` ORDER BY ${X.orderBy.map((P)=>{return`sub.${this.sanitizeFieldName(P.field)} ${P.direction}`}).join(", ")}`;if(X.limit!==void 0||X.offset!==void 0)L=this.buildLimitClause(X.limit,X.offset);let T=L||Q?(()=>{let J=this.buildSubqueryColumnList(X.nestedSelections,"sub");return`(SELECT json_group_array(json_object(${O})) FROM (SELECT ${J} FROM ${X.relationInfo.table} sub WHERE ${K}${Q}${L?` ${L}`:""}) sub)`})():`(SELECT json_group_array(json_object(${O})) FROM ${X.relationInfo.table} sub WHERE ${K})`;I.push(`${T} AS ${this.sanitizeFieldName(D)}`)}}else{let O=this.buildJsonFields(X.nestedSelections,Z,_,Y,$,0);if(X.relationInfo.type==="one-to-many")I.push(`json_group_array(CASE WHEN ${_}.id IS NOT NULL THEN json_object(${O}) ELSE NULL END ) AS ${this.sanitizeFieldName(D)}`);else I.push(`CASE WHEN ${_}.id IS NOT NULL THEN json_object(${O}) ELSE NULL END AS ${this.sanitizeFieldName(D)}`)}else if(X.relationInfo.type==="many-to-one"){let G=this.schema[Z];if(G){let O=Object.keys(G).filter((K)=>!G[K]?.relation).map((K)=>`'${K}', ${_}.${this.sanitizeFieldName(K)}`).join(", ");I.push(`CASE WHEN ${_}.id IS NOT NULL THEN json_object(${O}) ELSE NULL END AS ${this.sanitizeFieldName(D)}`)}}else{let G=this.schema[Z];if(G){let K=`(SELECT json_group_array(json_object(${Object.keys(G).filter((R)=>!G[R]?.relation).map((R)=>`'${R}', sub.${this.sanitizeFieldName(R)}`).join(", ")})) FROM ${Z} sub WHERE sub.${X.relationInfo.foreignKey} = ${z}.id)`;I.push(`${K} AS ${this.sanitizeFieldName(D)}`)}}}else I.push(`${z}.${this.sanitizeFieldName(U)} AS ${this.sanitizeFieldName(D)}`)}}findJoinAlias(E,H,z){return E.find((W)=>W.table===H&&W.condition.includes(z))?.alias||null}buildJsonFields(E,H,z,I,W,Y=0){let $=[];for(let V of E){let X=V.fieldName;if(V.isRelation&&V.relationInfo&&V.nestedSelections){let U=this.findJoinAlias(I,V.relationInfo.table,z);if(V.relationInfo.type==="one-to-many"){if(Y>0){let D=this.buildSubqueryFields(V.nestedSelections,V.relationInfo.table,0,!0,"sub",W);if(D){let{whereClause:Z,paramMap:_}=this.buildSubqueryWhereClause("sub",V.relationInfo.foreignKey,z,V.whereConditions);for(let[R,Q]of _.entries())W.set(R,Q);let G="",O="";if(V.orderBy&&V.orderBy.length>0)G=` ORDER BY ${V.orderBy.map((Q)=>{return`sub.${this.sanitizeFieldName(Q.field)} ${Q.direction}`}).join(", ")}`;if(V.limit!==void 0||V.offset!==void 0)O=this.buildLimitClause(V.limit,V.offset);let K=O||G?(()=>{let R=D.split(", ").filter((Q,L)=>L%2===1).join(", ");return`(SELECT json_group_array(json_object(${D})) FROM (SELECT ${R} FROM ${V.relationInfo.table} sub WHERE ${Z}${G}${O?` ${O}`:""}) sub)`})():`(SELECT json_group_array(json_object(${D})) FROM ${V.relationInfo.table} sub WHERE ${Z})`;$.push(`'${X}', ${K}`)}}else if(U){let D=this.buildJsonFields(V.nestedSelections,V.relationInfo.table,U,I,W,Y+1);$.push(`'${X}', json_group_array(json_object(${D}))`)}}else if(U){let D=this.buildJsonFields(V.nestedSelections,V.relationInfo.table,U,I,W,Y+1);$.push(`'${X}', json_object(${D})`)}}else $.push(`'${X}', ${z}.${this.sanitizeFieldName(X)}`)}return $.join(", ")}buildSubqueryWhereClause(E,H,z,I,W=new Map){let Y=[`${E}.${H} = ${z}.id`];if(I&&I.length>0)for(let V of I){let X=V.field.replace(/^[^.]+\./,`${E}.`),U=`param_${E}_${V.field.replace(".","_")}_${W.size}`;Y.push(`${X} ${V.operator} $${U}`),W.set(U,V.value)}return{whereClause:Y.join(" AND "),paramMap:W}}buildSubqueryColumnList(E,H){let z=[];for(let I of E)if(!I.isRelation)z.push(`${H}.${this.sanitizeFieldName(I.fieldName)}`);else if(I.relationInfo){let W=I.relationInfo.foreignKey;if(W)z.push(`${H}.${this.sanitizeFieldName(W)}`)}return z.join(", ")}buildSubqueryFields(E,H,z=0,I=!1,W="sub",Y=new Map){let $=[],V=3,X=8;for(let U of E){let D=U.fieldName;if(U.isRelation&&U.relationInfo&&U.nestedSelections)if(U.relationInfo.type==="one-to-many"){if(I){let Z=U.nestedSelections.filter((_)=>{if(!_.isRelation)return!0;if(_.relationInfo?.type==="many-to-one")return!0;return!1});if(Z.length>0){let _=this.buildSubqueryFields(Z,U.relationInfo.table,z+1,!0,"nested_sub");if(_){let{whereClause:G,paramMap:O}=this.buildSubqueryWhereClause("nested_sub",U.relationInfo.foreignKey,"sub",U.whereConditions);for(let[R,Q]of O.entries())Y.set(R,Q);let K=`(SELECT json_group_array(json_object(${_})) FROM ${U.relationInfo.table} nested_sub WHERE ${G})`;$.push(`'${D}', ${K}`)}}continue}if(z>=3){let Z=this.getScalarFields(U.nestedSelections);if(Z.length>0){let _=Z.map((L)=>`'${L}', nested_sub.${this.sanitizeFieldName(L)}`).join(", "),{whereClause:G,paramMap:O}=this.buildSubqueryWhereClause("nested_sub",U.relationInfo.foreignKey,"sub",U.whereConditions);for(let[L,T]of O.entries())Y.set(L,T);let K="",R="";if(U.orderBy&&U.orderBy.length>0)K=` ORDER BY ${U.orderBy.map((T)=>{return`nested_sub.${this.sanitizeFieldName(T.field)} ${T.direction}`}).join(", ")}`;if(U.limit!==void 0||U.offset!==void 0)R=this.buildLimitClause(U.limit,U.offset);let Q=R||K?(()=>{let L=_.split(", ").filter((T,J)=>J%2===1).join(", ");return`(SELECT json_group_array(json_object(${_})) FROM (SELECT ${L} FROM ${U.relationInfo.table} nested_sub WHERE ${G}${K}${R?` ${R}`:""}) nested_sub)`})():`(SELECT json_group_array(json_object(${_})) FROM ${U.relationInfo.table} nested_sub WHERE ${G})`;$.push(`'${D}', ${Q}`)}}else{let Z=U.nestedSelections;if(z>=2)Z=U.nestedSelections.filter((_)=>{if(!_.isRelation)return!0;if(_.relationInfo?.type==="many-to-one")return!0;if(_.relationInfo?.type==="one-to-many"){if(z<=3)return!0}return!1});if(Z.length>0){let _=this.buildSubqueryFields(Z,U.relationInfo.table,z+1,!0,"nested_sub");if(_){let{whereClause:G,paramMap:O}=this.buildSubqueryWhereClause("nested_sub",U.relationInfo.foreignKey,"sub",U.whereConditions);for(let[L,T]of O.entries())Y.set(L,T);let K="",R="";if(U.orderBy&&U.orderBy.length>0)K=` ORDER BY ${U.orderBy.map((T)=>{return`nested_sub.${this.sanitizeFieldName(T.field)} ${T.direction}`}).join(", ")}`;if(U.limit!==void 0||U.offset!==void 0)R=this.buildLimitClause(U.limit,U.offset);let Q=R||K?(()=>{let L=this.buildSubqueryColumnList(Z,"nested_sub");return`(SELECT json_group_array(json_object(${_})) FROM (SELECT ${L} FROM ${U.relationInfo.table} nested_sub WHERE ${G}${K}${R?` ${R}`:""}) nested_sub)`})():`(SELECT json_group_array(json_object(${_})) FROM ${U.relationInfo.table} nested_sub WHERE ${G})`;$.push(`'${D}', ${Q}`)}}}}else if(z>=8){let Z=this.getScalarFields(U.nestedSelections);if(Z.length>0){let _=Z.map((G)=>`'${G}', related.${this.sanitizeFieldName(G)}`).join(", ");$.push(`'${D}', (SELECT json_object(${_}) FROM ${U.relationInfo.table} related WHERE related.id = sub.${U.relationInfo.foreignKey})`)}}else{let Z=U.nestedSelections;if(I)Z=U.nestedSelections.filter((_)=>{if(!_.isRelation)return!0;if(_.relationInfo?.type==="many-to-one")return!0;if(_.relationInfo?.type==="one-to-many"){if(z<=3)return!0}return!1});if(Z.length>0||U.nestedSelections.some((_)=>!_.isRelation)){let _=Z.length>0?Z:U.nestedSelections.filter((O)=>!O.isRelation),G=this.buildSubqueryFields(_,U.relationInfo.table,z+1,!1,"related");if(G)$.push(`'${D}', (SELECT json_object(${G}) FROM ${U.relationInfo.table} related WHERE related.id = sub.${U.relationInfo.foreignKey})`)}}else $.push(`'${D}', ${W}.${this.sanitizeFieldName(D)}`)}return $.join(", ")}filterSelectionsForArrayNesting(E,H){return E.filter((z)=>{if(!z.isRelation)return!0;if(z.relationInfo?.type==="one-to-many")return!1;if(z.relationInfo?.type==="many-to-one")return!0;return!1})}limitSelectionsToScalarsAndSimpleRelations(E){return E.filter((H)=>{if(!H.isRelation)return!0;if(H.relationInfo?.type==="many-to-one"&&H.nestedSelections)return H.nestedSelections.every((I)=>!I.isRelation);return!1})}getScalarFields(E){return E.filter((H)=>!H.isRelation).map((H)=>H.fieldName)}buildWhereClause(E,H){if(E.length===0)return"";return E.map((z)=>{if(H)return H.set(z.paramName,z.value),`${z.field} ${z.operator} ?`;return`${z.field} ${z.operator} ?`}).join(" AND ")}buildOrderByClause(E,H="t0"){if(E.length===0)return"";return E.map((z)=>`${H}.${z.field} ${z.direction}`).join(", ")}buildLimitClause(E,H){let z="";if(E!==void 0){if(z+=`LIMIT ${E}`,H!==void 0)z+=` OFFSET ${H}`}else if(H!==void 0)z+=`LIMIT 999999 OFFSET ${H}`;return z}executeQuery(E,H,z){try{let I=z.query(E);if(Object.keys(H).length===0)return I.all();let W=[],Y=Object.keys(H).sort(($,V)=>Number.parseInt($)-Number.parseInt(V));for(let $ of Y){let V=H[$];if(typeof V==="string"||typeof V==="number")W.push(V);else W.push(String(V))}return I.all(...W)}catch(I){throw console.error("SQL execution error:",I),console.error("SQL:",E),console.error("Params:",H),I}}sanitizeFieldName(E){if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(E))throw new Error(`Invalid field name: ${E}`);return E}getTableName(E){return this.sanitizeFieldName(E).toLowerCase()}}async function F(E,H,z){return await new k(H).convertAndExecute(E,z)}var g={users:{id:{type:"INTEGER"},name:{type:"TEXT"},email:{type:"TEXT"},posts:{type:"ARRAY",relation:{table:"posts",foreignKey:"user_id",type:"one-to-many"}}},posts:{id:{type:"INTEGER"},title:{type:"TEXT"},content:{type:"TEXT"},user_id:{type:"INTEGER"},user:{type:"OBJECT",relation:{table:"users",foreignKey:"user_id",type:"many-to-one"}}}};export{v as transformResult,F as graphqlToSqlite,g as exampleSchema,k as GraphQLToSQLiteConverter};
import{createRequire as v}from"node:module";var F=v(import.meta.url);import{parse as w}from"graphql";function S(H){if(H.length===0)return[];return H.map((I)=>{let z={};for(let U in I){let _=I[U];if(typeof _==="string"&&(_.startsWith("{")||_.startsWith("[")))try{let $=JSON.parse(_);if(Array.isArray($))z[U]=$.filter((D)=>D!==null);else z[U]=$}catch{z[U]=_}else z[U]=_}return z})}class T{schema;paramCounter=0;constructor(H){this.schema=H}convert(H){try{let I=w(H),z=this.extractQueryContext(I),{sql:U,params:_}=this.buildSQLQuery(z);return{sql:U,params:_}}catch(I){let z=I instanceof Error?I.message:String(I);throw new Error(`GraphQL to SQL conversion failed: ${z}`)}}async convertAndExecute(H,I){try{let{sql:z,params:U}=this.convert(H),_=this.executeQuery(z,U,I);return S(_)}catch(z){let U=z instanceof Error?z.message:String(z);throw new Error(`GraphQL to SQL conversion failed: ${U}`)}}extractQueryContext(H){let I=H.definitions[0];if(!I||I.kind!=="OperationDefinition"||I.operation!=="query")throw new Error("Only query operations are supported");let z=I.selectionSet.selections[0];if(z.kind!=="Field")throw new Error("Invalid query structure");let U=this.getTableName(z.name.value),_="t0";return{tableName:U,alias:_,selections:this.extractSelections(z.selectionSet,z.name.value),joins:[],where:this.extractWhereConditions(z.arguments||[],U,_),orderBy:this.extractOrderBy(z.arguments||[]),limit:this.extractLimit(z.arguments||[]),offset:this.extractOffset(z.arguments||[])}}extractSelections(H,I){if(!H)return[];let z=this.schema[I];if(!z)return[];return H.selections.filter((U)=>U.kind==="Field").map((U)=>{let _=U.name.value,$=z[_],D=U.selectionSet&&U.selectionSet.selections.length>0,Y=!!($?.relation&&D),W,E,V,Z;if(Y&&U.arguments&&U.arguments.length>0){let X=`nested_${_}`;W=this.extractWhereConditions(U.arguments,$?.relation?.table||I,X),E=this.extractOrderBy(U.arguments),V=this.extractLimit(U.arguments),Z=this.extractOffset(U.arguments)}return{fieldName:_,isRelation:Y,relationInfo:$?.relation,whereConditions:W,orderBy:E,limit:V,offset:Z,nestedSelections:Y&&$?.relation?this.extractSelections(U.selectionSet,$.relation.table):void 0}})}extractWhereConditions(H,I,z){let U=[];for(let _ of H)if(_.name.value==="where"&&_.value.kind==="ObjectValue")for(let $ of _.value.fields){let D=this.sanitizeFieldName($.name.value);if($.value.kind==="StringValue"||$.value.kind==="IntValue"||$.value.kind==="FloatValue"){let Y=`param_${++this.paramCounter}`,W=$.value.value;if($.value.kind==="IntValue")W=Number.parseInt(W,10);else if($.value.kind==="FloatValue")W=Number.parseFloat(W);U.push({field:`${z}.${D}`,operator:"=",value:W,paramName:Y,isLiteral:!0})}else if($.value.kind==="Variable"){let Y=$.value.name.value;U.push({field:`${z}.${D}`,operator:"=",value:`$${Y}`,paramName:Y,isLiteral:!1})}else if($.value.kind==="ObjectValue")for(let Y of $.value.fields){let W=Y.name.value;if(Y.value.kind==="StringValue"||Y.value.kind==="IntValue"||Y.value.kind==="FloatValue"){let E=`param_${++this.paramCounter}`,V=this.mapGraphQLOperatorToSQL(W),Z=Y.value.value;if(Y.value.kind==="IntValue")Z=Number.parseInt(Z,10);else if(Y.value.kind==="FloatValue")Z=Number.parseFloat(Z);U.push({field:`${z}.${D}`,operator:V,value:Z,paramName:E,isLiteral:!0})}else if(Y.value.kind==="Variable"){let E=Y.value.name.value,V=this.mapGraphQLOperatorToSQL(W);U.push({field:`${z}.${D}`,operator:V,value:`$${E}`,paramName:E,isLiteral:!1})}}}else if(_.name.value!=="orderBy"&&_.name.value!=="limit"&&_.name.value!=="offset"){let $=this.sanitizeFieldName(_.name.value);if(_.value.kind==="StringValue"||_.value.kind==="IntValue"||_.value.kind==="FloatValue"){let D=`param_${++this.paramCounter}`,Y=_.value.value;if(_.value.kind==="IntValue")Y=Number.parseInt(Y,10);else if(_.value.kind==="FloatValue")Y=Number.parseFloat(Y);U.push({field:`${z}.${$}`,operator:"=",value:Y,paramName:D,isLiteral:!0})}else if(_.value.kind==="Variable"){let D=_.value.name.value;U.push({field:`${z}.${$}`,operator:"=",value:`$${D}`,paramName:D,isLiteral:!1})}}return U}mapGraphQLOperatorToSQL(H){return{eq:"=",ne:"!=",gt:">",gte:">=",lt:"<",lte:"<=",like:"LIKE",ilike:"LIKE",in:"IN",notIn:"NOT IN"}[H]||"="}extractOrderBy(H){let I=[];for(let z of H)if(z.name.value==="orderBy"&&z.value.kind==="ObjectValue"){for(let U of z.value.fields)if(U.value.kind==="EnumValue")I.push({field:this.sanitizeFieldName(U.name.value),direction:U.value.value==="DESC"?"DESC":"ASC"})}return I}extractLimit(H){let I=H.find((z)=>z.name.value==="limit");if(I&&I.value.kind==="IntValue"){let z=Number.parseInt(I.value.value);return Math.min(Math.max(z,1),1000)}return}extractOffset(H){let I=H.find((z)=>z.name.value==="offset");if(I&&I.value.kind==="IntValue"){let z=Number.parseInt(I.value.value);return Math.max(z,0)}return}buildSQLQuery(H){let I=this.buildJoins(H),z=new Map,U=this.buildSelectFields(H,I,z),_=this.buildWhereClause(H.where,z),$=this.buildOrderByClause(H.orderBy,H.alias),D=this.buildLimitClause(H.limit,H.offset),Y=this.buildGroupByClause(H,I),W=`SELECT ${U} FROM ${H.tableName} AS ${H.alias} ${I.map((X)=>`${X.joinType} JOIN ${X.table} AS ${X.alias} ON ${X.condition} `).join("")}${_?`WHERE ${_} `:""}${Y?`GROUP BY ${Y} `:""}${$?`ORDER BY ${$} `:""}`+`${D}`.trim().replace(/\s+/g," "),E={},V=Array.from(z.entries()).sort((X,R)=>{let O=(K)=>{let G=K.match(/param_(\d+)/);return G?.[1]?Number.parseInt(G[1],10):0};return O(X[0])-O(R[0])}),Z=0;for(let[,X]of V)E[Z.toString()]=X,Z++;return{sql:W,params:E}}collectNestedParams(H,I){for(let z of H){if(z.whereConditions)I.push(...z.whereConditions.map((U)=>U.value));if(z.nestedSelections)this.collectNestedParams(z.nestedSelections,I)}}buildGroupByClause(H,I){if(H.selections.some((U)=>U.isRelation&&U.relationInfo?.type==="one-to-many"))return`${H.alias}.id`;return""}buildJoins(H){let I=[];return this.collectJoins(H.selections,H.tableName,H.alias,I,new Map,"",0),I}collectJoins(H,I,z,U,_=new Map,$="",D=0){let Y=U.length+1;for(let W of H)if(W.isRelation&&W.relationInfo){let E=$?`${$}.${W.fieldName}`:W.fieldName,V=`${E}`,Z=_.get(V),X=D>0&&(W.relationInfo.type==="one-to-many"||W.relationInfo.type==="many-to-many")||W.relationInfo.type==="many-to-many";if(!Z&&!X)if(Z=`t${Y++}`,_.set(V,Z),W.relationInfo.type==="many-to-many"){if(!W.relationInfo.joinTable)throw new Error("Many-to-many relation requires a joinTable");let R=`j${Y}_${W.relationInfo.joinTable}`,O=Z;Y++,U.push({table:W.relationInfo.joinTable,alias:R,joinType:"LEFT",condition:`${z}.id = ${R}.${this.getJunctionForeignKey(I,W.relationInfo.joinTable)}`,path:`${E}_junction`}),U.push({table:W.relationInfo.table,alias:O,joinType:"LEFT",condition:`${R}.${this.getJunctionForeignKey(W.relationInfo.table,W.relationInfo.joinTable)} = ${O}.id`,path:E})}else{let R=this.buildJoinCondition(z,Z,W.relationInfo);U.push({table:W.relationInfo.table,alias:Z,joinType:"LEFT",condition:R,path:E})}if(W.nestedSelections&&W.nestedSelections.length>0&&!X)this.collectJoins(W.nestedSelections,W.relationInfo.table,Z||z,U,_,E,D+1)}}buildJoinCondition(H,I,z){switch(z.type){case"one-to-many":return`${H}.id = ${I}.${z.foreignKey}`;case"many-to-one":return`${H}.${z.foreignKey} = ${I}.id`;case"many-to-many":if(!z.joinTable)throw new Error("Many-to-many relation requires a joinTable");throw new Error("Many-to-many join conditions should be handled in collectJoins");default:throw new Error(`Unsupported relation type: ${z.type}`)}}getJunctionForeignKey(H,I){return`${H.endsWith("s")?H.slice(0,-1):H}_id`}buildSelectFields(H,I,z){let U=[],_=new Map(I.map(($)=>[$.table,$.alias]));return this.buildSelectFieldsRecursive(H.selections,H.tableName,H.alias,U,_,I,z,""),U.join(", ")}buildSelectFieldsRecursive(H,I,z,U,_,$,D,Y=""){for(let W of H){let E=W.fieldName,V=Y?`${Y}_${E}`:E;if(W.isRelation&&W.relationInfo){let Z=W.relationInfo.table,X=this.findJoinAlias($,Z,z);if(X||W.relationInfo.type==="many-to-many")if(W.nestedSelections&&W.nestedSelections.length>0){if((W.relationInfo.type==="one-to-many"||W.relationInfo.type==="many-to-many"||W.whereConditions&&W.whereConditions.length>0)&&(W.relationInfo.type==="one-to-many"||W.relationInfo.type==="many-to-many")){let K=this.buildSubqueryFields(W.nestedSelections,W.relationInfo.table,0,!0,"sub",D);if(K){let{whereClause:G,paramMap:J}=this.buildSubqueryWhereClause("sub",W.relationInfo.foreignKey,z,W.whereConditions,D,W.relationInfo.type,W.relationInfo.joinTable,I,W.relationInfo.table);for(let[P,B]of J.entries())D.set(P,B);let Q="",L="";if(W.orderBy&&W.orderBy.length>0)Q=` ORDER BY ${W.orderBy.map((B)=>{return`sub.${this.sanitizeFieldName(B.field)} ${B.direction}`}).join(", ")}`;if(W.limit!==void 0||W.offset!==void 0)L=this.buildLimitClause(W.limit,W.offset);let k=L||Q?(()=>{let P=this.buildSubqueryColumnList(W.nestedSelections,"sub");return`(SELECT json_group_array(json_object(${K})) FROM (SELECT ${P} FROM ${W.relationInfo.table} sub WHERE ${G}${Q}${L?` ${L}`:""}) sub)`})():`(SELECT json_group_array(json_object(${K})) FROM ${W.relationInfo.table} sub WHERE ${G})`;U.push(`${k} AS ${this.sanitizeFieldName(V)}`)}}else if(X){let K=this.buildJsonFields(W.nestedSelections,Z,X,$,D,0);if(W.relationInfo.type==="one-to-many")U.push(`json_group_array(CASE WHEN ${X}.id IS NOT NULL THEN json_object(${K}) ELSE NULL END ) AS ${this.sanitizeFieldName(V)}`);else U.push(`CASE WHEN ${X}.id IS NOT NULL THEN json_object(${K}) ELSE NULL END AS ${this.sanitizeFieldName(V)}`)}}else if(W.relationInfo.type==="many-to-one"&&X){let O=this.schema[Z];if(O){let K=Object.keys(O).filter((G)=>!O[G]?.relation).map((G)=>`'${G}', ${X}.${this.sanitizeFieldName(G)}`).join(", ");U.push(`CASE WHEN ${X}.id IS NOT NULL THEN json_object(${K}) ELSE NULL END AS ${this.sanitizeFieldName(V)}`)}}else{let O=this.schema[Z];if(O){let G=`(SELECT json_group_array(json_object(${Object.keys(O).filter((J)=>!O[J]?.relation).map((J)=>`'${J}', sub.${this.sanitizeFieldName(J)}`).join(", ")})) FROM ${Z} sub WHERE sub.${W.relationInfo.foreignKey} = ${z}.id)`;U.push(`${G} AS ${this.sanitizeFieldName(V)}`)}}}else U.push(`${z}.${this.sanitizeFieldName(E)} AS ${this.sanitizeFieldName(V)}`)}}findJoinAlias(H,I,z){return H.find((_)=>_.table===I&&_.condition.includes(z))?.alias||null}buildJsonFields(H,I,z,U,_,$=0){let D=[];for(let Y of H){let W=Y.fieldName;if(Y.isRelation&&Y.relationInfo&&Y.nestedSelections){let E=this.findJoinAlias(U,Y.relationInfo.table,z);if(Y.relationInfo.type==="one-to-many"||Y.relationInfo.type==="many-to-many"){if($>0||Y.relationInfo.type==="many-to-many"){let V=this.buildSubqueryFields(Y.nestedSelections,Y.relationInfo.table,0,!0,"sub",_);if(V){let{whereClause:Z,paramMap:X}=this.buildSubqueryWhereClause("sub",Y.relationInfo.foreignKey,z,Y.whereConditions,_,Y.relationInfo.type,Y.relationInfo.joinTable,I,Y.relationInfo.table);for(let[G,J]of X.entries())_.set(G,J);let R="",O="";if(Y.orderBy&&Y.orderBy.length>0)R=` ORDER BY ${Y.orderBy.map((J)=>{return`sub.${this.sanitizeFieldName(J.field)} ${J.direction}`}).join(", ")}`;if(Y.limit!==void 0||Y.offset!==void 0)O=this.buildLimitClause(Y.limit,Y.offset);let K=O||R?(()=>{let G=V.split(", ").filter((J,Q)=>Q%2===1).join(", ");return`(SELECT json_group_array(json_object(${V})) FROM (SELECT ${G} FROM ${Y.relationInfo.table} sub WHERE ${Z}${R}${O?` ${O}`:""}) sub)`})():`(SELECT json_group_array(json_object(${V})) FROM ${Y.relationInfo.table} sub WHERE ${Z})`;D.push(`'${W}', ${K}`)}}else if(E){let V=this.buildJsonFields(Y.nestedSelections,Y.relationInfo.table,E,U,_,$+1);D.push(`'${W}', json_group_array(json_object(${V}))`)}}else if(E){let V=this.buildJsonFields(Y.nestedSelections,Y.relationInfo.table,E,U,_,$+1);D.push(`'${W}', json_object(${V})`)}}else D.push(`'${W}', ${z}.${this.sanitizeFieldName(W)}`)}return D.join(", ")}buildSubqueryWhereClause(H,I,z,U,_=new Map,$,D,Y,W){let E=[];if($==="many-to-many"&&D&&Y&&W){let Z=`${H}_junction`,X=this.getJunctionForeignKey(Y,D),R=this.getJunctionForeignKey(W,D);E=[`${H}.id IN (SELECT ${Z}.${R} FROM ${D} ${Z} WHERE ${Z}.${X} = ${z}.id)`]}else E=[`${H}.${I} = ${z}.id`];if(U&&U.length>0)for(let Z of U){let X=Z.field.replace(/^[^.]+\./,`${H}.`),R=`param_${H}_${Z.field.replace(".","_")}_${_.size}`;E.push(`${X} ${Z.operator} $${R}`),_.set(R,Z.value)}return{whereClause:E.join(" AND "),paramMap:_}}buildSubqueryColumnList(H,I){let z=[];for(let U of H)if(!U.isRelation)z.push(`${I}.${this.sanitizeFieldName(U.fieldName)}`);else if(U.relationInfo){let _=U.relationInfo.foreignKey;if(_)z.push(`${I}.${this.sanitizeFieldName(_)}`)}return z.join(", ")}buildSubqueryFields(H,I,z=0,U=!1,_="sub",$=new Map){let D=[],Y=3,W=8;for(let E of H){let V=E.fieldName;if(E.isRelation&&E.relationInfo&&E.nestedSelections)if(E.relationInfo.type==="one-to-many"){if(U){let Z=E.nestedSelections.filter((X)=>{if(!X.isRelation)return!0;if(X.relationInfo?.type==="many-to-one")return!0;return!1});if(Z.length>0){let X=this.buildSubqueryFields(Z,E.relationInfo.table,z+1,!0,"nested_sub");if(X){let{whereClause:R,paramMap:O}=this.buildSubqueryWhereClause("nested_sub",E.relationInfo.foreignKey,"sub",E.whereConditions,$,E.relationInfo.type,E.relationInfo.joinTable,I,E.relationInfo.table);for(let[G,J]of O.entries())$.set(G,J);let K=`(SELECT json_group_array(json_object(${X})) FROM ${E.relationInfo.table} nested_sub WHERE ${R})`;D.push(`'${V}', ${K}`)}}continue}if(z>=3){let Z=this.getScalarFields(E.nestedSelections);if(Z.length>0){let X=Z.map((Q)=>`'${Q}', nested_sub.${this.sanitizeFieldName(Q)}`).join(", "),{whereClause:R,paramMap:O}=this.buildSubqueryWhereClause("nested_sub",E.relationInfo.foreignKey,"sub",E.whereConditions,$,E.relationInfo.type,E.relationInfo.joinTable,I,E.relationInfo.table);for(let[Q,L]of O.entries())$.set(Q,L);let K="",G="";if(E.orderBy&&E.orderBy.length>0)K=` ORDER BY ${E.orderBy.map((L)=>{return`nested_sub.${this.sanitizeFieldName(L.field)} ${L.direction}`}).join(", ")}`;if(E.limit!==void 0||E.offset!==void 0)G=this.buildLimitClause(E.limit,E.offset);let J=G||K?(()=>{let Q=X.split(", ").filter((L,k)=>k%2===1).join(", ");return`(SELECT json_group_array(json_object(${X})) FROM (SELECT ${Q} FROM ${E.relationInfo.table} nested_sub WHERE ${R}${K}${G?` ${G}`:""}) nested_sub)`})():`(SELECT json_group_array(json_object(${X})) FROM ${E.relationInfo.table} nested_sub WHERE ${R})`;D.push(`'${V}', ${J}`)}}else{let Z=E.nestedSelections;if(z>=2)Z=E.nestedSelections.filter((X)=>{if(!X.isRelation)return!0;if(X.relationInfo?.type==="many-to-one")return!0;if(X.relationInfo?.type==="one-to-many"){if(z<=3)return!0}return!1});if(Z.length>0){let X=this.buildSubqueryFields(Z,E.relationInfo.table,z+1,!0,"nested_sub");if(X){let{whereClause:R,paramMap:O}=this.buildSubqueryWhereClause("nested_sub",E.relationInfo.foreignKey,"sub",E.whereConditions,$,E.relationInfo.type,E.relationInfo.joinTable,I,E.relationInfo.table);for(let[Q,L]of O.entries())$.set(Q,L);let K="",G="";if(E.orderBy&&E.orderBy.length>0)K=` ORDER BY ${E.orderBy.map((L)=>{return`nested_sub.${this.sanitizeFieldName(L.field)} ${L.direction}`}).join(", ")}`;if(E.limit!==void 0||E.offset!==void 0)G=this.buildLimitClause(E.limit,E.offset);let J=G||K?(()=>{let Q=this.buildSubqueryColumnList(Z,"nested_sub");return`(SELECT json_group_array(json_object(${X})) FROM (SELECT ${Q} FROM ${E.relationInfo.table} nested_sub WHERE ${R}${K}${G?` ${G}`:""}) nested_sub)`})():`(SELECT json_group_array(json_object(${X})) FROM ${E.relationInfo.table} nested_sub WHERE ${R})`;D.push(`'${V}', ${J}`)}}}}else if(E.relationInfo.type==="many-to-many"){if(U){let Z=E.nestedSelections.filter((X)=>{if(!X.isRelation)return!0;if(X.relationInfo?.type==="many-to-one")return!0;return!1});if(Z.length>0){let X=this.buildSubqueryFields(Z,E.relationInfo.table,z+1,!0,"nested_sub");if(X){let{whereClause:R,paramMap:O}=this.buildSubqueryWhereClause("nested_sub",E.relationInfo.foreignKey,"sub",E.whereConditions,$,E.relationInfo.type,E.relationInfo.joinTable,I,E.relationInfo.table);for(let[G,J]of O.entries())$.set(G,J);let K=`(SELECT json_group_array(json_object(${X})) FROM ${E.relationInfo.table} nested_sub WHERE ${R})`;D.push(`'${V}', ${K}`)}}continue}if(z>=3){let Z=this.getScalarFields(E.nestedSelections);if(Z.length>0){let X=Z.map((Q)=>`'${Q}', nested_sub.${this.sanitizeFieldName(Q)}`).join(", "),{whereClause:R,paramMap:O}=this.buildSubqueryWhereClause("nested_sub",E.relationInfo.foreignKey,"sub",E.whereConditions,$,E.relationInfo.type,E.relationInfo.joinTable,I,E.relationInfo.table);for(let[Q,L]of O.entries())$.set(Q,L);let K="",G="";if(E.orderBy&&E.orderBy.length>0)K=` ORDER BY ${E.orderBy.map((L)=>{return`nested_sub.${this.sanitizeFieldName(L.field)} ${L.direction}`}).join(", ")}`;if(E.limit!==void 0||E.offset!==void 0)G=this.buildLimitClause(E.limit,E.offset);let J=G||K?(()=>{let Q=X.split(", ").filter((L,k)=>k%2===1).join(", ");return`(SELECT json_group_array(json_object(${X})) FROM (SELECT ${Q} FROM ${E.relationInfo.table} nested_sub WHERE ${R}${K}${G?` ${G}`:""}) nested_sub)`})():`(SELECT json_group_array(json_object(${X})) FROM ${E.relationInfo.table} nested_sub WHERE ${R})`;D.push(`'${V}', ${J}`)}}else{let Z=E.nestedSelections;if(z>=2)Z=E.nestedSelections.filter((X)=>{if(!X.isRelation)return!0;if(X.relationInfo?.type==="many-to-one")return!0;if(X.relationInfo?.type==="one-to-many"||X.relationInfo?.type==="many-to-many"){if(z<=3)return!0}return!1});if(Z.length>0){let X=this.buildSubqueryFields(Z,E.relationInfo.table,z+1,!0,"nested_sub");if(X){let{whereClause:R,paramMap:O}=this.buildSubqueryWhereClause("nested_sub",E.relationInfo.foreignKey,"sub",E.whereConditions,$,E.relationInfo.type,E.relationInfo.joinTable,I,E.relationInfo.table);for(let[Q,L]of O.entries())$.set(Q,L);let K="",G="";if(E.orderBy&&E.orderBy.length>0)K=` ORDER BY ${E.orderBy.map((L)=>{return`nested_sub.${this.sanitizeFieldName(L.field)} ${L.direction}`}).join(", ")}`;if(E.limit!==void 0||E.offset!==void 0)G=this.buildLimitClause(E.limit,E.offset);let J=G||K?(()=>{let Q=this.buildSubqueryColumnList(Z,"nested_sub");return`(SELECT json_group_array(json_object(${X})) FROM (SELECT ${Q} FROM ${E.relationInfo.table} nested_sub WHERE ${R}${K}${G?` ${G}`:""}) nested_sub)`})():`(SELECT json_group_array(json_object(${X})) FROM ${E.relationInfo.table} nested_sub WHERE ${R})`;D.push(`'${V}', ${J}`)}}}}else if(z>=8){let Z=this.getScalarFields(E.nestedSelections);if(Z.length>0){let X=Z.map((R)=>`'${R}', related.${this.sanitizeFieldName(R)}`).join(", ");D.push(`'${V}', (SELECT json_object(${X}) FROM ${E.relationInfo.table} related WHERE related.id = sub.${E.relationInfo.foreignKey})`)}}else{let Z=E.nestedSelections;if(U)Z=E.nestedSelections.filter((X)=>{if(!X.isRelation)return!0;if(X.relationInfo?.type==="many-to-one")return!0;if(X.relationInfo?.type==="one-to-many"){if(z<=3)return!0}return!1});if(Z.length>0||E.nestedSelections.some((X)=>!X.isRelation)){let X=Z.length>0?Z:E.nestedSelections.filter((O)=>!O.isRelation),R=this.buildSubqueryFields(X,E.relationInfo.table,z+1,!1,"related");if(R)D.push(`'${V}', (SELECT json_object(${R}) FROM ${E.relationInfo.table} related WHERE related.id = sub.${E.relationInfo.foreignKey})`)}}else D.push(`'${V}', ${_}.${this.sanitizeFieldName(V)}`)}return D.join(", ")}filterSelectionsForArrayNesting(H,I){return H.filter((z)=>{if(!z.isRelation)return!0;if(z.relationInfo?.type==="one-to-many")return!1;if(z.relationInfo?.type==="many-to-one")return!0;if(z.relationInfo?.type==="many-to-many")return!1;return!1})}limitSelectionsToScalarsAndSimpleRelations(H){return H.filter((I)=>{if(!I.isRelation)return!0;if(I.relationInfo?.type==="many-to-one"&&I.nestedSelections)return I.nestedSelections.every((U)=>!U.isRelation);return!1})}getScalarFields(H){return H.filter((I)=>!I.isRelation).map((I)=>I.fieldName)}buildWhereClause(H,I){if(H.length===0)return"";return H.map((z)=>{if(z.isLiteral){let U;if(typeof z.value==="string")U=`'${z.value.replace(/'/g,"''")}'`;else U=String(z.value);return`${z.field} ${z.operator} ${U}`}else{if(I)I.set(z.paramName,z.value);return`${z.field} ${z.operator} ?`}}).join(" AND ")}buildOrderByClause(H,I="t0"){if(H.length===0)return"";return H.map((z)=>`${I}.${z.field} ${z.direction}`).join(", ")}buildLimitClause(H,I){let z="";if(H!==void 0){if(z+=`LIMIT ${H}`,I!==void 0)z+=` OFFSET ${I}`}else if(I!==void 0)z+=`LIMIT 999999 OFFSET ${I}`;return z}executeQuery(H,I,z){try{let U=z.query(H);if(Object.keys(I).length===0)return U.all();let _=[],$=Object.keys(I).sort((D,Y)=>Number.parseInt(D)-Number.parseInt(Y));for(let D of $){let Y=I[D];if(typeof Y==="string"||typeof Y==="number")_.push(Y);else _.push(String(Y))}return U.all(..._)}catch(U){throw console.error("SQL execution error:",U),console.error("SQL:",H),console.error("Params:",I),U}}sanitizeFieldName(H){if(!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(H))throw new Error(`Invalid field name: ${H}`);return H}getTableName(H){return this.sanitizeFieldName(H).toLowerCase()}}async function j(H,I,z){return await new T(I).convertAndExecute(H,z)}var A={users:{id:{type:"INTEGER"},name:{type:"TEXT"},email:{type:"TEXT"},posts:{type:"ARRAY",relation:{table:"posts",foreignKey:"user_id",type:"one-to-many"}}},posts:{id:{type:"INTEGER"},title:{type:"TEXT"},content:{type:"TEXT"},user_id:{type:"INTEGER"},user:{type:"OBJECT",relation:{table:"users",foreignKey:"user_id",type:"many-to-one"}}}};export{S as transformResult,j as graphqlToSqlite,A as exampleSchema,T as GraphQLToSQLiteConverter};
//# debugId=B88600328DE424A764756E2164756E21
//# debugId=15484EEF9324868764756E2164756E21
//# sourceMappingURL=./publicgq2sql.js.map
import{createRequire as R}from"node:module";var _=R(import.meta.url);import{writeFileSync as U}from"node:fs";function F(x,j){let v=V(x);if(j)try{U(j,v,"utf8"),console.log(`GraphQL schema file generated at: ${j}`)}catch(k){let A=k instanceof Error?k.message:String(k);throw new Error(`Failed to write schema file: ${A}`)}return v}function V(x){let j=[];j.push("# GraphQL Schema for GQLite"),j.push("# Generated automatically from SQLite database schema"),j.push("# This file provides IDE validation and autocompletion support"),j.push(""),j.push("# WHERE clause input types with operator support"),j.push("input StringWhereInput {"),j.push(" eq: String"),j.push(" ne: String"),j.push(" like: String"),j.push(" ilike: String"),j.push("}"),j.push(""),j.push("input IntWhereInput {"),j.push(" eq: Int"),j.push(" ne: Int"),j.push(" gt: Int"),j.push(" gte: Int"),j.push(" lt: Int"),j.push(" lte: Int"),j.push("}"),j.push(""),j.push("input FloatWhereInput {"),j.push(" eq: Float"),j.push(" ne: Float"),j.push(" gt: Float"),j.push(" gte: Float"),j.push(" lt: Float"),j.push(" lte: Float"),j.push("}"),j.push(""),j.push("input BooleanWhereInput {"),j.push(" eq: Boolean"),j.push(" ne: Boolean"),j.push("}"),j.push("");let v=Object.keys(x);for(let k of v){let A=x[k];if(!A)continue;let E=K(k);j.push(`# ${E} type based on ${k} table`),j.push(`type ${E} {`);for(let[H,B]of Object.entries(A)){let J=X(B.type,B.nullable);if(B.relation){let O=K(B.relation.table);if(B.relation.type==="one-to-many")j.push(` ${H}: [${O}!]!`);else j.push(` ${H}: ${O}${B.nullable?"":"!"}`)}else j.push(` ${H}: ${J}`)}j.push("}"),j.push("")}for(let k of v){let A=x[k];if(!A)continue;let E=K(k);j.push(`# WHERE input for ${E} filtering`),j.push(`input ${E}WhereInput {`);for(let[H,B]of Object.entries(A))if(!B.relation){let J=Y(B.type);if(J)j.push(` ${H}: ${J}`)}j.push("}"),j.push("")}j.push("# Root Query type"),j.push("type Query {");for(let k of v){let A=K(k);j.push(` # Query ${k} table`),j.push(` ${k}(`),j.push(` where: ${A}WhereInput`),j.push(" orderBy: [String!]"),j.push(" limit: Int"),j.push(" offset: Int"),j.push(` ): [${A}!]!`),j.push("")}return j.push("}"),j.join(`
`)}function X(x,j){let v=x.toLowerCase(),k;if(v.includes("int")||v.includes("integer"))k="Int";else if(v.includes("real")||v.includes("float")||v.includes("double"))k="Float";else if(v.includes("text")||v.includes("varchar")||v.includes("char"))k="String";else if(v.includes("bool"))k="Boolean";else k="String";return j?k:`${k}!`}function Y(x){let j=x.toLowerCase();if(j.includes("int")||j.includes("integer"))return"IntWhereInput";if(j.includes("real")||j.includes("float")||j.includes("double"))return"FloatWhereInput";if(j.includes("text")||j.includes("varchar")||j.includes("char"))return"StringWhereInput";if(j.includes("bool"))return"BooleanWhereInput";return"StringWhereInput"}function K(x){return x.charAt(0).toUpperCase()+x.slice(1)}export{V as generateGraphQLSchemaString,F as generateGraphQLSchemaFile};
//# debugId=4E874ECD4800606D64756E2164756E21
//# debugId=AF352AD7F4D74EA364756E2164756E21
//# sourceMappingURL=./publicgraphql-schema-generator.js.map

@@ -8,4 +8,4 @@ {

"mappings": "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",
"debugId": "4E874ECD4800606D64756E2164756E21",
"debugId": "AF352AD7F4D74EA364756E2164756E21",
"names": []
}
import{createRequire as d}from"node:module";var u=d(import.meta.url);import{graphqlToSqlite as B,GraphQLToSQLiteConverter as C}from"./gq2sql.js";import{generateGraphQLSchemaFile as F,generateGraphQLSchemaString as G}from"./graphql-schema-generator.js";import{createSchemaFromDatabase as I,createSchemaFromFile as J}from"./schema-generator.js";export{B as graphqlToSqlite,G as generateGraphQLSchemaString,F as generateGraphQLSchemaFile,J as createSchemaFromFile,I as createSchemaFromDatabase,C as GraphQLToSQLiteConverter};
//# debugId=EB2F2EAAD715328864756E2164756E21
//# debugId=C3C63DC93D94DE0864756E2164756E21
//# sourceMappingURL=./publicindex.js.map

@@ -8,4 +8,4 @@ {

"mappings": "qEACA,0BACC,8BACA,oBAGD,oCACC,iCACA,sCAGD,mCACC,0BACA",
"debugId": "EB2F2EAAD715328864756E2164756E21",
"debugId": "C3C63DC93D94DE0864756E2164756E21",
"names": []
}
import{createRequire as O}from"node:module";var R=O(import.meta.url);async function z(E){let B={};try{let V=await E.all("SELECT type, name, tbl_name, rootpage, sql FROM sqlite_master WHERE type = 'table' AND name NOT LIKE 'sqlite_%' ORDER BY name");for(let Y of V){let A=Y.name;B[A]={};let Z=await E.all(`PRAGMA table_info(${A})`),W=await E.all(`PRAGMA foreign_key_list(${A})`);for(let G of Z){let x=G.name,H=G.type.toUpperCase(),_=M(H),$=G.pk===1?!1:G.notnull===0;B[A][x]={type:_,nullable:$};let J=W.find((X)=>X.from===x);if(J){B[A][x].relation={table:J.table,foreignKey:x,type:"many-to-one"};let X=null;if(x.endsWith("_id"))X=x.replace(/_id$/,"");else if(x.endsWith("Id"))X=x.replace(/Id$/,"");if(X)B[A][X]={type:"OBJECT",relation:{table:J.table,foreignKey:x,type:"many-to-one"}}}}}for(let Y of V){let A=Y.name,Z=await E.all(`PRAGMA foreign_key_list(${A})`);for(let W of Z){let{table:G,to:x}=W;if(B[G]){let H=A;B[G][H]={type:"ARRAY",relation:{table:A,foreignKey:W.from,type:"one-to-many"}}}}}return await P(E,B,V),B}catch(V){throw new Error(`Failed to create schema from database: ${V instanceof Error?V.message:String(V)}`)}}function M(E){switch(E.toUpperCase().split("(")[0]){case"INTEGER":case"INT":case"TINYINT":case"SMALLINT":case"MEDIUMINT":case"BIGINT":case"UNSIGNED BIG INT":case"INT2":case"INT8":return"INTEGER";case"CHARACTER":case"VARCHAR":case"VARYING CHARACTER":case"NCHAR":case"NATIVE CHARACTER":case"NVARCHAR":case"TEXT":case"CLOB":return"TEXT";case"REAL":case"DOUBLE":case"DOUBLE PRECISION":case"FLOAT":case"NUMERIC":case"DECIMAL":return"REAL";case"BOOLEAN":return"BOOLEAN";case"DATE":return"DATE";case"DATETIME":case"TIMESTAMP":return"DATETIME";case"BLOB":return"BLOB";default:return"TEXT"}}function L(E){return E}async function P(E,B,V){for(let Y of V){let A=Y.name,Z=await E.all(`PRAGMA table_info(${A})`),W=await E.all(`PRAGMA foreign_key_list(${A})`);if(W.length===2){if(Z.filter((x)=>!W.some((H)=>H.from===x.name)).length<=1){let x=W[0],H=W[1];if(x&&H&&B[x.table]&&B[H.table]){let _=L(H.table),$=B[x.table];if($)$[_]={type:"ARRAY",relation:{table:H.table,foreignKey:x.from,type:"many-to-many",joinTable:A}};let J=L(x.table),X=B[H.table];if(X)X[J]={type:"ARRAY",relation:{table:x.table,foreignKey:H.from,type:"many-to-many",joinTable:A}}}}}}}async function I(E){let B=R("sqlite3").Database;return new Promise((V,Y)=>{let A=new B(E,(Z)=>{if(Z){Y(Z);return}z({all:(G)=>{return new Promise((x,H)=>{A.all(G,[],(_,$)=>{if(_)H(_);else x($)})})}}).then((G)=>{A.close(),V(G)}).catch((G)=>{A.close(),Y(G)})})})}export{I as createSchemaFromFile,z as createSchemaFromDatabase};
//# debugId=326DB2C53EEB5E6B64756E2164756E21
//# debugId=171EA47C4758D8C164756E2164756E21
//# sourceMappingURL=./publicschema-generator.js.map

@@ -8,4 +8,4 @@ {

"mappings": "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",
"debugId": "326DB2C53EEB5E6B64756E2164756E21",
"debugId": "171EA47C4758D8C164756E2164756E21",
"names": []
}

@@ -52,2 +52,3 @@ /**

paramName: string;
isLiteral?: boolean;
}

@@ -54,0 +55,0 @@ export interface OrderByCondition {

@@ -1,1 +0,1 @@

{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE;QACV,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,aAAa,GAAG,aAAa,GAAG,cAAc,CAAC;QACrD,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACF;AAED,MAAM,WAAW,WAAW;IAC3B,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CAAC;CACjC;AAED,MAAM,WAAW,MAAM;IACtB,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,kBAAkB,EAAE,CAAC;IACjC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACxC,YAAY,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;IACpD,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IACnC,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,QAAQ;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,GAAG,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC;CAC1B;AAGD,MAAM,WAAW,UAAU;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,GAAG,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACZ;AAGD,MAAM,WAAW,kBAAkB;IAClC,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;CACnC"}
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
{
"name": "@gqlite/gql2sql",
"description": "GraphQL => SQL (SQLite)",
"version": "0.1.3",
"version": "0.1.4",
"publishConfig": {

@@ -6,0 +6,0 @@ "access": "public"

Sorry, the diff of this file is too big to display