@danielfgray/pg-sourcerer 0.1.7 → 0.1.9

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.
Files changed (55) hide show
  1. package/dist/cli.js +33 -62
  2. package/dist/cli.js.map +1 -1
  3. package/dist/generate.d.ts.map +1 -1
  4. package/dist/generate.js +4 -8
  5. package/dist/generate.js.map +1 -1
  6. package/dist/index.d.ts +1 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +1 -1
  9. package/dist/index.js.map +1 -1
  10. package/dist/init.d.ts +4 -1
  11. package/dist/init.d.ts.map +1 -1
  12. package/dist/init.js +207 -86
  13. package/dist/init.js.map +1 -1
  14. package/dist/lib/conjure.d.ts +15 -2
  15. package/dist/lib/conjure.d.ts.map +1 -1
  16. package/dist/lib/conjure.js +44 -3
  17. package/dist/lib/conjure.js.map +1 -1
  18. package/dist/lib/field-utils.js +5 -8
  19. package/dist/lib/field-utils.js.map +1 -1
  20. package/dist/plugins/arktype.d.ts +7 -0
  21. package/dist/plugins/arktype.d.ts.map +1 -1
  22. package/dist/plugins/arktype.js +219 -40
  23. package/dist/plugins/arktype.js.map +1 -1
  24. package/dist/plugins/effect-model.d.ts +8 -1
  25. package/dist/plugins/effect-model.d.ts.map +1 -1
  26. package/dist/plugins/effect-model.js +163 -15
  27. package/dist/plugins/effect-model.js.map +1 -1
  28. package/dist/plugins/kysely-queries.d.ts +7 -0
  29. package/dist/plugins/kysely-queries.d.ts.map +1 -1
  30. package/dist/plugins/kysely-queries.js +175 -74
  31. package/dist/plugins/kysely-queries.js.map +1 -1
  32. package/dist/plugins/sql-queries.d.ts +4 -0
  33. package/dist/plugins/sql-queries.d.ts.map +1 -1
  34. package/dist/plugins/sql-queries.js +81 -16
  35. package/dist/plugins/sql-queries.js.map +1 -1
  36. package/dist/plugins/types.d.ts +2 -0
  37. package/dist/plugins/types.d.ts.map +1 -1
  38. package/dist/plugins/types.js +1 -1
  39. package/dist/plugins/types.js.map +1 -1
  40. package/dist/plugins/zod.d.ts +7 -0
  41. package/dist/plugins/zod.d.ts.map +1 -1
  42. package/dist/plugins/zod.js +169 -13
  43. package/dist/plugins/zod.js.map +1 -1
  44. package/dist/services/artifact-store.d.ts.map +1 -1
  45. package/dist/services/artifact-store.js +2 -5
  46. package/dist/services/artifact-store.js.map +1 -1
  47. package/dist/services/inflection.d.ts +51 -30
  48. package/dist/services/inflection.d.ts.map +1 -1
  49. package/dist/services/inflection.js +86 -93
  50. package/dist/services/inflection.js.map +1 -1
  51. package/dist/services/plugin.d.ts +10 -10
  52. package/dist/services/plugin.d.ts.map +1 -1
  53. package/dist/services/plugin.js +16 -3
  54. package/dist/services/plugin.js.map +1 -1
  55. package/package.json +4 -3
@@ -16,20 +16,26 @@ const { toExpr } = cast;
16
16
  // Configuration
17
17
  // ============================================================================
18
18
  const KyselyQueriesPluginConfig = S.Struct({
19
- outputDir: S.String,
19
+ outputDir: S.optionalWith(S.String, { default: () => "kysely-queries" }),
20
20
  header: S.optional(S.String),
21
21
  /**
22
22
  * Path to import DB type from (relative to outputDir).
23
23
  * Defaults to "../DB.js" which works with kysely-codegen's DB.d.ts output.
24
24
  * For node16/nodenext module resolution, use ".js" extension even for .d.ts files.
25
25
  */
26
- dbTypesPath: S.optional(S.String),
26
+ dbTypesPath: S.optionalWith(S.String, { default: () => "../DB.js" }),
27
27
  /**
28
28
  * Whether to call .execute() / .executeTakeFirst() on queries.
29
29
  * When true (default), methods return Promise<Row> or Promise<Row[]>.
30
30
  * When false, methods return the query builder for further customization.
31
31
  */
32
- executeQueries: S.optional(S.Boolean),
32
+ executeQueries: S.optionalWith(S.Boolean, { default: () => true }),
33
+ /**
34
+ * Whether to generate listMany() method for unfiltered table scans.
35
+ * Disabled by default since unfiltered scans don't use indexes.
36
+ * When enabled, generates: listMany(db, limit = 50, offset = 0)
37
+ */
38
+ generateListMany: S.optionalWith(S.Boolean, { default: () => false }),
33
39
  });
34
40
  /**
35
41
  * Get the Kysely table interface name from the entity.
@@ -49,6 +55,41 @@ const getFieldTypeAst = (field, ctx) => {
49
55
  return resolved.enumDef ? ts.ref(resolved.enumDef.name) : tsTypeToAst(resolved.tsType);
50
56
  };
51
57
  // ============================================================================
58
+ // FK Semantic Naming Helpers
59
+ // ============================================================================
60
+ /**
61
+ * Find a belongsTo relation that uses the given column as its local FK column.
62
+ * For single-column indexes only.
63
+ */
64
+ const findRelationForColumn = (entity, columnName) => entity.relations.find(r => r.kind === "belongsTo" && r.columns.length === 1 && r.columns[0]?.local === columnName);
65
+ /**
66
+ * Derive semantic name for an FK-based lookup.
67
+ * Priority: @fieldName tag → column minus _id suffix → target entity name
68
+ */
69
+ const deriveSemanticName = (relation, columnName) => {
70
+ // 1. Check for @fieldName smart tag
71
+ if (relation.tags.fieldName && typeof relation.tags.fieldName === "string") {
72
+ return relation.tags.fieldName;
73
+ }
74
+ // 2. Strip common FK suffixes from column name
75
+ const suffixes = ["_id", "_fk", "Id", "Fk"];
76
+ for (const suffix of suffixes) {
77
+ if (columnName.endsWith(suffix)) {
78
+ const stripped = columnName.slice(0, -suffix.length);
79
+ if (stripped.length > 0)
80
+ return stripped;
81
+ }
82
+ }
83
+ // 3. Fall back to target entity name (lowercased first char)
84
+ const target = relation.targetEntity;
85
+ return target.charAt(0).toLowerCase() + target.slice(1);
86
+ };
87
+ /**
88
+ * Convert to PascalCase for use in method names.
89
+ * Handles snake_case (created_at → CreatedAt) and regular strings.
90
+ */
91
+ const toPascalCase = (s) => inflect.pascalCase(s);
92
+ // ============================================================================
52
93
  // AST Building Helpers
53
94
  // ============================================================================
54
95
  /** Create identifier */
@@ -131,59 +172,37 @@ const generateFindById = (ctx) => {
131
172
  const fn = arrowFn([typedParam("db", ts.ref("Kysely", [ts.ref("DB")])), typedParam(fieldName, fieldType)], query);
132
173
  return objProp("findById", fn);
133
174
  };
175
+ /** Default limit for findMany queries */
176
+ const DEFAULT_LIMIT = 50;
177
+ /** Default offset for findMany queries */
178
+ const DEFAULT_OFFSET = 0;
179
+ /**
180
+ * Create a parameter with a default value: name = defaultValue
181
+ * Type is inferred from the default value, no explicit annotation.
182
+ */
183
+ const paramWithDefault = (name, defaultValue) => b.assignmentPattern(id(name), toExpr(defaultValue));
134
184
  /**
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()
185
+ * Generate listMany method with pagination defaults:
186
+ * listMany: (db, limit = 50, offset = 0) => db.selectFrom('table').selectAll()
187
+ * .limit(limit).offset(offset).execute()
140
188
  */
141
- const generateFindMany = (ctx) => {
189
+ const generateListMany = (ctx) => {
142
190
  const { entity, executeQueries } = ctx;
143
191
  if (!entity.permissions.canSelect)
144
192
  return undefined;
145
193
  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
- ]);
194
+ // Build query: db.selectFrom('table').selectAll().limit(limit).offset(offset)
195
+ let query = chain(chain(chain(selectFrom(tableRef), "selectAll"), "limit", [id("limit")]), "offset", [id("offset")]);
173
196
  // Add .execute() if executeQueries is true
174
197
  if (executeQueries) {
175
198
  query = chain(query, "execute");
176
199
  }
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
200
  const fn = arrowFn([
183
201
  typedParam("db", ts.ref("Kysely", [ts.ref("DB")])),
184
- optionalTypedParam("opts", optsType),
202
+ paramWithDefault("limit", b.numericLiteral(DEFAULT_LIMIT)),
203
+ paramWithDefault("offset", b.numericLiteral(DEFAULT_OFFSET)),
185
204
  ], query);
186
- return objProp("findMany", fn);
205
+ return objProp("listMany", fn);
187
206
  };
188
207
  /**
189
208
  * Generate create method:
@@ -263,7 +282,7 @@ const generateDelete = (ctx) => {
263
282
  /** Generate all CRUD methods for an entity */
264
283
  const generateCrudMethods = (ctx) => [
265
284
  generateFindById(ctx),
266
- generateFindMany(ctx),
285
+ ctx.generateListMany ? generateListMany(ctx) : undefined,
267
286
  generateCreate(ctx),
268
287
  generateUpdate(ctx),
269
288
  generateDelete(ctx),
@@ -277,42 +296,108 @@ const shouldGenerateLookup = (index) => !index.isPartial &&
277
296
  index.columns.length === 1 &&
278
297
  index.method !== "gin" &&
279
298
  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}`;
299
+ /**
300
+ * Generate a method name for an index-based lookup.
301
+ * Uses semantic naming when the column corresponds to an FK relation.
302
+ */
303
+ const generateLookupName = (entity, index, relation) => {
304
+ const isUnique = isUniqueLookup(entity, index);
305
+ // Kysely uses "findBy" prefix consistently, with "One" or "Many" suffix
306
+ const prefix = isUnique ? "findOneBy" : "findManyBy";
307
+ // Use semantic name if FK relation exists, otherwise fall back to column name
308
+ const columnName = index.columnNames[0];
309
+ const byName = relation
310
+ ? deriveSemanticName(relation, columnName)
311
+ : index.columns[0];
312
+ return `${prefix}${toPascalCase(byName)}`;
285
313
  };
286
- /** Generate a lookup method for a single-column index */
314
+ /**
315
+ * Generate a lookup method for a single-column index.
316
+ * Uses semantic parameter naming when the column corresponds to an FK relation.
317
+ */
287
318
  const generateLookupMethod = (index, ctx) => {
288
319
  const { entity, executeQueries } = ctx;
289
320
  const tableRef = getTableRef(entity);
290
321
  const columnName = index.columnNames[0];
291
322
  const field = findRowField(entity, columnName);
292
323
  const fieldName = field?.name ?? index.columns[0];
293
- const fieldType = getFieldTypeAst(field, ctx);
294
- const isUnique = index.isUnique || index.isPrimary;
324
+ const isUnique = isUniqueLookup(entity, index);
325
+ // Check if this index column corresponds to an FK relation
326
+ const relation = findRelationForColumn(entity, columnName);
327
+ // Use semantic param name if FK relation exists, otherwise use field name
328
+ const paramName = relation
329
+ ? deriveSemanticName(relation, columnName)
330
+ : fieldName;
331
+ // For FK columns, use indexed access on Selectable<TableType> to get the unwrapped type
332
+ // (Kysely's Generated<T> types need Selectable to unwrap for use in where clauses)
333
+ // For regular columns, use the field's type directly
334
+ const useSemanticNaming = relation !== undefined && paramName !== fieldName;
335
+ const tableTypeName = getTableTypeName(entity);
336
+ const paramType = useSemanticNaming
337
+ ? ts.indexedAccess(ts.ref("Selectable", [ts.ref(tableTypeName)]), ts.literal(fieldName))
338
+ : getFieldTypeAst(field, ctx);
295
339
  // db.selectFrom('table').selectAll().where('col', '=', value)
296
- let query = chain(chain(selectFrom(tableRef), "selectAll"), "where", [str(columnName), str("="), id(fieldName)]);
340
+ let query = chain(chain(selectFrom(tableRef), "selectAll"), "where", [str(columnName), str("="), id(paramName)]);
297
341
  if (executeQueries) {
298
342
  query = chain(query, isUnique ? "executeTakeFirst" : "execute");
299
343
  }
300
- const fn = arrowFn([typedParam("db", ts.ref("Kysely", [ts.ref("DB")])), typedParam(fieldName, fieldType)], query);
301
- return objProp(generateLookupName(index), fn);
344
+ const fn = arrowFn([typedParam("db", ts.ref("Kysely", [ts.ref("DB")])), typedParam(paramName, paramType)], query);
345
+ const methodName = generateLookupName(entity, index, relation);
346
+ return objProp(methodName, fn);
302
347
  };
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))
348
+ /**
349
+ * Check if a column is covered by a unique constraint (not just unique index).
350
+ * This helps determine if a non-unique B-tree index on the column still
351
+ * returns at most one row.
352
+ */
353
+ const columnHasUniqueConstraint = (entity, columnName) => {
354
+ const constraints = entity.pgClass.getConstraints();
355
+ return constraints.some(c => {
356
+ // 'u' = unique constraint, 'p' = primary key
357
+ if (c.contype !== "u" && c.contype !== "p")
358
+ return false;
359
+ // Single-column constraint on our column?
360
+ const conkey = c.conkey ?? [];
361
+ if (conkey.length !== 1)
311
362
  return false;
312
- seen.add(name);
363
+ // Find the attribute with this attnum
364
+ const attrs = entity.pgClass.getAttributes();
365
+ const attr = attrs.find(a => a.attnum === conkey[0]);
366
+ return attr?.attname === columnName;
367
+ });
368
+ };
369
+ /**
370
+ * Determine if a lookup should be treated as unique (returns one row).
371
+ * True if: index is unique, index is primary, OR column has unique constraint.
372
+ */
373
+ const isUniqueLookup = (entity, index) => {
374
+ if (index.isUnique || index.isPrimary)
313
375
  return true;
314
- })
315
- .map(index => generateLookupMethod(index, ctx));
376
+ // Check if the single column has a unique constraint
377
+ const columnName = index.columnNames[0];
378
+ return columnName ? columnHasUniqueConstraint(entity, columnName) : false;
379
+ };
380
+ /** Generate lookup methods for all eligible indexes, deduplicating by column */
381
+ const generateLookupMethods = (ctx) => {
382
+ const eligibleIndexes = ctx.entity.indexes
383
+ .filter(index => shouldGenerateLookup(index) && !index.isPrimary && ctx.entity.permissions.canSelect);
384
+ // Group by column name, keeping only one index per column
385
+ // Prefer unique indexes, but also consider columns with unique constraints
386
+ const byColumn = new Map();
387
+ for (const index of eligibleIndexes) {
388
+ const columnName = index.columnNames[0];
389
+ const existing = byColumn.get(columnName);
390
+ if (!existing) {
391
+ byColumn.set(columnName, index);
392
+ }
393
+ else {
394
+ // Prefer explicitly unique index over non-unique
395
+ if (index.isUnique && !existing.isUnique) {
396
+ byColumn.set(columnName, index);
397
+ }
398
+ }
399
+ }
400
+ return Array.from(byColumn.values()).map(index => generateLookupMethod(index, ctx));
316
401
  };
317
402
  // ============================================================================
318
403
  // Plugin Definition
@@ -328,12 +413,11 @@ export const kyselyQueriesPlugin = definePlugin({
328
413
  },
329
414
  run: (ctx, config) => {
330
415
  const enums = getEnumEntities(ctx.ir);
331
- const dbTypesPath = config.dbTypesPath ?? "../DB.js";
332
- const executeQueries = config.executeQueries ?? true;
416
+ const { dbTypesPath, executeQueries, generateListMany } = config;
333
417
  getTableEntities(ctx.ir)
334
418
  .filter(entity => entity.tags.omit !== true)
335
419
  .forEach(entity => {
336
- const genCtx = { entity, enums, ir: ctx.ir, dbTypesPath, executeQueries };
420
+ const genCtx = { entity, enums, ir: ctx.ir, dbTypesPath, executeQueries, generateListMany };
337
421
  const methods = [...generateCrudMethods(genCtx), ...generateLookupMethods(genCtx)];
338
422
  if (methods.length === 0)
339
423
  return;
@@ -362,16 +446,33 @@ export const kyselyQueriesPlugin = definePlugin({
362
446
  file.import({ kind: "relative", types: ["DB"], from: dbTypesPath });
363
447
  // Import Insertable/Updateable helper types and table type if we generate create/update
364
448
  const tableTypeName = getTableTypeName(entity);
449
+ // Check if any lookup methods use semantic naming (FK with Selectable indexed access)
450
+ const hasSemanticLookups = entity.indexes.some(index => {
451
+ if (!shouldGenerateLookup(index) || index.isPrimary)
452
+ return false;
453
+ const columnName = index.columnNames[0];
454
+ const relation = findRelationForColumn(entity, columnName);
455
+ if (!relation)
456
+ return false;
457
+ const paramName = deriveSemanticName(relation, columnName);
458
+ const field = findRowField(entity, columnName);
459
+ const fieldName = field?.name ?? index.columns[0];
460
+ return paramName !== fieldName;
461
+ });
462
+ // Import table type if needed for Insertable/Updateable or semantic lookups
463
+ const needsTableType = entity.permissions.canInsert || entity.permissions.canUpdate || hasSemanticLookups;
464
+ if (needsTableType) {
465
+ file.import({ kind: "relative", types: [tableTypeName], from: dbTypesPath });
466
+ }
467
+ // Import Selectable if we have semantic lookups (for unwrapping Generated<T>)
468
+ if (hasSemanticLookups) {
469
+ file.import({ kind: "package", types: ["Selectable"], from: "kysely" });
470
+ }
365
471
  if (entity.permissions.canInsert) {
366
472
  file.import({ kind: "package", types: ["Insertable"], from: "kysely" });
367
- file.import({ kind: "relative", types: [tableTypeName], from: dbTypesPath });
368
473
  }
369
474
  if (entity.permissions.canUpdate) {
370
475
  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
476
  }
376
477
  file.ast(conjure.program(exportDecl)).emit();
377
478
  });
@@ -1 +1 @@
1
- {"version":3,"file":"kysely-queries.js","sourceRoot":"","sources":["../../src/plugins/kysely-queries.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kysely-queries.js","sourceRoot":"","sources":["../../src/plugins/kysely-queries.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,10 @@
1
1
  export declare const sqlQueriesPlugin: import("../index.js").PluginFactory<{
2
2
  readonly outputDir: string;
3
3
  readonly header?: string | undefined;
4
+ readonly sqlStyle: "string" | "tag";
5
+ }, {
6
+ readonly outputDir?: string | undefined;
7
+ readonly header?: string | undefined;
4
8
  readonly sqlStyle?: "string" | "tag" | undefined;
5
9
  }>;
6
10
  //# sourceMappingURL=sql-queries.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sql-queries.d.ts","sourceRoot":"","sources":["../../src/plugins/sql-queries.ts"],"names":[],"mappings":"AAqQA,eAAO,MAAM,gBAAgB;;;;EAiE3B,CAAC"}
1
+ {"version":3,"file":"sql-queries.d.ts","sourceRoot":"","sources":["../../src/plugins/sql-queries.ts"],"names":[],"mappings":"AA2VA,eAAO,MAAM,gBAAgB;;;;;;;;EAiE3B,CAAC"}
@@ -7,15 +7,16 @@ import { getTableEntities, getEnumEntities } from "../ir/semantic-ir.js";
7
7
  import { conjure } from "../lib/conjure.js";
8
8
  import { hex } from "../lib/hex.js";
9
9
  import { resolveFieldType, tsTypeToAst } from "../lib/field-utils.js";
10
+ import { inflect } from "../services/inflection.js";
10
11
  const { ts, b, param } = conjure;
11
12
  // ============================================================================
12
13
  // Configuration
13
14
  // ============================================================================
14
15
  const SqlQueriesPluginConfig = S.Struct({
15
- outputDir: S.String,
16
+ outputDir: S.optionalWith(S.String, { default: () => "sql-queries" }),
16
17
  header: S.optional(S.String),
17
18
  /** SQL query style. Defaults to "tag" (tagged template literals) */
18
- sqlStyle: S.optional(S.Union(S.Literal("tag"), S.Literal("string"))),
19
+ sqlStyle: S.optionalWith(S.Union(S.Literal("tag"), S.Literal("string")), { default: () => "tag" }),
19
20
  });
20
21
  /** Find a field in the row shape by column name */
21
22
  const findRowField = (entity, columnName) => entity.shapes.row.fields.find(f => f.columnName === columnName);
@@ -27,6 +28,44 @@ const getFieldTypeAst = (field, ctx) => {
27
28
  return resolved.enumDef ? ts.ref(resolved.enumDef.name) : tsTypeToAst(resolved.tsType);
28
29
  };
29
30
  // ============================================================================
31
+ // FK Semantic Naming Helpers
32
+ // ============================================================================
33
+ /**
34
+ * Find a belongsTo relation that uses the given column as its local FK column.
35
+ * For single-column indexes only.
36
+ */
37
+ const findRelationForColumn = (entity, columnName) => entity.relations.find(r => r.kind === "belongsTo" && r.columns.length === 1 && r.columns[0]?.local === columnName);
38
+ /**
39
+ * Derive semantic name for an FK-based lookup.
40
+ * Priority: @fieldName tag → column minus _id suffix → target entity name
41
+ */
42
+ const deriveSemanticName = (relation, columnName) => {
43
+ // 1. Check for @fieldName smart tag
44
+ if (relation.tags.fieldName && typeof relation.tags.fieldName === "string") {
45
+ return relation.tags.fieldName;
46
+ }
47
+ // 2. Strip common FK suffixes from column name
48
+ const suffixes = ["_id", "_fk", "Id", "Fk"];
49
+ for (const suffix of suffixes) {
50
+ if (columnName.endsWith(suffix)) {
51
+ const stripped = columnName.slice(0, -suffix.length);
52
+ if (stripped.length > 0)
53
+ return stripped;
54
+ }
55
+ }
56
+ // 3. Fall back to target entity name (lowercased first char)
57
+ const target = relation.targetEntity;
58
+ return target.charAt(0).toLowerCase() + target.slice(1);
59
+ };
60
+ /**
61
+ * Capitalize first letter for use in function names
62
+ */
63
+ /**
64
+ * Convert to PascalCase for use in function names.
65
+ * Handles snake_case (created_at → CreatedAt) and regular strings.
66
+ */
67
+ const toPascalCase = (s) => inflect.pascalCase(s);
68
+ // ============================================================================
30
69
  // CRUD Function Generators
31
70
  // ============================================================================
32
71
  /** Generate findById function if entity has a primary key and canSelect permission */
@@ -139,15 +178,26 @@ const shouldGenerateLookup = (index) => !index.isPartial &&
139
178
  index.columns.length === 1 &&
140
179
  index.method !== "gin" &&
141
180
  index.method !== "gist";
142
- /** Generate a function name for an index-based lookup */
143
- const generateLookupName = (entity, index) => {
144
- const entitySingular = entity.name.replace(/s$/, "");
145
- const byPart = index.columns
146
- .map(col => `By${col.charAt(0).toUpperCase() + col.slice(1)}`)
147
- .join("");
148
- return `get${entitySingular}${byPart}`;
181
+ /**
182
+ * Generate a function name for an index-based lookup.
183
+ * Uses semantic naming when the column corresponds to an FK relation.
184
+ */
185
+ const generateLookupName = (entity, index, relation) => {
186
+ const isUnique = index.isUnique || index.isPrimary;
187
+ const entityName = isUnique
188
+ ? entity.name.replace(/s$/, "") // singular for unique
189
+ : entity.name.replace(/s$/, "") + "s"; // plural for non-unique
190
+ // Use semantic name if FK relation exists, otherwise fall back to column name
191
+ const columnName = index.columnNames[0];
192
+ const byName = relation
193
+ ? deriveSemanticName(relation, columnName)
194
+ : index.columns[0];
195
+ return `get${entityName}By${toPascalCase(byName)}`;
149
196
  };
150
- /** Generate a lookup function for a single-column index */
197
+ /**
198
+ * Generate a lookup function for a single-column index.
199
+ * Uses semantic parameter naming when the column corresponds to an FK relation.
200
+ */
151
201
  const generateLookupFunction = (index, ctx) => {
152
202
  const { entity, sqlStyle } = ctx;
153
203
  const rowType = entity.shapes.row.name;
@@ -155,22 +205,35 @@ const generateLookupFunction = (index, ctx) => {
155
205
  const field = findRowField(entity, columnName);
156
206
  const fieldName = field?.name ?? index.columns[0];
157
207
  const isUnique = index.isUnique || index.isPrimary;
208
+ // Check if this index column corresponds to an FK relation
209
+ const relation = findRelationForColumn(entity, columnName);
210
+ // Use semantic param name if FK relation exists, otherwise use field name
211
+ const paramName = relation
212
+ ? deriveSemanticName(relation, columnName)
213
+ : fieldName;
214
+ // For semantic naming, use indexed access type (Post["userId"])
215
+ // For regular naming, use Pick<Post, "fieldName">
216
+ const useSemanticNaming = relation !== undefined && paramName !== fieldName;
158
217
  const parts = {
159
218
  templateParts: [`select * from ${entity.schemaName}.${entity.pgName} where ${columnName} = `, ""],
160
- params: [b.identifier(fieldName)],
219
+ params: [b.identifier(paramName)],
161
220
  };
162
- const fnName = generateLookupName(entity, index);
221
+ const fnName = generateLookupName(entity, index, relation);
222
+ // Build the parameter - use indexed access type for semantic naming
223
+ const paramNode = useSemanticNaming
224
+ ? param.typed(paramName, ts.indexedAccess(ts.ref(rowType), ts.literal(fieldName)))
225
+ : param.pick([fieldName], rowType);
163
226
  if (isUnique) {
164
227
  // Extract first row for unique lookups
165
228
  const queryExpr = hex.query(sqlStyle, parts, ts.array(ts.ref(rowType)));
166
229
  const varDecl = hex.firstRowDecl(sqlStyle, "result", queryExpr);
167
- return hex.exportFn(hex.asyncFn(fnName, [param.pick([fieldName], rowType)], [
230
+ return hex.exportFn(hex.asyncFn(fnName, [paramNode], [
168
231
  varDecl,
169
232
  b.returnStatement(b.identifier("result")),
170
233
  ]));
171
234
  }
172
235
  // Non-unique: return all matching rows
173
- return hex.exportFn(hex.asyncFn(fnName, [param.pick([fieldName], rowType)], hex.returnQuery(sqlStyle, parts, ts.array(ts.ref(rowType)))));
236
+ return hex.exportFn(hex.asyncFn(fnName, [paramNode], hex.returnQuery(sqlStyle, parts, ts.array(ts.ref(rowType)))));
174
237
  };
175
238
  /** Generate lookup functions for all eligible indexes, deduplicating by name */
176
239
  const generateLookupFunctions = (ctx) => {
@@ -178,7 +241,9 @@ const generateLookupFunctions = (ctx) => {
178
241
  return ctx.entity.indexes
179
242
  .filter(index => shouldGenerateLookup(index) && !index.isPrimary)
180
243
  .filter(index => {
181
- const name = generateLookupName(ctx.entity, index);
244
+ const columnName = index.columnNames[0];
245
+ const relation = findRelationForColumn(ctx.entity, columnName);
246
+ const name = generateLookupName(ctx.entity, index, relation);
182
247
  if (seen.has(name))
183
248
  return false;
184
249
  seen.add(name);
@@ -200,7 +265,7 @@ export const sqlQueriesPlugin = definePlugin({
200
265
  },
201
266
  run: (ctx, config) => {
202
267
  const enums = getEnumEntities(ctx.ir);
203
- const sqlStyle = config.sqlStyle ?? "tag";
268
+ const { sqlStyle } = config;
204
269
  getTableEntities(ctx.ir)
205
270
  .filter(entity => entity.tags.omit !== true)
206
271
  .forEach(entity => {