from fastapi import APIRouter, Depends, HTTPException, status from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy import select from pydantic import BaseModel, ConfigDict from typing import List, Optional import uuid from app.core.database import get_db from app.models.system import System from app.api import deps router = APIRouter() class SystemBase(BaseModel): name: str description: Optional[str] = None is_active: bool = True class SystemCreate(SystemBase): pass class SystemUpdate(SystemBase): name: Optional[str] = None description: Optional[str] = None is_active: Optional[bool] = None class SystemResponse(SystemBase): id: uuid.UUID model_config = ConfigDict(from_attributes=True) @router.get("/", response_model=List[SystemResponse]) async def read_systems( skip: int = 0, limit: int = 100, db: AsyncSession = Depends(get_db), current_user = Depends(deps.get_current_active_superuser) ): query = select(System).offset(skip).limit(limit) result = await db.execute(query) return result.scalars().all() @router.post("/", response_model=SystemResponse) async def create_system( system: SystemCreate, db: AsyncSession = Depends(get_db), current_user = Depends(deps.get_current_active_superuser) ): db_system = System(**system.model_dump()) db.add(db_system) await db.commit() await db.refresh(db_system) return db_system