@danielfgray/pg-sourcerer 0.1.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/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +104 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +133 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +47 -0
- package/dist/config.js.map +1 -0
- package/dist/errors.d.ts +129 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +41 -0
- package/dist/errors.js.map +1 -0
- package/dist/generate.d.ts +75 -0
- package/dist/generate.d.ts.map +1 -0
- package/dist/generate.js +183 -0
- package/dist/generate.js.map +1 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +62 -0
- package/dist/index.js.map +1 -0
- package/dist/init.d.ts +4 -0
- package/dist/init.d.ts.map +1 -0
- package/dist/init.js +229 -0
- package/dist/init.js.map +1 -0
- package/dist/ir/index.d.ts +7 -0
- package/dist/ir/index.d.ts.map +1 -0
- package/dist/ir/index.js +7 -0
- package/dist/ir/index.js.map +1 -0
- package/dist/ir/relation-graph.d.ts +113 -0
- package/dist/ir/relation-graph.d.ts.map +1 -0
- package/dist/ir/relation-graph.js +232 -0
- package/dist/ir/relation-graph.js.map +1 -0
- package/dist/ir/semantic-ir.d.ts +448 -0
- package/dist/ir/semantic-ir.d.ts.map +1 -0
- package/dist/ir/semantic-ir.js +138 -0
- package/dist/ir/semantic-ir.js.map +1 -0
- package/dist/ir/smart-tags.d.ts +24 -0
- package/dist/ir/smart-tags.d.ts.map +1 -0
- package/dist/ir/smart-tags.js +30 -0
- package/dist/ir/smart-tags.js.map +1 -0
- package/dist/lib/conjure.d.ts +431 -0
- package/dist/lib/conjure.d.ts.map +1 -0
- package/dist/lib/conjure.js +697 -0
- package/dist/lib/conjure.js.map +1 -0
- package/dist/lib/field-utils.d.ts +61 -0
- package/dist/lib/field-utils.d.ts.map +1 -0
- package/dist/lib/field-utils.js +132 -0
- package/dist/lib/field-utils.js.map +1 -0
- package/dist/lib/hex.d.ts +117 -0
- package/dist/lib/hex.d.ts.map +1 -0
- package/dist/lib/hex.js +185 -0
- package/dist/lib/hex.js.map +1 -0
- package/dist/plugins/arktype.d.ts +11 -0
- package/dist/plugins/arktype.d.ts.map +1 -0
- package/dist/plugins/arktype.js +207 -0
- package/dist/plugins/arktype.js.map +1 -0
- package/dist/plugins/effect-model.d.ts +10 -0
- package/dist/plugins/effect-model.d.ts.map +1 -0
- package/dist/plugins/effect-model.js +261 -0
- package/dist/plugins/effect-model.js.map +1 -0
- package/dist/plugins/kysely-queries.d.ts +7 -0
- package/dist/plugins/kysely-queries.d.ts.map +1 -0
- package/dist/plugins/kysely-queries.js +380 -0
- package/dist/plugins/kysely-queries.js.map +1 -0
- package/dist/plugins/sql-queries.d.ts +6 -0
- package/dist/plugins/sql-queries.d.ts.map +1 -0
- package/dist/plugins/sql-queries.js +249 -0
- package/dist/plugins/sql-queries.js.map +1 -0
- package/dist/plugins/types.d.ts +18 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +263 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/plugins/zod.d.ts +11 -0
- package/dist/plugins/zod.d.ts.map +1 -0
- package/dist/plugins/zod.js +180 -0
- package/dist/plugins/zod.js.map +1 -0
- package/dist/services/artifact-store.d.ts +55 -0
- package/dist/services/artifact-store.d.ts.map +1 -0
- package/dist/services/artifact-store.js +51 -0
- package/dist/services/artifact-store.js.map +1 -0
- package/dist/services/config-loader.d.ts +45 -0
- package/dist/services/config-loader.d.ts.map +1 -0
- package/dist/services/config-loader.js +113 -0
- package/dist/services/config-loader.js.map +1 -0
- package/dist/services/emissions.d.ts +89 -0
- package/dist/services/emissions.d.ts.map +1 -0
- package/dist/services/emissions.js +194 -0
- package/dist/services/emissions.js.map +1 -0
- package/dist/services/file-builder.d.ts +81 -0
- package/dist/services/file-builder.d.ts.map +1 -0
- package/dist/services/file-builder.js +112 -0
- package/dist/services/file-builder.js.map +1 -0
- package/dist/services/file-writer.d.ts +57 -0
- package/dist/services/file-writer.d.ts.map +1 -0
- package/dist/services/file-writer.js +76 -0
- package/dist/services/file-writer.js.map +1 -0
- package/dist/services/inflection.d.ts +227 -0
- package/dist/services/inflection.d.ts.map +1 -0
- package/dist/services/inflection.js +350 -0
- package/dist/services/inflection.js.map +1 -0
- package/dist/services/introspection.d.ts +46 -0
- package/dist/services/introspection.d.ts.map +1 -0
- package/dist/services/introspection.js +99 -0
- package/dist/services/introspection.js.map +1 -0
- package/dist/services/ir-builder.d.ts +46 -0
- package/dist/services/ir-builder.d.ts.map +1 -0
- package/dist/services/ir-builder.js +923 -0
- package/dist/services/ir-builder.js.map +1 -0
- package/dist/services/ir.d.ts +28 -0
- package/dist/services/ir.d.ts.map +1 -0
- package/dist/services/ir.js +25 -0
- package/dist/services/ir.js.map +1 -0
- package/dist/services/pg-types.d.ts +197 -0
- package/dist/services/pg-types.d.ts.map +1 -0
- package/dist/services/pg-types.js +274 -0
- package/dist/services/pg-types.js.map +1 -0
- package/dist/services/plugin-meta.d.ts +33 -0
- package/dist/services/plugin-meta.d.ts.map +1 -0
- package/dist/services/plugin-meta.js +24 -0
- package/dist/services/plugin-meta.js.map +1 -0
- package/dist/services/plugin-runner.d.ts +52 -0
- package/dist/services/plugin-runner.d.ts.map +1 -0
- package/dist/services/plugin-runner.js +182 -0
- package/dist/services/plugin-runner.js.map +1 -0
- package/dist/services/plugin.d.ts +286 -0
- package/dist/services/plugin.d.ts.map +1 -0
- package/dist/services/plugin.js +132 -0
- package/dist/services/plugin.js.map +1 -0
- package/dist/services/smart-tags-parser.d.ts +37 -0
- package/dist/services/smart-tags-parser.d.ts.map +1 -0
- package/dist/services/smart-tags-parser.js +79 -0
- package/dist/services/smart-tags-parser.js.map +1 -0
- package/dist/services/symbols.d.ts +85 -0
- package/dist/services/symbols.d.ts.map +1 -0
- package/dist/services/symbols.js +128 -0
- package/dist/services/symbols.js.map +1 -0
- package/dist/services/type-hints.d.ts +62 -0
- package/dist/services/type-hints.d.ts.map +1 -0
- package/dist/services/type-hints.js +117 -0
- package/dist/services/type-hints.js.map +1 -0
- package/dist/testing.d.ts +77 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +84 -0
- package/dist/testing.js.map +1 -0
- package/package.json +74 -0
|
@@ -0,0 +1,380 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kysely Queries Plugin - Generate type-safe Kysely query functions
|
|
3
|
+
*
|
|
4
|
+
* Generates permission-aware CRUD query functions using Kysely's query builder.
|
|
5
|
+
* Uses object namespace style with explicit `db: Kysely<DB>` first parameter.
|
|
6
|
+
*/
|
|
7
|
+
import { Schema as S } from "effect";
|
|
8
|
+
import { definePlugin } from "../services/plugin.js";
|
|
9
|
+
import { getTableEntities, getEnumEntities } from "../ir/semantic-ir.js";
|
|
10
|
+
import { conjure, cast } from "../lib/conjure.js";
|
|
11
|
+
import { resolveFieldType, tsTypeToAst } from "../lib/field-utils.js";
|
|
12
|
+
import { inflect } from "../services/inflection.js";
|
|
13
|
+
const { ts, b } = conjure;
|
|
14
|
+
const { toExpr } = cast;
|
|
15
|
+
// ============================================================================
|
|
16
|
+
// Configuration
|
|
17
|
+
// ============================================================================
|
|
18
|
+
const KyselyQueriesPluginConfig = S.Struct({
|
|
19
|
+
outputDir: S.String,
|
|
20
|
+
header: S.optional(S.String),
|
|
21
|
+
/**
|
|
22
|
+
* Path to import DB type from (relative to outputDir).
|
|
23
|
+
* Defaults to "../DB.js" which works with kysely-codegen's DB.d.ts output.
|
|
24
|
+
* For node16/nodenext module resolution, use ".js" extension even for .d.ts files.
|
|
25
|
+
*/
|
|
26
|
+
dbTypesPath: S.optional(S.String),
|
|
27
|
+
/**
|
|
28
|
+
* Whether to call .execute() / .executeTakeFirst() on queries.
|
|
29
|
+
* When true (default), methods return Promise<Row> or Promise<Row[]>.
|
|
30
|
+
* When false, methods return the query builder for further customization.
|
|
31
|
+
*/
|
|
32
|
+
executeQueries: S.optional(S.Boolean),
|
|
33
|
+
});
|
|
34
|
+
/**
|
|
35
|
+
* Get the Kysely table interface name from the entity.
|
|
36
|
+
* Converts schema.table to PascalCase: app_public.users -> AppPublicUsers
|
|
37
|
+
* Uses the inflection utility to match kysely-codegen's naming convention.
|
|
38
|
+
*/
|
|
39
|
+
const getTableTypeName = (entity) => `${inflect.pascalCase(entity.schemaName)}${inflect.pascalCase(entity.pgName)}`;
|
|
40
|
+
/** Get the schema-qualified table name for Kysely */
|
|
41
|
+
const getTableRef = (entity) => `${entity.schemaName}.${entity.pgName}`;
|
|
42
|
+
/** Find a field in the row shape by column name */
|
|
43
|
+
const findRowField = (entity, columnName) => entity.shapes.row.fields.find(f => f.columnName === columnName);
|
|
44
|
+
/** Get the TypeScript type AST for a field */
|
|
45
|
+
const getFieldTypeAst = (field, ctx) => {
|
|
46
|
+
if (!field)
|
|
47
|
+
return ts.string();
|
|
48
|
+
const resolved = resolveFieldType(field, ctx.enums, ctx.ir.extensions);
|
|
49
|
+
return resolved.enumDef ? ts.ref(resolved.enumDef.name) : tsTypeToAst(resolved.tsType);
|
|
50
|
+
};
|
|
51
|
+
// ============================================================================
|
|
52
|
+
// AST Building Helpers
|
|
53
|
+
// ============================================================================
|
|
54
|
+
/** Create identifier */
|
|
55
|
+
const id = (name) => b.identifier(name);
|
|
56
|
+
/** Create member expression: obj.prop */
|
|
57
|
+
const member = (obj, prop) => b.memberExpression(toExpr(obj), id(prop));
|
|
58
|
+
/** Create method call: obj.method(args) */
|
|
59
|
+
const call = (obj, method, args = []) => b.callExpression(member(obj, method), args.map(toExpr));
|
|
60
|
+
/** Create string literal */
|
|
61
|
+
const str = (value) => b.stringLiteral(value);
|
|
62
|
+
/** Create typed parameter: name: Type */
|
|
63
|
+
const typedParam = (name, type) => {
|
|
64
|
+
const param = id(name);
|
|
65
|
+
param.typeAnnotation = b.tsTypeAnnotation(cast.toTSType(type));
|
|
66
|
+
return param;
|
|
67
|
+
};
|
|
68
|
+
/** Create optional typed parameter: name?: Type */
|
|
69
|
+
const optionalTypedParam = (name, type) => {
|
|
70
|
+
const param = typedParam(name, type);
|
|
71
|
+
param.optional = true;
|
|
72
|
+
return param;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Build Kysely query chain starting with db.selectFrom('table')
|
|
76
|
+
*/
|
|
77
|
+
const selectFrom = (tableRef) => call(id("db"), "selectFrom", [str(tableRef)]);
|
|
78
|
+
/**
|
|
79
|
+
* Build Kysely query chain: db.insertInto('table')
|
|
80
|
+
*/
|
|
81
|
+
const insertInto = (tableRef) => call(id("db"), "insertInto", [str(tableRef)]);
|
|
82
|
+
/**
|
|
83
|
+
* Build Kysely query chain: db.updateTable('table')
|
|
84
|
+
*/
|
|
85
|
+
const updateTable = (tableRef) => call(id("db"), "updateTable", [str(tableRef)]);
|
|
86
|
+
/**
|
|
87
|
+
* Build Kysely query chain: db.deleteFrom('table')
|
|
88
|
+
*/
|
|
89
|
+
const deleteFrom = (tableRef) => call(id("db"), "deleteFrom", [str(tableRef)]);
|
|
90
|
+
/**
|
|
91
|
+
* Chain method call onto existing expression
|
|
92
|
+
*/
|
|
93
|
+
const chain = (expr, method, args = []) => call(expr, method, args);
|
|
94
|
+
/**
|
|
95
|
+
* Build arrow function expression: (params) => body
|
|
96
|
+
*/
|
|
97
|
+
const arrowFn = (params, body) => {
|
|
98
|
+
const fn = b.arrowFunctionExpression(params.map(p => p), toExpr(body));
|
|
99
|
+
return fn;
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Build object property: key: value
|
|
103
|
+
*/
|
|
104
|
+
const objProp = (key, value) => {
|
|
105
|
+
const prop = b.objectProperty(id(key), toExpr(value));
|
|
106
|
+
return prop;
|
|
107
|
+
};
|
|
108
|
+
// ============================================================================
|
|
109
|
+
// CRUD Method Generators
|
|
110
|
+
// ============================================================================
|
|
111
|
+
/**
|
|
112
|
+
* Generate findById method:
|
|
113
|
+
* findById: (db, id) => db.selectFrom('table').selectAll().where('id', '=', id).executeTakeFirst()
|
|
114
|
+
*/
|
|
115
|
+
const generateFindById = (ctx) => {
|
|
116
|
+
const { entity, executeQueries } = ctx;
|
|
117
|
+
if (!entity.primaryKey || !entity.permissions.canSelect)
|
|
118
|
+
return undefined;
|
|
119
|
+
const pkColName = entity.primaryKey.columns[0];
|
|
120
|
+
const pkField = findRowField(entity, pkColName);
|
|
121
|
+
if (!pkField)
|
|
122
|
+
return undefined;
|
|
123
|
+
const tableRef = getTableRef(entity);
|
|
124
|
+
const fieldName = pkField.name;
|
|
125
|
+
const fieldType = getFieldTypeAst(pkField, ctx);
|
|
126
|
+
// db.selectFrom('table').selectAll().where('col', '=', id)
|
|
127
|
+
let query = chain(chain(selectFrom(tableRef), "selectAll"), "where", [str(pkColName), str("="), id(fieldName)]);
|
|
128
|
+
if (executeQueries) {
|
|
129
|
+
query = chain(query, "executeTakeFirst");
|
|
130
|
+
}
|
|
131
|
+
const fn = arrowFn([typedParam("db", ts.ref("Kysely", [ts.ref("DB")])), typedParam(fieldName, fieldType)], query);
|
|
132
|
+
return objProp("findById", fn);
|
|
133
|
+
};
|
|
134
|
+
/**
|
|
135
|
+
* Generate findMany method with optional pagination:
|
|
136
|
+
* findMany: (db, opts?) => db.selectFrom('table').selectAll()
|
|
137
|
+
* .$if(opts?.limit != null, q => q.limit(opts!.limit!))
|
|
138
|
+
* .$if(opts?.offset != null, q => q.offset(opts!.offset!))
|
|
139
|
+
* .execute()
|
|
140
|
+
*/
|
|
141
|
+
const generateFindMany = (ctx) => {
|
|
142
|
+
const { entity, executeQueries } = ctx;
|
|
143
|
+
if (!entity.permissions.canSelect)
|
|
144
|
+
return undefined;
|
|
145
|
+
const tableRef = getTableRef(entity);
|
|
146
|
+
// Build the base query
|
|
147
|
+
let query = chain(selectFrom(tableRef), "selectAll");
|
|
148
|
+
// Add $if for limit
|
|
149
|
+
// q => q.limit(opts!.limit!)
|
|
150
|
+
const limitCallback = arrowFn([id("q")], call(id("q"), "limit", [
|
|
151
|
+
member(b.tsNonNullExpression(member(id("opts"), "limit")),
|
|
152
|
+
// This creates opts!.limit, we need to wrap the whole thing
|
|
153
|
+
// Actually we want: opts!.limit!
|
|
154
|
+
"")
|
|
155
|
+
]));
|
|
156
|
+
// Simpler approach - just use opts?.limit directly with non-null assertion where needed
|
|
157
|
+
const limitCheck = b.binaryExpression("!=", toExpr(member(b.optionalMemberExpression(id("opts"), id("limit"), false, true), "")), b.nullLiteral());
|
|
158
|
+
// Actually let's simplify - use a cleaner pattern
|
|
159
|
+
// $if(opts?.limit != null, q => q.limit(opts!.limit!))
|
|
160
|
+
query = call(query, "$if", [
|
|
161
|
+
b.binaryExpression("!=", toExpr(b.optionalMemberExpression(id("opts"), id("limit"), false, true)), b.nullLiteral()),
|
|
162
|
+
arrowFn([id("q")], call(id("q"), "limit", [
|
|
163
|
+
b.tsNonNullExpression(toExpr(member(b.tsNonNullExpression(toExpr(id("opts"))), "limit")))
|
|
164
|
+
]))
|
|
165
|
+
]);
|
|
166
|
+
// Add $if for offset
|
|
167
|
+
query = call(query, "$if", [
|
|
168
|
+
b.binaryExpression("!=", toExpr(b.optionalMemberExpression(id("opts"), id("offset"), false, true)), b.nullLiteral()),
|
|
169
|
+
arrowFn([id("q")], call(id("q"), "offset", [
|
|
170
|
+
b.tsNonNullExpression(toExpr(member(b.tsNonNullExpression(toExpr(id("opts"))), "offset")))
|
|
171
|
+
]))
|
|
172
|
+
]);
|
|
173
|
+
// Add .execute() if executeQueries is true
|
|
174
|
+
if (executeQueries) {
|
|
175
|
+
query = chain(query, "execute");
|
|
176
|
+
}
|
|
177
|
+
// Build opts parameter type: { limit?: number; offset?: number }
|
|
178
|
+
const optsType = ts.objectType([
|
|
179
|
+
{ name: "limit", type: ts.number(), optional: true },
|
|
180
|
+
{ name: "offset", type: ts.number(), optional: true },
|
|
181
|
+
]);
|
|
182
|
+
const fn = arrowFn([
|
|
183
|
+
typedParam("db", ts.ref("Kysely", [ts.ref("DB")])),
|
|
184
|
+
optionalTypedParam("opts", optsType),
|
|
185
|
+
], query);
|
|
186
|
+
return objProp("findMany", fn);
|
|
187
|
+
};
|
|
188
|
+
/**
|
|
189
|
+
* Generate create method:
|
|
190
|
+
* create: (db, data) => db.insertInto('table').values(data).returningAll().executeTakeFirstOrThrow()
|
|
191
|
+
*/
|
|
192
|
+
const generateCreate = (ctx) => {
|
|
193
|
+
const { entity, executeQueries } = ctx;
|
|
194
|
+
if (!entity.permissions.canInsert)
|
|
195
|
+
return undefined;
|
|
196
|
+
const tableRef = getTableRef(entity);
|
|
197
|
+
const tableTypeName = getTableTypeName(entity);
|
|
198
|
+
// db.insertInto('table').values(data).returningAll()
|
|
199
|
+
let query = chain(chain(insertInto(tableRef), "values", [id("data")]), "returningAll");
|
|
200
|
+
if (executeQueries) {
|
|
201
|
+
query = chain(query, "executeTakeFirstOrThrow");
|
|
202
|
+
}
|
|
203
|
+
// Use Insertable<TableTypeName> for the data parameter
|
|
204
|
+
const fn = arrowFn([
|
|
205
|
+
typedParam("db", ts.ref("Kysely", [ts.ref("DB")])),
|
|
206
|
+
typedParam("data", ts.ref("Insertable", [ts.ref(tableTypeName)])),
|
|
207
|
+
], query);
|
|
208
|
+
return objProp("create", fn);
|
|
209
|
+
};
|
|
210
|
+
/**
|
|
211
|
+
* Generate update method:
|
|
212
|
+
* update: (db, id, data) => db.updateTable('table').set(data).where('id', '=', id).returningAll().executeTakeFirstOrThrow()
|
|
213
|
+
*/
|
|
214
|
+
const generateUpdate = (ctx) => {
|
|
215
|
+
const { entity, executeQueries } = ctx;
|
|
216
|
+
if (!entity.primaryKey || !entity.permissions.canUpdate)
|
|
217
|
+
return undefined;
|
|
218
|
+
const pkColName = entity.primaryKey.columns[0];
|
|
219
|
+
const pkField = findRowField(entity, pkColName);
|
|
220
|
+
if (!pkField)
|
|
221
|
+
return undefined;
|
|
222
|
+
const tableRef = getTableRef(entity);
|
|
223
|
+
const fieldName = pkField.name;
|
|
224
|
+
const fieldType = getFieldTypeAst(pkField, ctx);
|
|
225
|
+
const tableTypeName = getTableTypeName(entity);
|
|
226
|
+
// db.updateTable('table').set(data).where('id', '=', id).returningAll()
|
|
227
|
+
let query = chain(chain(chain(updateTable(tableRef), "set", [id("data")]), "where", [str(pkColName), str("="), id(fieldName)]), "returningAll");
|
|
228
|
+
if (executeQueries) {
|
|
229
|
+
query = chain(query, "executeTakeFirstOrThrow");
|
|
230
|
+
}
|
|
231
|
+
// Use Updateable<TableTypeName> for the data parameter
|
|
232
|
+
const fn = arrowFn([
|
|
233
|
+
typedParam("db", ts.ref("Kysely", [ts.ref("DB")])),
|
|
234
|
+
typedParam(fieldName, fieldType),
|
|
235
|
+
typedParam("data", ts.ref("Updateable", [ts.ref(tableTypeName)])),
|
|
236
|
+
], query);
|
|
237
|
+
return objProp("update", fn);
|
|
238
|
+
};
|
|
239
|
+
/**
|
|
240
|
+
* Generate delete method:
|
|
241
|
+
* delete: (db, id) => db.deleteFrom('table').where('id', '=', id).execute()
|
|
242
|
+
*/
|
|
243
|
+
const generateDelete = (ctx) => {
|
|
244
|
+
const { entity, executeQueries } = ctx;
|
|
245
|
+
if (!entity.primaryKey || !entity.permissions.canDelete)
|
|
246
|
+
return undefined;
|
|
247
|
+
const pkColName = entity.primaryKey.columns[0];
|
|
248
|
+
const pkField = findRowField(entity, pkColName);
|
|
249
|
+
if (!pkField)
|
|
250
|
+
return undefined;
|
|
251
|
+
const tableRef = getTableRef(entity);
|
|
252
|
+
const fieldName = pkField.name;
|
|
253
|
+
const fieldType = getFieldTypeAst(pkField, ctx);
|
|
254
|
+
// db.deleteFrom('table').where('id', '=', id)
|
|
255
|
+
let query = chain(deleteFrom(tableRef), "where", [str(pkColName), str("="), id(fieldName)]);
|
|
256
|
+
if (executeQueries) {
|
|
257
|
+
query = chain(query, "execute");
|
|
258
|
+
}
|
|
259
|
+
const fn = arrowFn([typedParam("db", ts.ref("Kysely", [ts.ref("DB")])), typedParam(fieldName, fieldType)], query);
|
|
260
|
+
// Use 'remove' since 'delete' is a reserved word
|
|
261
|
+
return objProp("remove", fn);
|
|
262
|
+
};
|
|
263
|
+
/** Generate all CRUD methods for an entity */
|
|
264
|
+
const generateCrudMethods = (ctx) => [
|
|
265
|
+
generateFindById(ctx),
|
|
266
|
+
generateFindMany(ctx),
|
|
267
|
+
generateCreate(ctx),
|
|
268
|
+
generateUpdate(ctx),
|
|
269
|
+
generateDelete(ctx),
|
|
270
|
+
].filter((p) => p != null);
|
|
271
|
+
// ============================================================================
|
|
272
|
+
// Index-based Lookup Functions
|
|
273
|
+
// ============================================================================
|
|
274
|
+
/** Check if an index should generate a lookup function */
|
|
275
|
+
const shouldGenerateLookup = (index) => !index.isPartial &&
|
|
276
|
+
!index.hasExpressions &&
|
|
277
|
+
index.columns.length === 1 &&
|
|
278
|
+
index.method !== "gin" &&
|
|
279
|
+
index.method !== "gist";
|
|
280
|
+
/** Generate a method name for an index-based lookup */
|
|
281
|
+
const generateLookupName = (index) => {
|
|
282
|
+
const colName = index.columns[0];
|
|
283
|
+
const capitalizedCol = colName.charAt(0).toUpperCase() + colName.slice(1);
|
|
284
|
+
return `findBy${capitalizedCol}`;
|
|
285
|
+
};
|
|
286
|
+
/** Generate a lookup method for a single-column index */
|
|
287
|
+
const generateLookupMethod = (index, ctx) => {
|
|
288
|
+
const { entity, executeQueries } = ctx;
|
|
289
|
+
const tableRef = getTableRef(entity);
|
|
290
|
+
const columnName = index.columnNames[0];
|
|
291
|
+
const field = findRowField(entity, columnName);
|
|
292
|
+
const fieldName = field?.name ?? index.columns[0];
|
|
293
|
+
const fieldType = getFieldTypeAst(field, ctx);
|
|
294
|
+
const isUnique = index.isUnique || index.isPrimary;
|
|
295
|
+
// db.selectFrom('table').selectAll().where('col', '=', value)
|
|
296
|
+
let query = chain(chain(selectFrom(tableRef), "selectAll"), "where", [str(columnName), str("="), id(fieldName)]);
|
|
297
|
+
if (executeQueries) {
|
|
298
|
+
query = chain(query, isUnique ? "executeTakeFirst" : "execute");
|
|
299
|
+
}
|
|
300
|
+
const fn = arrowFn([typedParam("db", ts.ref("Kysely", [ts.ref("DB")])), typedParam(fieldName, fieldType)], query);
|
|
301
|
+
return objProp(generateLookupName(index), fn);
|
|
302
|
+
};
|
|
303
|
+
/** Generate lookup methods for all eligible indexes, deduplicating by name */
|
|
304
|
+
const generateLookupMethods = (ctx) => {
|
|
305
|
+
const seen = new Set();
|
|
306
|
+
return ctx.entity.indexes
|
|
307
|
+
.filter(index => shouldGenerateLookup(index) && !index.isPrimary && ctx.entity.permissions.canSelect)
|
|
308
|
+
.filter(index => {
|
|
309
|
+
const name = generateLookupName(index);
|
|
310
|
+
if (seen.has(name))
|
|
311
|
+
return false;
|
|
312
|
+
seen.add(name);
|
|
313
|
+
return true;
|
|
314
|
+
})
|
|
315
|
+
.map(index => generateLookupMethod(index, ctx));
|
|
316
|
+
};
|
|
317
|
+
// ============================================================================
|
|
318
|
+
// Plugin Definition
|
|
319
|
+
// ============================================================================
|
|
320
|
+
export const kyselyQueriesPlugin = definePlugin({
|
|
321
|
+
name: "kysely-queries",
|
|
322
|
+
provides: ["queries", "queries:kysely"],
|
|
323
|
+
requires: [], // No dependency on types:kysely for now - uses external kysely-codegen types
|
|
324
|
+
configSchema: KyselyQueriesPluginConfig,
|
|
325
|
+
inflection: {
|
|
326
|
+
outputFile: ctx => `${ctx.entityName}.ts`,
|
|
327
|
+
symbolName: (entityName, artifactKind) => `${entityName}${artifactKind}`,
|
|
328
|
+
},
|
|
329
|
+
run: (ctx, config) => {
|
|
330
|
+
const enums = getEnumEntities(ctx.ir);
|
|
331
|
+
const dbTypesPath = config.dbTypesPath ?? "../DB.js";
|
|
332
|
+
const executeQueries = config.executeQueries ?? true;
|
|
333
|
+
getTableEntities(ctx.ir)
|
|
334
|
+
.filter(entity => entity.tags.omit !== true)
|
|
335
|
+
.forEach(entity => {
|
|
336
|
+
const genCtx = { entity, enums, ir: ctx.ir, dbTypesPath, executeQueries };
|
|
337
|
+
const methods = [...generateCrudMethods(genCtx), ...generateLookupMethods(genCtx)];
|
|
338
|
+
if (methods.length === 0)
|
|
339
|
+
return;
|
|
340
|
+
const entityName = ctx.inflection.entityName(entity.pgClass, entity.tags);
|
|
341
|
+
const fileNameCtx = {
|
|
342
|
+
entityName,
|
|
343
|
+
pgName: entity.pgName,
|
|
344
|
+
schema: entity.schemaName,
|
|
345
|
+
inflection: ctx.inflection,
|
|
346
|
+
entity,
|
|
347
|
+
};
|
|
348
|
+
const filePath = `${config.outputDir}/${ctx.pluginInflection.outputFile(fileNameCtx)}`;
|
|
349
|
+
// Build the namespace object: export const users = { findById, findMany, ... }
|
|
350
|
+
const namespaceObj = b.objectExpression(methods.map(m => m));
|
|
351
|
+
// Lowercase entity name for the namespace variable
|
|
352
|
+
const namespaceName = entity.pgName;
|
|
353
|
+
const constDecl = b.variableDeclaration("const", [
|
|
354
|
+
b.variableDeclarator(id(namespaceName), namespaceObj)
|
|
355
|
+
]);
|
|
356
|
+
const exportDecl = b.exportNamedDeclaration(constDecl, []);
|
|
357
|
+
const file = ctx
|
|
358
|
+
.file(filePath)
|
|
359
|
+
.header(config.header ? `${config.header}\n` : "// This file is auto-generated. Do not edit.\n");
|
|
360
|
+
// Import Kysely type and DB from kysely-codegen output
|
|
361
|
+
file.import({ kind: "package", types: ["Kysely"], from: "kysely" });
|
|
362
|
+
file.import({ kind: "relative", types: ["DB"], from: dbTypesPath });
|
|
363
|
+
// Import Insertable/Updateable helper types and table type if we generate create/update
|
|
364
|
+
const tableTypeName = getTableTypeName(entity);
|
|
365
|
+
if (entity.permissions.canInsert) {
|
|
366
|
+
file.import({ kind: "package", types: ["Insertable"], from: "kysely" });
|
|
367
|
+
file.import({ kind: "relative", types: [tableTypeName], from: dbTypesPath });
|
|
368
|
+
}
|
|
369
|
+
if (entity.permissions.canUpdate) {
|
|
370
|
+
file.import({ kind: "package", types: ["Updateable"], from: "kysely" });
|
|
371
|
+
// Only import table type if not already imported by canInsert
|
|
372
|
+
if (!entity.permissions.canInsert) {
|
|
373
|
+
file.import({ kind: "relative", types: [tableTypeName], from: dbTypesPath });
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
file.ast(conjure.program(exportDecl)).emit();
|
|
377
|
+
});
|
|
378
|
+
},
|
|
379
|
+
});
|
|
380
|
+
//# sourceMappingURL=kysely-queries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kysely-queries.js","sourceRoot":"","sources":["../../src/plugins/kysely-queries.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAGpD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACxE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AAEnD,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,OAAO,CAAA;AACzB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;AAEvB,+EAA+E;AAC/E,gBAAgB;AAChB,+EAA+E;AAE/E,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,SAAS,EAAE,CAAC,CAAC,MAAM;IACnB,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;IAC5B;;;;OAIG;IACH,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;IACjC;;;;OAIG;IACH,cAAc,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;CACtC,CAAC,CAAA;AAgBF;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,CAAC,MAAmB,EAAU,EAAE,CACvD,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAA;AAEhF,qDAAqD;AACrD,MAAM,WAAW,GAAG,CAAC,MAAmB,EAAU,EAAE,CAClD,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,CAAA;AAEzC,mDAAmD;AACnD,MAAM,YAAY,GAAG,CAAC,MAAmB,EAAE,UAAkB,EAAqB,EAAE,CAClF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,UAAU,CAAC,CAAA;AAEjE,8CAA8C;AAC9C,MAAM,eAAe,GAAG,CAAC,KAAwB,EAAE,GAAsB,EAAY,EAAE;IACrF,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC,MAAM,EAAE,CAAA;IAC9B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,CAAA;IACtE,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;AACxF,CAAC,CAAA;AAED,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E,wBAAwB;AACxB,MAAM,EAAE,GAAG,CAAC,IAAY,EAAgB,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;AAE7D,yCAAyC;AACzC,MAAM,MAAM,GAAG,CAAC,GAAiB,EAAE,IAAY,EAAsB,EAAE,CACrE,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;AAE3C,2CAA2C;AAC3C,MAAM,IAAI,GAAG,CAAC,GAAiB,EAAE,MAAc,EAAE,OAAuB,EAAE,EAAoB,EAAE,CAC9F,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;AAEzD,4BAA4B;AAC5B,MAAM,GAAG,GAAG,CAAC,KAAa,EAAmB,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;AAEtE,yCAAyC;AACzC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,IAAc,EAAgB,EAAE;IAChE,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;IACtB,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9D,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,mDAAmD;AACnD,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAE,IAAc,EAAgB,EAAE;IACxE,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACpC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAA;IACrB,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,UAAU,GAAG,CAAC,QAAgB,EAAoB,EAAE,CACxD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;AAE/C;;GAEG;AACH,MAAM,UAAU,GAAG,CAAC,QAAgB,EAAoB,EAAE,CACxD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;AAE/C;;GAEG;AACH,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAoB,EAAE,CACzD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;AAEhD;;GAEG;AACH,MAAM,UAAU,GAAG,CAAC,QAAgB,EAAoB,EAAE,CACxD,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;AAE/C;;GAEG;AACH,MAAM,KAAK,GAAG,CAAC,IAAkB,EAAE,MAAc,EAAE,OAAuB,EAAE,EAAoB,EAAE,CAChG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;AAE1B;;GAEG;AACH,MAAM,OAAO,GAAG,CACd,MAAsB,EACtB,IAAkB,EACS,EAAE;IAC7B,MAAM,EAAE,GAAG,CAAC,CAAC,uBAAuB,CAClC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAuD,CAAC,EACxE,MAAM,CAAC,IAAI,CAAC,CACb,CAAA;IACD,OAAO,EAAE,CAAA;AACX,CAAC,CAAA;AAED;;GAEG;AACH,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,KAAmB,EAAoB,EAAE;IACrE,MAAM,IAAI,GAAG,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IACrD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,gBAAgB,GAAG,CAAC,GAAsB,EAAgC,EAAE;IAChF,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,GAAG,CAAA;IACtC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS;QAAE,OAAO,SAAS,CAAA;IAEzE,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAE,CAAA;IAC/C,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAC/C,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAA;IAE9B,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;IACpC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAA;IAC9B,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IAE/C,2DAA2D;IAC3D,IAAI,KAAK,GAAiB,KAAK,CAC7B,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,EACxC,OAAO,EACP,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAC1C,CAAA;IAED,IAAI,cAAc,EAAE,CAAC;QACnB,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAA;IAC1C,CAAC;IAED,MAAM,EAAE,GAAG,OAAO,CAChB,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,EACtF,KAAK,CACN,CAAA;IAED,OAAO,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;AAChC,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,gBAAgB,GAAG,CAAC,GAAsB,EAAgC,EAAE;IAChF,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,GAAG,CAAA;IACtC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS;QAAE,OAAO,SAAS,CAAA;IAEnD,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;IAEpC,uBAAuB;IACvB,IAAI,KAAK,GAAiB,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,CAAA;IAElE,oBAAoB;IACpB,6BAA6B;IAC7B,MAAM,aAAa,GAAG,OAAO,CAC3B,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EACT,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE;QACrB,MAAM,CACJ,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;QAClD,4DAA4D;QAC5D,iCAAiC;QACjC,EAAE,CACH;KACF,CAAC,CACH,CAAA;IACD,wFAAwF;IACxF,MAAM,UAAU,GAAG,CAAC,CAAC,gBAAgB,CACnC,IAAI,EACJ,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,wBAAwB,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EACpF,CAAC,CAAC,WAAW,EAAE,CAChB,CAAA;IAED,kDAAkD;IAClD,uDAAuD;IACvD,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE;QACzB,CAAC,CAAC,gBAAgB,CAChB,IAAI,EACJ,MAAM,CAAC,CAAC,CAAC,wBAAwB,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EACxE,CAAC,CAAC,WAAW,EAAE,CAChB;QACD,OAAO,CACL,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EACT,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE;YACrB,CAAC,CAAC,mBAAmB,CACnB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CACnE;SACF,CAAC,CACH;KACF,CAAC,CAAA;IAEF,qBAAqB;IACrB,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE;QACzB,CAAC,CAAC,gBAAgB,CAChB,IAAI,EACJ,MAAM,CAAC,CAAC,CAAC,wBAAwB,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,EACzE,CAAC,CAAC,WAAW,EAAE,CAChB;QACD,OAAO,CACL,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EACT,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE;YACtB,CAAC,CAAC,mBAAmB,CACnB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CACpE;SACF,CAAC,CACH;KACF,CAAC,CAAA;IAEF,2CAA2C;IAC3C,IAAI,cAAc,EAAE,CAAC;QACnB,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IACjC,CAAC;IAED,iEAAiE;IACjE,MAAM,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC;QAC7B,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;QACpD,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;KACtD,CAAC,CAAA;IAEF,MAAM,EAAE,GAAG,OAAO,CAChB;QACE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClD,kBAAkB,CAAC,MAAM,EAAE,QAAQ,CAAC;KACrC,EACD,KAAK,CACN,CAAA;IAED,OAAO,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;AAChC,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,cAAc,GAAG,CAAC,GAAsB,EAAgC,EAAE;IAC9E,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,GAAG,CAAA;IACtC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS;QAAE,OAAO,SAAS,CAAA;IAEnD,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;IACpC,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;IAE9C,qDAAqD;IACrD,IAAI,KAAK,GAAiB,KAAK,CAC7B,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EACnD,cAAc,CACf,CAAA;IAED,IAAI,cAAc,EAAE,CAAC;QACnB,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAA;IACjD,CAAC;IAED,uDAAuD;IACvD,MAAM,EAAE,GAAG,OAAO,CAChB;QACE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClD,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;KAClE,EACD,KAAK,CACN,CAAA;IAED,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;AAC9B,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,cAAc,GAAG,CAAC,GAAsB,EAAgC,EAAE;IAC9E,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,GAAG,CAAA;IACtC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS;QAAE,OAAO,SAAS,CAAA;IAEzE,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAE,CAAA;IAC/C,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAC/C,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAA;IAE9B,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;IACpC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAA;IAC9B,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IAC/C,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;IAE9C,wEAAwE;IACxE,IAAI,KAAK,GAAiB,KAAK,CAC7B,KAAK,CACH,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EACjD,OAAO,EACP,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAC1C,EACD,cAAc,CACf,CAAA;IAED,IAAI,cAAc,EAAE,CAAC;QACnB,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAA;IACjD,CAAC;IAED,uDAAuD;IACvD,MAAM,EAAE,GAAG,OAAO,CAChB;QACE,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClD,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC;QAChC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;KAClE,EACD,KAAK,CACN,CAAA;IAED,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;AAC9B,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,cAAc,GAAG,CAAC,GAAsB,EAAgC,EAAE;IAC9E,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,GAAG,CAAA;IACtC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS;QAAE,OAAO,SAAS,CAAA;IAEzE,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAE,CAAA;IAC/C,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAC/C,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAA;IAE9B,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;IACpC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAA;IAC9B,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IAE/C,8CAA8C;IAC9C,IAAI,KAAK,GAAiB,KAAK,CAC7B,UAAU,CAAC,QAAQ,CAAC,EACpB,OAAO,EACP,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAC1C,CAAA;IAED,IAAI,cAAc,EAAE,CAAC;QACnB,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IACjC,CAAC;IAED,MAAM,EAAE,GAAG,OAAO,CAChB,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,EACtF,KAAK,CACN,CAAA;IAED,iDAAiD;IACjD,OAAO,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;AAC9B,CAAC,CAAA;AAED,8CAA8C;AAC9C,MAAM,mBAAmB,GAAG,CAAC,GAAsB,EAA+B,EAAE,CAClF;IACE,gBAAgB,CAAC,GAAG,CAAC;IACrB,gBAAgB,CAAC,GAAG,CAAC;IACrB,cAAc,CAAC,GAAG,CAAC;IACnB,cAAc,CAAC,GAAG,CAAC;IACnB,cAAc,CAAC,GAAG,CAAC;CACpB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAyB,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAA;AAEnD,+EAA+E;AAC/E,+BAA+B;AAC/B,+EAA+E;AAE/E,0DAA0D;AAC1D,MAAM,oBAAoB,GAAG,CAAC,KAAe,EAAW,EAAE,CACxD,CAAC,KAAK,CAAC,SAAS;IAChB,CAAC,KAAK,CAAC,cAAc;IACrB,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;IAC1B,KAAK,CAAC,MAAM,KAAK,KAAK;IACtB,KAAK,CAAC,MAAM,KAAK,MAAM,CAAA;AAEzB,uDAAuD;AACvD,MAAM,kBAAkB,GAAG,CAAC,KAAe,EAAU,EAAE;IACrD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAE,CAAA;IACjC,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACzE,OAAO,SAAS,cAAc,EAAE,CAAA;AAClC,CAAC,CAAA;AAED,yDAAyD;AACzD,MAAM,oBAAoB,GAAG,CAAC,KAAe,EAAE,GAAsB,EAAoB,EAAE;IACzF,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,GAAG,CAAA;IACtC,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;IACpC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAE,CAAA;IACxC,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAC9C,MAAM,SAAS,GAAG,KAAK,EAAE,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAE,CAAA;IAClD,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,SAAS,CAAA;IAElD,8DAA8D;IAC9D,IAAI,KAAK,GAAiB,KAAK,CAC7B,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,WAAW,CAAC,EACxC,OAAO,EACP,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAC3C,CAAA;IAED,IAAI,cAAc,EAAE,CAAC;QACnB,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IACjE,CAAC;IAED,MAAM,EAAE,GAAG,OAAO,CAChB,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,EACtF,KAAK,CACN,CAAA;IAED,OAAO,OAAO,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;AAC/C,CAAC,CAAA;AAED,8EAA8E;AAC9E,MAAM,qBAAqB,GAAG,CAAC,GAAsB,EAA+B,EAAE;IACpF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAE9B,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO;SACtB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC;SACpG,MAAM,CAAC,KAAK,CAAC,EAAE;QACd,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;QACtC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAA;QAChC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACd,OAAO,IAAI,CAAA;IACb,CAAC,CAAC;SACD,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAA;AACnD,CAAC,CAAA;AAED,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAY,CAAC;IAC9C,IAAI,EAAE,gBAAgB;IACtB,QAAQ,EAAE,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACvC,QAAQ,EAAE,EAAE,EAAG,6EAA6E;IAC5F,YAAY,EAAE,yBAAyB;IACvC,UAAU,EAAE;QACV,UAAU,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,UAAU,KAAK;QACzC,UAAU,EAAE,CAAC,UAAU,EAAE,YAAY,EAAE,EAAE,CAAC,GAAG,UAAU,GAAG,YAAY,EAAE;KACzE;IAED,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;QACnB,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACrC,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,UAAU,CAAA;QACpD,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,IAAI,CAAA;QAEpD,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;aACrB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;aAC3C,OAAO,CAAC,MAAM,CAAC,EAAE;YAChB,MAAM,MAAM,GAAsB,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE,CAAA;YAE5F,MAAM,OAAO,GAAG,CAAC,GAAG,mBAAmB,CAAC,MAAM,CAAC,EAAE,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAA;YAElF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAM;YAEhC,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAA;YACzE,MAAM,WAAW,GAAoB;gBACnC,UAAU;gBACV,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,MAAM,EAAE,MAAM,CAAC,UAAU;gBACzB,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,MAAM;aACP,CAAA;YACD,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC,gBAAgB,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAA;YAEtF,+EAA+E;YAC/E,MAAM,YAAY,GAAG,CAAC,CAAC,gBAAgB,CACrC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAgD,CAAC,CACnE,CAAA;YAED,mDAAmD;YACnD,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAA;YAEnC,MAAM,SAAS,GAAG,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE;gBAC/C,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,YAAY,CAAC;aACtD,CAAC,CAAA;YACF,MAAM,UAAU,GAAG,CAAC,CAAC,sBAAsB,CAAC,SAAS,EAAE,EAAE,CAAgB,CAAA;YAEzE,MAAM,IAAI,GAAG,GAAG;iBACb,IAAI,CAAC,QAAQ,CAAC;iBACd,MAAM,CACL,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,gDAAgD,CACxF,CAAA;YAEH,uDAAuD;YACvD,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;YACnE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAA;YAEnE,wFAAwF;YACxF,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;YAC9C,IAAI,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;gBACvE,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAA;YAC9E,CAAC;YACD,IAAI,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAA;gBACvE,8DAA8D;gBAC9D,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC;oBAClC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAA;gBAC9E,CAAC;YACH,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QAC9C,CAAC,CAAC,CAAA;IACN,CAAC;CACF,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-queries.d.ts","sourceRoot":"","sources":["../../src/plugins/sql-queries.ts"],"names":[],"mappings":"AAqQA,eAAO,MAAM,gBAAgB;;;;EAiE3B,CAAC"}
|