54 lines
1.4 KiB
Python
54 lines
1.4 KiB
Python
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
|