91 lines
3.4 KiB
Python
91 lines
3.4 KiB
Python
"""
|
|
Seed script: Beszúrja az "Autóbontó / Használt alkatrész" kategóriát
|
|
a marketplace.expertise_tags táblába, ha még nem létezik.
|
|
|
|
Idempotens - ON CONFLICT DO NOTHING miatt többször is futtatható.
|
|
|
|
Futtatás: docker exec sf_api python3 /app/backend/app/scripts/seed_dismantler_category.py
|
|
"""
|
|
|
|
import asyncio
|
|
import logging
|
|
from sqlalchemy import select, func
|
|
from app.db.session import AsyncSessionLocal
|
|
from app.models.marketplace.service import ExpertiseTag
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
DISMANTLER_CATEGORY = {
|
|
"key": "autobonto_hasznalt_alkatresz",
|
|
# --- 🏗️ i18n JSONB Migration (Phase 3) ---
|
|
"name_i18n": {"hu": "Autóbontó / Használt alkatrész", "en": "Car Dismantler / Used Parts"},
|
|
"name_hu": "Autóbontó / Használt alkatrész",
|
|
"name_en": "Car Dismantler / Used Parts",
|
|
"category": "parts",
|
|
"search_keywords": [
|
|
"bontó", "autóbontó", "bontás", "használt alkatrész",
|
|
"dismantler", "used parts", "scrap yard", "break yard",
|
|
"alkatrész bontás", "roncs", "roncsautó",
|
|
],
|
|
"description": "Használt gépjármű alkatrészek értékesítése, autóbontás, roncsautó felvásárlás",
|
|
}
|
|
|
|
|
|
async def seed_dismantler_category():
|
|
"""Beszúrja az Autóbontó kategóriát, ha még nem létezik."""
|
|
async with AsyncSessionLocal() as db:
|
|
try:
|
|
# Ellenőrizzük, hogy létezik-e már
|
|
stmt = select(ExpertiseTag).where(
|
|
ExpertiseTag.key == DISMANTLER_CATEGORY["key"]
|
|
)
|
|
result = await db.execute(stmt)
|
|
existing = result.scalar_one_or_none()
|
|
|
|
if existing:
|
|
print(
|
|
f"✅ Az 'Autóbontó / Használt alkatrész' kategória "
|
|
f"már létezik (ID: {existing.id}). Nincs szükség seed-elésre."
|
|
)
|
|
return
|
|
|
|
# Beszúrás
|
|
tag = ExpertiseTag(
|
|
key=DISMANTLER_CATEGORY["key"],
|
|
# --- 🏗️ i18n JSONB Migration (Phase 3) ---
|
|
name_i18n=DISMANTLER_CATEGORY.get("name_i18n", {"hu": DISMANTLER_CATEGORY["name_hu"], "en": DISMANTLER_CATEGORY["name_en"]}),
|
|
name_hu=DISMANTLER_CATEGORY["name_hu"],
|
|
name_en=DISMANTLER_CATEGORY["name_en"],
|
|
category=DISMANTLER_CATEGORY["category"],
|
|
search_keywords=DISMANTLER_CATEGORY["search_keywords"],
|
|
description=DISMANTLER_CATEGORY["description"],
|
|
is_official=True,
|
|
discovery_points=10,
|
|
usage_count=0,
|
|
)
|
|
db.add(tag)
|
|
await db.commit()
|
|
await db.refresh(tag)
|
|
print(
|
|
f"✅ Sikeresen beszúrva az 'Autóbontó / Használt alkatrész' "
|
|
f"kategória (ID: {tag.id})."
|
|
)
|
|
|
|
# Ellenőrzés
|
|
count_result = await db.execute(
|
|
select(func.count(ExpertiseTag.id))
|
|
)
|
|
final_count = count_result.scalar()
|
|
print(f"📊 Összes rekord az expertise_tags táblában: {final_count}")
|
|
|
|
except Exception as e:
|
|
await db.rollback()
|
|
logger.error(f"Hiba a seed-elés során: {e}")
|
|
print(f"❌ Hiba: {e}")
|
|
raise
|
|
|
|
|
|
if __name__ == "__main__":
|
|
logging.basicConfig(level=logging.INFO)
|
|
asyncio.run(seed_dismantler_category())
|