Benutzerverwaltung begonnen

This commit is contained in:
Schubert Ferenc 2026-07-02 00:00:33 +02:00
parent d8ddc4c416
commit c4d27a1187
7 changed files with 88 additions and 3 deletions

View file

@ -7,6 +7,7 @@ from alembic import context
from app.core.config import settings
from app.db.database import Base
import app.models.user
config = context.config

View file

@ -0,0 +1,24 @@
from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session
from app.db.database import get_db
from app.repositories.user_repository import UserRepository
from app.schemas.user import UserCreate, UserResponse
router = APIRouter(
prefix="/users",
tags=["Users"]
)
@router.get("/", response_model=list[UserResponse])
def get_users(db: Session = Depends(get_db)):
return UserRepository.get_all(db)
@router.post("/", response_model=UserResponse)
def create_user(
user: UserCreate,
db: Session = Depends(get_db)
):
return UserRepository.create(db, user)

View file

@ -4,7 +4,6 @@ from sqlalchemy.orm import sessionmaker
from app.core.config import settings
engine = create_engine(
settings.database_url,
echo=False
@ -20,6 +19,9 @@ SessionLocal = sessionmaker(
class Base(DeclarativeBase):
pass
# <<< HIER IMPORTIEREN >>>
import app.models.user
def get_db():
db = SessionLocal()
@ -27,4 +29,3 @@ def get_db():
yield db
finally:
db.close()
import app.models.user

View file

@ -1,12 +1,27 @@
from fastapi import FastAPI
from app.api.users import router as users_router
from app.db.health import check_database
from fastapi.middleware.cors import CORSMiddleware
app = FastAPI(
title="Hermes API",
version="0.1.0",
description="Backend von Olympus"
)
app.add_middleware(
CORSMiddleware,
allow_origins=[
"http://localhost:3000",
"http://127.0.0.1:3000",
],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
app.include_router(users_router)
@app.get("/")

View file

@ -0,0 +1,26 @@
from sqlalchemy.orm import Session
from app.models.user import User
from app.schemas.user import UserCreate
class UserRepository:
@staticmethod
def get_all(db: Session):
return db.query(User).all()
@staticmethod
def create(db: Session, user: UserCreate):
db_user = User(
username=user.username,
email=user.email,
password_hash=user.password
)
db.add(db_user)
db.commit()
db.refresh(db_user)
return db_user

View file

@ -0,0 +1,17 @@
from pydantic import BaseModel, EmailStr
class UserCreate(BaseModel):
username: str
email: EmailStr
password: str
class UserResponse(BaseModel):
id: int
username: str
email: EmailStr
model_config = {
"from_attributes": True
}

View file

@ -14,4 +14,5 @@ dependencies = [
"python-multipart>=0.0.32",
"sqlalchemy>=2.0.51",
"uvicorn>=0.49.0",
"email-validator>=2.2.0",
]