40 lines
1.3 KiB
Plaintext
40 lines
1.3 KiB
Plaintext
---
|
|
description: SQL conventions — no table aliases; columns are always prefixed
|
|
globs: "**/*.{js,sql,php}"
|
|
alwaysApply: false
|
|
---
|
|
|
|
# SQL rules
|
|
|
|
All tables use **prefixed column names** (`sim_uuid`, `own_usr_id`, `usr_uuid`, `ekfs_agent_id`, …). There is never column ambiguity across joins, so **do not use table aliases**.
|
|
|
|
## Do not
|
|
|
|
- Short table aliases: `s`, `o`, `u`, `ekfs`, etc.
|
|
- Qualified columns when an alias was the only reason: `s.sim_uuid`, `o.own_sim_uuid`
|
|
|
|
## Do
|
|
|
|
- Join on bare prefixed column names.
|
|
- Use full table names (or `${qualified}` template vars) in `FROM` / `JOIN` only — no alias after the table.
|
|
|
|
```sql
|
|
-- BAD
|
|
SELECT s.sim_name, BIN_TO_UUID(s.sim_uuid) AS simulationUuid
|
|
FROM `p42SIM`.simulations s
|
|
INNER JOIN `p42GUI`.simowners o ON o.own_sim_uuid = s.sim_uuid
|
|
INNER JOIN `p42GUI`.users u ON o.own_usr_id = u.usr_id
|
|
WHERE u.usr_uuid = ? AND s.sim_uuid = UUID_TO_BIN(?)
|
|
|
|
-- GOOD
|
|
SELECT sim_name, BIN_TO_UUID(sim_uuid) AS simulationUuid
|
|
FROM `p42SIM`.simulations
|
|
INNER JOIN `p42GUI`.simowners ON own_sim_uuid = sim_uuid
|
|
INNER JOIN `p42GUI`.users ON own_usr_id = usr_id
|
|
WHERE usr_uuid = ? AND sim_uuid = UUID_TO_BIN(?)
|
|
```
|
|
|
|
`AS` on **result columns** (e.g. `AS simulationUuid` for the API) is fine — that is not a table alias.
|
|
|
|
When adding a query, read an existing join in the same repo first and match its style.
|