fix(console): deduplicate models and engines in vehicle navigation
Models and engines tables have many duplicate names (e.g. 24 ASTRA rows, 210 F-150 rows, 398 "5.7L 350CID V8" rows). Changed get_models() and get_engines() to use GROUP BY UPPER(name) instead of DISTINCT on id+name so each model/engine appears only once in the navigation lists. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -67,16 +67,17 @@ class Database:
|
||||
if brand:
|
||||
return self._query(
|
||||
"""
|
||||
SELECT DISTINCT m.id, m.name
|
||||
SELECT MIN(m.id) AS id, m.name
|
||||
FROM models m
|
||||
JOIN brands b ON m.brand_id = b.id
|
||||
WHERE UPPER(b.name) = UPPER(?)
|
||||
GROUP BY UPPER(m.name)
|
||||
ORDER BY m.name
|
||||
""",
|
||||
(brand,),
|
||||
)
|
||||
return self._query(
|
||||
"SELECT id, name FROM models ORDER BY name"
|
||||
"SELECT MIN(id) AS id, name FROM models GROUP BY UPPER(name) ORDER BY name"
|
||||
)
|
||||
|
||||
def get_years(
|
||||
@@ -109,8 +110,13 @@ class Database:
|
||||
) -> list[dict]:
|
||||
"""Return engines, optionally filtered by brand/model/year."""
|
||||
sql = """
|
||||
SELECT DISTINCT e.id, e.name, e.displacement_cc, e.cylinders,
|
||||
e.fuel_type, e.power_hp, e.torque_nm, e.engine_code
|
||||
SELECT MIN(e.id) AS id, e.name,
|
||||
MAX(e.displacement_cc) AS displacement_cc,
|
||||
MAX(e.cylinders) AS cylinders,
|
||||
MAX(e.fuel_type) AS fuel_type,
|
||||
MAX(e.power_hp) AS power_hp,
|
||||
MAX(e.torque_nm) AS torque_nm,
|
||||
MAX(e.engine_code) AS engine_code
|
||||
FROM engines e
|
||||
JOIN model_year_engine mye ON e.id = mye.engine_id
|
||||
JOIN models m ON mye.model_id = m.id
|
||||
@@ -128,7 +134,7 @@ class Database:
|
||||
if year:
|
||||
sql += " AND y.year = ?"
|
||||
params.append(int(year))
|
||||
sql += " ORDER BY e.name"
|
||||
sql += " GROUP BY UPPER(e.name) ORDER BY e.name"
|
||||
return self._query(sql, tuple(params))
|
||||
|
||||
def get_model_year_engine(
|
||||
|
||||
Reference in New Issue
Block a user