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.core.config import settings
|
||||||
from app.db.database import Base
|
from app.db.database import Base
|
||||||
|
import app.models.user
|
||||||
|
|
||||||
config = context.config
|
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
|
from app.core.config import settings
|
||||||
|
|
||||||
|
|
||||||
engine = create_engine(
|
engine = create_engine(
|
||||||
settings.database_url,
|
settings.database_url,
|
||||||
echo=False
|
echo=False
|
||||||
|
|
@ -20,11 +19,13 @@ SessionLocal = sessionmaker(
|
||||||
class Base(DeclarativeBase):
|
class Base(DeclarativeBase):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
# <<< HIER IMPORTIEREN >>>
|
||||||
|
import app.models.user
|
||||||
|
|
||||||
|
|
||||||
def get_db():
|
def get_db():
|
||||||
db = SessionLocal()
|
db = SessionLocal()
|
||||||
try:
|
try:
|
||||||
yield db
|
yield db
|
||||||
finally:
|
finally:
|
||||||
db.close()
|
db.close()
|
||||||
import app.models.user
|
|
||||||
|
|
@ -1,12 +1,27 @@
|
||||||
from fastapi import FastAPI
|
from fastapi import FastAPI
|
||||||
|
from app.api.users import router as users_router
|
||||||
|
|
||||||
from app.db.health import check_database
|
from app.db.health import check_database
|
||||||
|
|
||||||
|
from fastapi.middleware.cors import CORSMiddleware
|
||||||
|
|
||||||
app = FastAPI(
|
app = FastAPI(
|
||||||
title="Hermes API",
|
title="Hermes API",
|
||||||
version="0.1.0",
|
version="0.1.0",
|
||||||
description="Backend von Olympus"
|
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("/")
|
@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",
|
"python-multipart>=0.0.32",
|
||||||
"sqlalchemy>=2.0.51",
|
"sqlalchemy>=2.0.51",
|
||||||
"uvicorn>=0.49.0",
|
"uvicorn>=0.49.0",
|
||||||
|
"email-validator>=2.2.0",
|
||||||
]
|
]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue