mirror of
https://github.com/zkldi/Tachi.git
synced 2026-09-22 23:18:05 +03:00
26 lines
1.2 KiB
Plaintext
26 lines
1.2 KiB
Plaintext
---
|
|
description: Fully qualify SQL/Kysely column names (table.alias prefix)
|
|
globs: typescript/server/**/*.ts
|
|
alwaysApply: false
|
|
---
|
|
|
|
# Fully qualified fields in queries
|
|
|
|
In Kysely `select`, `where`, `orderBy`, `join` conditions, and raw `sql` fragments, **always** qualify column names with the table or join alias. Do not use bare column names when the query references a table (including single-table queries, for consistency and safer refactors).
|
|
|
|
```typescript
|
|
// ❌ BAD - ambiguous once joins or CTEs are added; harder to grep
|
|
.select(["data", "chart_id", "user_id"])
|
|
.where("id", "=", id)
|
|
|
|
// ✅ GOOD
|
|
.select(["chart.data", "score.chart_id", "score.user_id"])
|
|
.where("chart.id", "=", chartId)
|
|
```
|
|
|
|
- Prefer the same alias the query uses in `from` / `innerJoin` (e.g. `chart`, `score`, `song`).
|
|
- For `sql` tagged templates, qualify identifiers the same way: `` sql`chart.data` ``, not bare `` sql`data` `` when `data` is a column name.
|
|
- When selecting with `as`, keep the qualified source on the left: `"chart.data as chart_data"` (see existing patterns in actions and queries).
|
|
|
|
This avoids duplicate-column errors, makes intent obvious in code review, and matches how API-facing selects are written alongside `db-formats` column lists.
|