38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
"""Seed the database with a dev user."""
|
|
import asyncio
|
|
import os
|
|
from sqlalchemy import select
|
|
|
|
from database import engine, async_session, Base
|
|
from models import User
|
|
from auth import get_password_hash
|
|
|
|
DEV_USER_EMAIL = os.environ["DEV_USER_EMAIL"]
|
|
DEV_USER_PASSWORD = os.environ["DEV_USER_PASSWORD"]
|
|
|
|
|
|
async def seed():
|
|
async with engine.begin() as conn:
|
|
await conn.run_sync(Base.metadata.create_all)
|
|
|
|
async with async_session() as db:
|
|
result = await db.execute(select(User).where(User.email == DEV_USER_EMAIL))
|
|
user = result.scalar_one_or_none()
|
|
|
|
if user:
|
|
user.hashed_password = get_password_hash(DEV_USER_PASSWORD)
|
|
await db.commit()
|
|
print(f"Updated dev user: {DEV_USER_EMAIL} / {DEV_USER_PASSWORD}")
|
|
else:
|
|
user = User(
|
|
email=DEV_USER_EMAIL,
|
|
hashed_password=get_password_hash(DEV_USER_PASSWORD),
|
|
)
|
|
db.add(user)
|
|
await db.commit()
|
|
print(f"Created dev user: {DEV_USER_EMAIL} / {DEV_USER_PASSWORD}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(seed())
|
|
|