41 lines
1.6 KiB
Python
41 lines
1.6 KiB
Python
|
|
import asyncio
|
||
|
|
from database import AsyncSessionLocal
|
||
|
|
from models import Category
|
||
|
|
|
||
|
|
def create_slug(name: str) -> str:
|
||
|
|
"""Convert name to slug"""
|
||
|
|
return name.lower().replace(" ", "-").replace("&", "and")
|
||
|
|
|
||
|
|
async def seed_categories():
|
||
|
|
"""Seed initial categories"""
|
||
|
|
default_categories = [
|
||
|
|
{"name": "Phones", "slug": "phones", "description": "Smartphones and mobile devices"},
|
||
|
|
{"name": "Laptops", "slug": "laptops", "description": "Portable computers and notebooks"},
|
||
|
|
{"name": "Tablets", "slug": "tablets", "description": "Tablet devices and e-readers"},
|
||
|
|
{"name": "Wearables", "slug": "wearables", "description": "Smartwatches and fitness trackers"},
|
||
|
|
{"name": "Accessories", "slug": "accessories", "description": "Tech accessories and peripherals"},
|
||
|
|
{"name": "Gaming", "slug": "gaming", "description": "Gaming consoles and accessories"},
|
||
|
|
{"name": "Audio", "slug": "audio", "description": "Headphones, speakers, and audio equipment"},
|
||
|
|
]
|
||
|
|
|
||
|
|
async with AsyncSessionLocal() as db:
|
||
|
|
# Check if categories already exist
|
||
|
|
from sqlalchemy import select
|
||
|
|
result = await db.execute(select(Category))
|
||
|
|
existing = result.scalars().all()
|
||
|
|
|
||
|
|
if existing:
|
||
|
|
print(f"✓ Categories already exist ({len(existing)} found)")
|
||
|
|
return
|
||
|
|
|
||
|
|
# Add categories
|
||
|
|
for cat_data in default_categories:
|
||
|
|
category = Category(**cat_data)
|
||
|
|
db.add(category)
|
||
|
|
|
||
|
|
await db.commit()
|
||
|
|
print(f"✓ Seeded {len(default_categories)} categories successfully")
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
asyncio.run(seed_categories())
|