This commit is contained in:
Robin
2025-10-04 20:08:48 +02:00
commit f05dda95c3
17 changed files with 330 additions and 0 deletions

45
server/crud.py Normal file
View File

@@ -0,0 +1,45 @@
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