Benutzerverwaltung begonnen
This commit is contained in:
parent
d8ddc4c416
commit
c4d27a1187
7 changed files with 88 additions and 3 deletions
|
|
@ -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
|
||||
|
||||
|
|
|
|||
24
backend/hermes/app/api/users.py
Normal file
24
backend/hermes/app/api/users.py
Normal 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)
|
||||
|
|
@ -4,7 +4,6 @@ from sqlalchemy.orm import sessionmaker
|
|||
|
||||
from app.core.config import settings
|
||||
|
||||
|
||||
engine = create_engine(
|
||||
settings.database_url,
|
||||
echo=False
|
||||
|
|
@ -20,11 +19,13 @@ SessionLocal = sessionmaker(
|
|||
class Base(DeclarativeBase):
|
||||
pass
|
||||
|
||||
# <<< HIER IMPORTIEREN >>>
|
||||
import app.models.user
|
||||
|
||||
|
||||
def get_db():
|
||||
db = SessionLocal()
|
||||
try:
|
||||
yield db
|
||||
finally:
|
||||
db.close()
|
||||
import app.models.user
|
||||
db.close()
|
||||
|
|
@ -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("/")
|
||||
|
|
|
|||
26
backend/hermes/app/repositories/user_repository.py
Normal file
26
backend/hermes/app/repositories/user_repository.py
Normal 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
|
||||
17
backend/hermes/app/schemas/user.py
Normal file
17
backend/hermes/app/schemas/user.py
Normal 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
|
||||
}
|
||||
|
|
@ -14,4 +14,5 @@ dependencies = [
|
|||
"python-multipart>=0.0.32",
|
||||
"sqlalchemy>=2.0.51",
|
||||
"uvicorn>=0.49.0",
|
||||
"email-validator>=2.2.0",
|
||||
]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue