+Upload
This commit is contained in:
45
server/crud.py
Normal file
45
server/crud.py
Normal 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
|
Reference in New Issue
Block a user