""" Create a test admin user directly in database """ import asyncio import sys sys.path.insert(0, r'C:\DEV\COPILOT\geutebruck-api\src\api') from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession from sqlalchemy.orm import sessionmaker from sqlalchemy import select from models.user import User, UserRole from passlib.context import CryptContext pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto") async def create_user(): DATABASE_URL = "postgresql+asyncpg://geutebruck:geutebruck@localhost:5432/geutebruck_api" engine = create_async_engine(DATABASE_URL, echo=False) async_session = sessionmaker(engine, class_=AsyncSession, expire_on_commit=False) async with async_session() as session: # Check if user already exists result = await session.execute(select(User).where(User.username == "admin")) existing_user = result.scalar_one_or_none() if existing_user: print(f"User 'admin' already exists") print(f" Username: admin") print(f" Role: {existing_user.role}") print(f" ID: {existing_user.id}") return # Create admin user password_hash = pwd_context.hash("admin123") user = User( username="admin", password_hash=password_hash, role=UserRole.ADMINISTRATOR ) session.add(user) await session.commit() print(f"Created admin user:") print(f" Username: admin") print(f" Password: admin123") print(f" Role: {user.role}") print(f" ID: {user.id}") await engine.dispose() if __name__ == "__main__": asyncio.run(create_user())