@tinqerjs/better-sqlite3-adapter 0.0.21
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/dist/expression-generator.d.ts +18 -0
- package/dist/expression-generator.d.ts.map +1 -0
- package/dist/expression-generator.js +756 -0
- package/dist/expression-generator.js.map +1 -0
- package/dist/generators/all.d.ts +11 -0
- package/dist/generators/all.d.ts.map +1 -0
- package/dist/generators/all.js +15 -0
- package/dist/generators/all.js.map +1 -0
- package/dist/generators/any.d.ts +11 -0
- package/dist/generators/any.d.ts.map +1 -0
- package/dist/generators/any.js +20 -0
- package/dist/generators/any.js.map +1 -0
- package/dist/generators/average.d.ts +10 -0
- package/dist/generators/average.d.ts.map +1 -0
- package/dist/generators/average.js +15 -0
- package/dist/generators/average.js.map +1 -0
- package/dist/generators/count.d.ts +10 -0
- package/dist/generators/count.d.ts.map +1 -0
- package/dist/generators/count.js +11 -0
- package/dist/generators/count.js.map +1 -0
- package/dist/generators/delete.d.ts +10 -0
- package/dist/generators/delete.d.ts.map +1 -0
- package/dist/generators/delete.js +24 -0
- package/dist/generators/delete.js.map +1 -0
- package/dist/generators/distinct.d.ts +11 -0
- package/dist/generators/distinct.d.ts.map +1 -0
- package/dist/generators/distinct.js +12 -0
- package/dist/generators/distinct.js.map +1 -0
- package/dist/generators/first.d.ts +12 -0
- package/dist/generators/first.d.ts.map +1 -0
- package/dist/generators/first.js +13 -0
- package/dist/generators/first.js.map +1 -0
- package/dist/generators/from.d.ts +10 -0
- package/dist/generators/from.d.ts.map +1 -0
- package/dist/generators/from.js +41 -0
- package/dist/generators/from.js.map +1 -0
- package/dist/generators/groupby.d.ts +10 -0
- package/dist/generators/groupby.d.ts.map +1 -0
- package/dist/generators/groupby.js +36 -0
- package/dist/generators/groupby.js.map +1 -0
- package/dist/generators/insert.d.ts +11 -0
- package/dist/generators/insert.d.ts.map +1 -0
- package/dist/generators/insert.js +61 -0
- package/dist/generators/insert.js.map +1 -0
- package/dist/generators/join.d.ts +10 -0
- package/dist/generators/join.d.ts.map +1 -0
- package/dist/generators/join.js +246 -0
- package/dist/generators/join.js.map +1 -0
- package/dist/generators/last.d.ts +13 -0
- package/dist/generators/last.d.ts.map +1 -0
- package/dist/generators/last.js +16 -0
- package/dist/generators/last.js.map +1 -0
- package/dist/generators/max.d.ts +10 -0
- package/dist/generators/max.d.ts.map +1 -0
- package/dist/generators/max.js +15 -0
- package/dist/generators/max.js.map +1 -0
- package/dist/generators/min.d.ts +10 -0
- package/dist/generators/min.d.ts.map +1 -0
- package/dist/generators/min.js +15 -0
- package/dist/generators/min.js.map +1 -0
- package/dist/generators/orderby.d.ts +10 -0
- package/dist/generators/orderby.d.ts.map +1 -0
- package/dist/generators/orderby.js +66 -0
- package/dist/generators/orderby.js.map +1 -0
- package/dist/generators/select.d.ts +10 -0
- package/dist/generators/select.d.ts.map +1 -0
- package/dist/generators/select.js +34 -0
- package/dist/generators/select.js.map +1 -0
- package/dist/generators/single.d.ts +12 -0
- package/dist/generators/single.d.ts.map +1 -0
- package/dist/generators/single.js +13 -0
- package/dist/generators/single.js.map +1 -0
- package/dist/generators/skip.d.ts +10 -0
- package/dist/generators/skip.d.ts.map +1 -0
- package/dist/generators/skip.js +18 -0
- package/dist/generators/skip.js.map +1 -0
- package/dist/generators/sum.d.ts +10 -0
- package/dist/generators/sum.d.ts.map +1 -0
- package/dist/generators/sum.js +15 -0
- package/dist/generators/sum.js.map +1 -0
- package/dist/generators/take.d.ts +10 -0
- package/dist/generators/take.d.ts.map +1 -0
- package/dist/generators/take.js +18 -0
- package/dist/generators/take.js.map +1 -0
- package/dist/generators/thenby.d.ts +11 -0
- package/dist/generators/thenby.d.ts.map +1 -0
- package/dist/generators/thenby.js +58 -0
- package/dist/generators/thenby.js.map +1 -0
- package/dist/generators/update.d.ts +11 -0
- package/dist/generators/update.d.ts.map +1 -0
- package/dist/generators/update.js +69 -0
- package/dist/generators/update.js.map +1 -0
- package/dist/generators/where.d.ts +10 -0
- package/dist/generators/where.d.ts.map +1 -0
- package/dist/generators/where.js +12 -0
- package/dist/generators/where.js.map +1 -0
- package/dist/index.d.ts +172 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +234 -0
- package/dist/index.js.map +1 -0
- package/dist/sql-generator.d.ts +9 -0
- package/dist/sql-generator.d.ts.map +1 -0
- package/dist/sql-generator.js +325 -0
- package/dist/sql-generator.js.map +1 -0
- package/dist/types.d.ts +62 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +44 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main SQL generation orchestrator
|
|
3
|
+
*/
|
|
4
|
+
import type { QueryOperation } from "@tinqerjs/tinqer";
|
|
5
|
+
/**
|
|
6
|
+
* Generate SQL from a QueryOperation tree
|
|
7
|
+
*/
|
|
8
|
+
export declare function generateSql(operation: QueryOperation, params: unknown): string;
|
|
9
|
+
//# sourceMappingURL=sql-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-generator.d.ts","sourceRoot":"","sources":["../src/sql-generator.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,cAAc,EA2Bf,MAAM,kBAAkB,CAAC;AAwB1B;;GAEG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CA0O9E"}
|
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main SQL generation orchestrator
|
|
3
|
+
*/
|
|
4
|
+
import { generateFrom } from "./generators/from.js";
|
|
5
|
+
import { generateSelect } from "./generators/select.js";
|
|
6
|
+
import { generateBooleanExpression, generateExpression } from "./expression-generator.js";
|
|
7
|
+
import { generateOrderBy } from "./generators/orderby.js";
|
|
8
|
+
import { generateThenBy } from "./generators/thenby.js";
|
|
9
|
+
import { generateTake } from "./generators/take.js";
|
|
10
|
+
import { generateSkip } from "./generators/skip.js";
|
|
11
|
+
import { generateDistinct } from "./generators/distinct.js";
|
|
12
|
+
import { generateGroupBy } from "./generators/groupby.js";
|
|
13
|
+
import { generateCount } from "./generators/count.js";
|
|
14
|
+
import { generateSum } from "./generators/sum.js";
|
|
15
|
+
import { generateAverage } from "./generators/average.js";
|
|
16
|
+
import { generateMin } from "./generators/min.js";
|
|
17
|
+
import { generateMax } from "./generators/max.js";
|
|
18
|
+
import { generateFirst } from "./generators/first.js";
|
|
19
|
+
import { generateSingle } from "./generators/single.js";
|
|
20
|
+
import { generateLast } from "./generators/last.js";
|
|
21
|
+
import { generateJoin } from "./generators/join.js";
|
|
22
|
+
import { generateInsert } from "./generators/insert.js";
|
|
23
|
+
import { generateUpdate } from "./generators/update.js";
|
|
24
|
+
import { generateDelete } from "./generators/delete.js";
|
|
25
|
+
/**
|
|
26
|
+
* Generate SQL from a QueryOperation tree
|
|
27
|
+
*/
|
|
28
|
+
export function generateSql(operation, params) {
|
|
29
|
+
const context = {
|
|
30
|
+
tableAliases: new Map(),
|
|
31
|
+
aliasCounter: 0,
|
|
32
|
+
formatParameter: (paramName) => `@${paramName}`, // Better SQLite3 format
|
|
33
|
+
params: params || {},
|
|
34
|
+
};
|
|
35
|
+
// Collect all operations in the chain
|
|
36
|
+
const operations = collectOperations(operation);
|
|
37
|
+
// Check if this is a CRUD operation chain (may have WHERE, etc.)
|
|
38
|
+
// Find INSERT, UPDATE, or DELETE in the chain
|
|
39
|
+
const insertOp = operations.find((op) => op.operationType === "insert");
|
|
40
|
+
const updateOp = operations.find((op) => op.operationType === "update");
|
|
41
|
+
const deleteOp = operations.find((op) => op.operationType === "delete");
|
|
42
|
+
if (insertOp) {
|
|
43
|
+
return generateInsert(insertOp, context);
|
|
44
|
+
}
|
|
45
|
+
if (updateOp) {
|
|
46
|
+
return generateUpdate(updateOp, context);
|
|
47
|
+
}
|
|
48
|
+
if (deleteOp) {
|
|
49
|
+
return generateDelete(deleteOp, context);
|
|
50
|
+
}
|
|
51
|
+
// Check for ANY or ALL operations - they need special handling
|
|
52
|
+
const anyOp = operations.find((op) => op.operationType === "any");
|
|
53
|
+
const allOp = operations.find((op) => op.operationType === "all");
|
|
54
|
+
if (anyOp || allOp) {
|
|
55
|
+
return generateExistsQuery(operations, anyOp || allOp, context);
|
|
56
|
+
}
|
|
57
|
+
// Find terminal operations early as they affect other clauses
|
|
58
|
+
const firstOp = operations.find((op) => op.operationType === "first" || op.operationType === "firstOrDefault");
|
|
59
|
+
const singleOp = operations.find((op) => op.operationType === "single" || op.operationType === "singleOrDefault");
|
|
60
|
+
const lastOp = operations.find((op) => op.operationType === "last" || op.operationType === "lastOrDefault");
|
|
61
|
+
// Build SQL fragments in correct order
|
|
62
|
+
const fragments = [];
|
|
63
|
+
// Check for DISTINCT
|
|
64
|
+
const distinctOp = operations.find((op) => op.operationType === "distinct");
|
|
65
|
+
const distinctKeyword = distinctOp
|
|
66
|
+
? generateDistinct(distinctOp, context)
|
|
67
|
+
: "";
|
|
68
|
+
// Check for aggregate operations
|
|
69
|
+
const countOp = operations.find((op) => op.operationType === "count");
|
|
70
|
+
const sumOp = operations.find((op) => op.operationType === "sum");
|
|
71
|
+
const avgOp = operations.find((op) => op.operationType === "average");
|
|
72
|
+
const minOp = operations.find((op) => op.operationType === "min");
|
|
73
|
+
const maxOp = operations.find((op) => op.operationType === "max");
|
|
74
|
+
// Find GROUP BY early and store in context for SELECT generation
|
|
75
|
+
const groupByOp = operations.find((op) => op.operationType === "groupBy");
|
|
76
|
+
if (groupByOp) {
|
|
77
|
+
// Store the key selector in context for later use in SELECT expressions
|
|
78
|
+
context.groupByKey = groupByOp.keySelector;
|
|
79
|
+
}
|
|
80
|
+
// Process JOIN operations to determine if we need table aliases
|
|
81
|
+
const joinOps = operations.filter((op) => op.operationType === "join");
|
|
82
|
+
// Set hasJoins flag in context before processing FROM
|
|
83
|
+
if (joinOps.length > 0) {
|
|
84
|
+
context.hasJoins = true;
|
|
85
|
+
}
|
|
86
|
+
// Process FROM first to establish base table
|
|
87
|
+
const fromOp = operations.find((op) => op.operationType === "from");
|
|
88
|
+
if (!fromOp) {
|
|
89
|
+
throw new Error("Query must have a FROM operation");
|
|
90
|
+
}
|
|
91
|
+
const fromClause = generateFrom(fromOp, context);
|
|
92
|
+
const joinClauses = [];
|
|
93
|
+
joinOps.forEach((joinOp) => {
|
|
94
|
+
joinClauses.push(generateJoin(joinOp, context));
|
|
95
|
+
});
|
|
96
|
+
// Check if we have a JOIN with result selector but no explicit SELECT
|
|
97
|
+
const hasJoinWithResultSelector = joinOps.some((op) => op.resultSelector);
|
|
98
|
+
const selectOp = operations.find((op) => op.operationType === "select");
|
|
99
|
+
// Generate SELECT clause
|
|
100
|
+
if (countOp) {
|
|
101
|
+
fragments.push(`SELECT ${generateCount(countOp, context)}`);
|
|
102
|
+
}
|
|
103
|
+
else if (sumOp) {
|
|
104
|
+
fragments.push(`SELECT ${generateSum(sumOp, context)}`);
|
|
105
|
+
}
|
|
106
|
+
else if (avgOp) {
|
|
107
|
+
fragments.push(`SELECT ${generateAverage(avgOp, context)}`);
|
|
108
|
+
}
|
|
109
|
+
else if (minOp) {
|
|
110
|
+
fragments.push(`SELECT ${generateMin(minOp, context)}`);
|
|
111
|
+
}
|
|
112
|
+
else if (maxOp) {
|
|
113
|
+
fragments.push(`SELECT ${generateMax(maxOp, context)}`);
|
|
114
|
+
}
|
|
115
|
+
else if (selectOp) {
|
|
116
|
+
const selectClause = generateSelect(selectOp, context);
|
|
117
|
+
if (distinctKeyword) {
|
|
118
|
+
fragments.push(selectClause.replace("SELECT", `SELECT ${distinctKeyword}`));
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
fragments.push(selectClause);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
else if (hasJoinWithResultSelector) {
|
|
125
|
+
// JOINs with result selectors ALWAYS require explicit SELECT projection
|
|
126
|
+
throw new Error("JOIN with result selector requires explicit SELECT projection. " +
|
|
127
|
+
"Add .select() to specify which columns to return. " +
|
|
128
|
+
"Example: .select((joined) => ({ userName: joined.u.name, deptName: joined.d.name }))");
|
|
129
|
+
}
|
|
130
|
+
else if (groupByOp) {
|
|
131
|
+
// GROUP BY without SELECT requires explicit projection of grouped columns
|
|
132
|
+
// SELECT * is invalid with GROUP BY in PostgreSQL
|
|
133
|
+
const selectClause = generateSelectForGroupBy(groupByOp, context);
|
|
134
|
+
fragments.push(distinctKeyword ? `SELECT ${distinctKeyword} ${selectClause}` : `SELECT ${selectClause}`);
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
// Default SELECT *
|
|
138
|
+
fragments.push(distinctKeyword ? `SELECT ${distinctKeyword} *` : "SELECT *");
|
|
139
|
+
}
|
|
140
|
+
// Add FROM clause
|
|
141
|
+
fragments.push(fromClause);
|
|
142
|
+
// Add JOIN clauses
|
|
143
|
+
fragments.push(...joinClauses);
|
|
144
|
+
// Process WHERE clauses (combine multiple with AND)
|
|
145
|
+
const whereOps = operations.filter((op) => op.operationType === "where");
|
|
146
|
+
const wherePredicates = [];
|
|
147
|
+
// Collect predicates from WHERE operations
|
|
148
|
+
whereOps.forEach((whereOp) => {
|
|
149
|
+
wherePredicates.push(generateBooleanExpression(whereOp.predicate, context));
|
|
150
|
+
});
|
|
151
|
+
// Also check for predicates in terminal operations (first, single, last and their OrDefault variants)
|
|
152
|
+
// Note: firstOp, singleOp, and lastOp are already declared above
|
|
153
|
+
if (firstOp?.predicate) {
|
|
154
|
+
wherePredicates.push(generateBooleanExpression(firstOp.predicate, context));
|
|
155
|
+
}
|
|
156
|
+
else if (singleOp?.predicate) {
|
|
157
|
+
wherePredicates.push(generateBooleanExpression(singleOp.predicate, context));
|
|
158
|
+
}
|
|
159
|
+
else if (lastOp?.predicate) {
|
|
160
|
+
wherePredicates.push(generateBooleanExpression(lastOp.predicate, context));
|
|
161
|
+
}
|
|
162
|
+
// Also check for COUNT predicate
|
|
163
|
+
if (countOp?.predicate) {
|
|
164
|
+
wherePredicates.push(generateBooleanExpression(countOp.predicate, context));
|
|
165
|
+
}
|
|
166
|
+
// Add WHERE clause if we have any predicates
|
|
167
|
+
if (wherePredicates.length > 0) {
|
|
168
|
+
fragments.push(`WHERE ${wherePredicates.join(" AND ")}`);
|
|
169
|
+
}
|
|
170
|
+
// Process GROUP BY (already found and stored in context earlier)
|
|
171
|
+
if (groupByOp) {
|
|
172
|
+
fragments.push(generateGroupBy(groupByOp, context));
|
|
173
|
+
}
|
|
174
|
+
// Process ORDER BY and THEN BY
|
|
175
|
+
const orderByOp = operations.find((op) => op.operationType === "orderBy");
|
|
176
|
+
if (orderByOp) {
|
|
177
|
+
// Check if we need to reverse for LAST operation
|
|
178
|
+
const shouldReverse = !!lastOp;
|
|
179
|
+
let orderByClause = generateOrderBy({
|
|
180
|
+
...orderByOp,
|
|
181
|
+
descending: shouldReverse ? !orderByOp.descending : orderByOp.descending,
|
|
182
|
+
}, context);
|
|
183
|
+
// Collect all THEN BY operations
|
|
184
|
+
const thenByOps = operations.filter((op) => op.operationType === "thenBy");
|
|
185
|
+
thenByOps.forEach((thenByOp) => {
|
|
186
|
+
orderByClause += generateThenBy({
|
|
187
|
+
...thenByOp,
|
|
188
|
+
descending: shouldReverse ? !thenByOp.descending : thenByOp.descending,
|
|
189
|
+
}, context);
|
|
190
|
+
});
|
|
191
|
+
fragments.push(orderByClause);
|
|
192
|
+
}
|
|
193
|
+
// Process terminal operations (LIMIT clauses)
|
|
194
|
+
// Note: firstOp, singleOp, lastOp are already declared above for predicate handling
|
|
195
|
+
if (firstOp) {
|
|
196
|
+
fragments.push(generateFirst(firstOp, context));
|
|
197
|
+
}
|
|
198
|
+
else if (singleOp) {
|
|
199
|
+
fragments.push(generateSingle(singleOp, context));
|
|
200
|
+
}
|
|
201
|
+
else if (lastOp) {
|
|
202
|
+
// For LAST, we need an ORDER BY to be meaningful
|
|
203
|
+
// If there's no ORDER BY, we need to add one (by first column)
|
|
204
|
+
if (!orderByOp) {
|
|
205
|
+
// Add default ORDER BY for LAST to work
|
|
206
|
+
fragments.push("ORDER BY 1 DESC");
|
|
207
|
+
}
|
|
208
|
+
// The ORDER BY reversal is already handled above
|
|
209
|
+
fragments.push(generateLast(lastOp, context));
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
// Process LIMIT/OFFSET
|
|
213
|
+
const takeOp = operations.find((op) => op.operationType === "take");
|
|
214
|
+
const skipOp = operations.find((op) => op.operationType === "skip");
|
|
215
|
+
// SQLite requires LIMIT before OFFSET
|
|
216
|
+
// If we have OFFSET but no LIMIT, use LIMIT -1 (unlimited)
|
|
217
|
+
if (takeOp) {
|
|
218
|
+
fragments.push(generateTake(takeOp, context));
|
|
219
|
+
}
|
|
220
|
+
else if (skipOp) {
|
|
221
|
+
fragments.push("LIMIT -1");
|
|
222
|
+
}
|
|
223
|
+
if (skipOp) {
|
|
224
|
+
fragments.push(generateSkip(skipOp, context));
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return fragments.join(" ");
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Collect all operations in the chain
|
|
231
|
+
*/
|
|
232
|
+
function collectOperations(operation) {
|
|
233
|
+
const operations = [];
|
|
234
|
+
let current = operation;
|
|
235
|
+
while (current) {
|
|
236
|
+
operations.push(current);
|
|
237
|
+
// Stop if we hit a FROM with a subquery - the subquery will be handled separately
|
|
238
|
+
if (current.operationType === "from" && current.subquery) {
|
|
239
|
+
break;
|
|
240
|
+
}
|
|
241
|
+
current = current.source;
|
|
242
|
+
}
|
|
243
|
+
// Reverse to get operations in execution order (from -> where -> select)
|
|
244
|
+
return operations.reverse();
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Generate EXISTS query for ANY/ALL operations
|
|
248
|
+
*/
|
|
249
|
+
function generateExistsQuery(operations, terminalOp, context) {
|
|
250
|
+
const fragments = [];
|
|
251
|
+
// Build the inner SELECT for EXISTS
|
|
252
|
+
fragments.push("SELECT 1");
|
|
253
|
+
// Process FROM
|
|
254
|
+
const fromOp = operations.find((op) => op.operationType === "from");
|
|
255
|
+
if (!fromOp) {
|
|
256
|
+
throw new Error("Query must have a FROM operation");
|
|
257
|
+
}
|
|
258
|
+
fragments.push(generateFrom(fromOp, context));
|
|
259
|
+
// Process JOIN operations
|
|
260
|
+
const joinOps = operations.filter((op) => op.operationType === "join");
|
|
261
|
+
joinOps.forEach((joinOp) => {
|
|
262
|
+
fragments.push(generateJoin(joinOp, context));
|
|
263
|
+
});
|
|
264
|
+
// Collect WHERE predicates
|
|
265
|
+
const wherePredicates = [];
|
|
266
|
+
// Get WHERE operations
|
|
267
|
+
const whereOps = operations.filter((op) => op.operationType === "where");
|
|
268
|
+
whereOps.forEach((whereOp) => {
|
|
269
|
+
wherePredicates.push(generateBooleanExpression(whereOp.predicate, context));
|
|
270
|
+
});
|
|
271
|
+
// Add predicate from ANY/ALL operation
|
|
272
|
+
if (terminalOp.operationType === "any" && terminalOp.predicate) {
|
|
273
|
+
wherePredicates.push(generateBooleanExpression(terminalOp.predicate, context));
|
|
274
|
+
}
|
|
275
|
+
else if (terminalOp.operationType === "all") {
|
|
276
|
+
// For ALL, we check NOT EXISTS where NOT predicate
|
|
277
|
+
const predicate = generateBooleanExpression(terminalOp.predicate, context);
|
|
278
|
+
// We'll handle the NOT wrapping later
|
|
279
|
+
wherePredicates.push(`NOT (${predicate})`);
|
|
280
|
+
}
|
|
281
|
+
// Add WHERE clause if we have predicates
|
|
282
|
+
if (wherePredicates.length > 0) {
|
|
283
|
+
const whereClause = wherePredicates.join(" AND ");
|
|
284
|
+
fragments.push(`WHERE ${whereClause}`);
|
|
285
|
+
}
|
|
286
|
+
const innerQuery = fragments.join(" ");
|
|
287
|
+
// Wrap in EXISTS/NOT EXISTS with CASE WHEN for boolean result
|
|
288
|
+
if (terminalOp.operationType === "any") {
|
|
289
|
+
return `SELECT CASE WHEN EXISTS(${innerQuery}) THEN 1 ELSE 0 END`;
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
// For ALL: NOT EXISTS(SELECT 1 WHERE NOT predicate)
|
|
293
|
+
// But we already added the NOT to the predicate above
|
|
294
|
+
return `SELECT CASE WHEN NOT EXISTS(${innerQuery}) THEN 1 ELSE 0 END`;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Generate SELECT clause for GROUP BY when no explicit SELECT is provided
|
|
299
|
+
*/
|
|
300
|
+
function generateSelectForGroupBy(groupByOp, context) {
|
|
301
|
+
const keySelector = groupByOp.keySelector;
|
|
302
|
+
if (keySelector.type === "object") {
|
|
303
|
+
// Composite key - project each grouped column
|
|
304
|
+
const columns = [];
|
|
305
|
+
for (const propName in keySelector.properties) {
|
|
306
|
+
const propExpr = keySelector.properties[propName];
|
|
307
|
+
if (propExpr) {
|
|
308
|
+
const sqlExpr = generateExpression(propExpr, context);
|
|
309
|
+
columns.push(`${sqlExpr} AS "${propName}"`);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
return columns.join(", ");
|
|
313
|
+
}
|
|
314
|
+
else if (keySelector.type === "column") {
|
|
315
|
+
// Single column grouping
|
|
316
|
+
const sqlExpr = generateExpression(keySelector, context);
|
|
317
|
+
return sqlExpr;
|
|
318
|
+
}
|
|
319
|
+
else {
|
|
320
|
+
// Any other expression type
|
|
321
|
+
const sqlExpr = generateExpression(keySelector, context);
|
|
322
|
+
return sqlExpr;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
//# sourceMappingURL=sql-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-generator.js","sourceRoot":"","sources":["../src/sql-generator.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for SQL generation
|
|
3
|
+
*/
|
|
4
|
+
import type { Expression } from "@tinqerjs/tinqer";
|
|
5
|
+
/**
|
|
6
|
+
* Result of SQL generation
|
|
7
|
+
*/
|
|
8
|
+
export interface SqlResult<TParams, TResult> {
|
|
9
|
+
sql: string;
|
|
10
|
+
params: TParams;
|
|
11
|
+
_resultType?: TResult;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Represents a reference to a source column in the database
|
|
15
|
+
*/
|
|
16
|
+
export interface SourceReference {
|
|
17
|
+
tableAlias: string;
|
|
18
|
+
columnName: string;
|
|
19
|
+
expression?: unknown;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Symbol table that maps projected property names to their source columns
|
|
23
|
+
* Handles both flat (userName) and nested (user.name) property paths
|
|
24
|
+
*/
|
|
25
|
+
export interface SymbolTable {
|
|
26
|
+
entries: Map<string, SourceReference>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* SQL generation context
|
|
30
|
+
*/
|
|
31
|
+
export interface SqlContext {
|
|
32
|
+
tableAliases: Map<string, string>;
|
|
33
|
+
aliasCounter: number;
|
|
34
|
+
formatParameter: (paramName: string) => string;
|
|
35
|
+
groupByKey?: Expression;
|
|
36
|
+
symbolTable?: SymbolTable;
|
|
37
|
+
currentShape?: unknown;
|
|
38
|
+
currentAlias?: string;
|
|
39
|
+
hasJoins?: boolean;
|
|
40
|
+
params?: Record<string, unknown>;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Options for execute and executeSimple functions
|
|
44
|
+
*/
|
|
45
|
+
export interface ExecuteOptions {
|
|
46
|
+
/**
|
|
47
|
+
* Optional callback to inspect/verify the generated SQL before execution
|
|
48
|
+
* Useful for testing, logging, debugging, or monitoring
|
|
49
|
+
*/
|
|
50
|
+
onSql?: (result: SqlResult<Record<string, unknown>, unknown>) => void;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* SQL fragment for building queries
|
|
54
|
+
*/
|
|
55
|
+
export interface SqlFragment {
|
|
56
|
+
sql: string;
|
|
57
|
+
hasGroupBy?: boolean;
|
|
58
|
+
hasOrderBy?: boolean;
|
|
59
|
+
hasLimit?: boolean;
|
|
60
|
+
hasOffset?: boolean;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;GAEG;AACH,MAAM,WAAW,SAAS,CAAC,OAAO,EAAE,OAAO;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;IAGhB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/C,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACvE;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/package.json
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@tinqerjs/better-sqlite3-adapter",
|
|
3
|
+
"version": "0.0.21",
|
|
4
|
+
"description": "Better SQLite3 SQL generator for Tinqer query builder",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"sideEffects": false,
|
|
9
|
+
"files": [
|
|
10
|
+
"dist"
|
|
11
|
+
],
|
|
12
|
+
"scripts": {
|
|
13
|
+
"build": "tsc",
|
|
14
|
+
"test": "mocha tests/**/*.test.ts",
|
|
15
|
+
"test:build": "tsc -p tsconfig.test.json --noEmit",
|
|
16
|
+
"dev": "tsx watch src/index.ts",
|
|
17
|
+
"lint": "eslint src tests --ext .ts",
|
|
18
|
+
"lint:fix": "eslint src tests --ext .ts --fix"
|
|
19
|
+
},
|
|
20
|
+
"dependencies": {},
|
|
21
|
+
"peerDependencies": {
|
|
22
|
+
"@tinqerjs/tinqer": "^0.0.21"
|
|
23
|
+
},
|
|
24
|
+
"devDependencies": {
|
|
25
|
+
"@types/chai": "5.2.2",
|
|
26
|
+
"@types/mocha": "10.0.10",
|
|
27
|
+
"@types/node": "24.3.3",
|
|
28
|
+
"@types/better-sqlite3": "^7.6.12",
|
|
29
|
+
"chai": "5.3.3",
|
|
30
|
+
"mocha": "11.7.2",
|
|
31
|
+
"tsx": "4.20.5",
|
|
32
|
+
"typescript": "5.9.2"
|
|
33
|
+
},
|
|
34
|
+
"keywords": [
|
|
35
|
+
"tinqer",
|
|
36
|
+
"sqlite",
|
|
37
|
+
"sqlite3",
|
|
38
|
+
"better-sqlite3",
|
|
39
|
+
"sql",
|
|
40
|
+
"database"
|
|
41
|
+
],
|
|
42
|
+
"author": "WebPods",
|
|
43
|
+
"license": "MIT"
|
|
44
|
+
}
|