from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.future import select import models import schemas from security import get_password_hash, verify_password # --- User CRUD --- async def get_user_by_username(db: AsyncSession, username: str): result = await db.execute(select(models.User).filter(models.User.username == username)) return result.scalars().first() async def create_user(db: AsyncSession, user: schemas.UserCreate): hashed_password = get_password_hash(user.password) db_user = models.User(username=user.username, hashed_password=hashed_password) db.add(db_user) await db.commit() await db.refresh(db_user) return db_user async def authenticate_user(db: AsyncSession, username: str, password: str): user = await get_user_by_username(db, username=username) if not user: return False if not verify_password(password, user.hashed_password): return False return user # --- Server CRUD --- async def get_server(db: AsyncSession, server_id: int): result = await db.execute(select(models.Server).filter(models.Server.id == server_id)) return result.scalars().first() async def get_servers(db: AsyncSession, skip: int = 0, limit: int = 100): result = await db.execute(select(models.Server).offset(skip).limit(limit)) return result.scalars().all() async def create_server(db: AsyncSession, server: schemas.ServerCreate, owner_id: int): db_server = models.Server(**server.dict(), owner_id=owner_id) db.add(db_server) await db.commit() await db.refresh(db_server) return db_server