Initial commit - PromptTech
This commit is contained in:
40
backend/seed_categories.py
Normal file
40
backend/seed_categories.py
Normal file
@@ -0,0 +1,40 @@
|
||||
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())
|
||||
Reference in New Issue
Block a user