from fastapi import FastAPI, Depends from sqlalchemy.orm import Session from models import User, Team from database import engine, SessionLocal app = FastAPI() def get_db(): db = SessionLocal() try: yield db finally: db.close() @app.post("/register") async def register_user(username: str, password: str, db: Session = Depends(get_db)): if User.exists(username, db): return {"error": "Username already exists"} user = User(username, password) db.add(user) db.commit() return {"message": "User created successfully"} @app.post("/login") async def login_user(username: str, password: str, db: Session = Depends(get_db)): user = User.authenticate(username, password, db) if user: return {"message": "Login successful"} return {"error": "Invalid username or password"} @app.get("/teams") async def get_teams(db: Session = Depends(get_db)): teams = db.query(Team).order_by(Team.created_at.desc()).all() return [{"id": team.id, "name": team.name} for team in teams] @app.post("/teams") async def create_team(name: str, db: Session = Depends(get_db)): team = Team(name) db.add(team) db.commit() return {"message": "Team created successfully"} @app.get("/users") async def get_users(db: Session = Depends(get_db)): users = db.query(User).order_by(User.created_at.desc()).all() return [{"id": user.id, "username": user.username, "profile": user.profile} for user in users] @app.get("/users/{user_id}") async def get_user(user_id: int, db: Session = Depends(get_db)): user = db.query(User).filter(User.id == user_id).first() if user: return {"username": user.username, "team": user.team.name, "profile": user.profile, "tags": user.tags} return {"error": "User not found"} @app.put("/users/{user_id}") async def update_user(user_id: int, team_id: int, profile: str, tags: str, db: Session = Depends(get_db)): user = db.query(User).filter(User.id == user_id).first() if user: user.team_id = team_id user.profile = profile user.tags = tags db.commit() return {"message": "User updated successfully"} return {"error": "User not found"}