new features
This commit is contained in:
@@ -1,18 +1,23 @@
|
||||
from pathlib import Path
|
||||
|
||||
from fastapi import APIRouter, Depends, HTTPException
|
||||
from pydantic import BaseModel
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.api.deps import get_current_user, get_db
|
||||
from app.models.router import Router
|
||||
from app.models.user import User
|
||||
from app.schemas.router import RouterCreate, RouterResponse, RouterTestConnection, RouterUpdate
|
||||
from app.schemas.router import RouterCreate, RouterPingStatus, RouterResponse, RouterTestConnection, RouterUpdate
|
||||
from app.services.router_service import router_service
|
||||
from app.services.settings_service import settings_service
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
class RouterPingBulkResponse(BaseModel):
|
||||
items: list[RouterPingStatus]
|
||||
|
||||
|
||||
def serialize_router(router: Router, global_settings) -> RouterResponse:
|
||||
has_router_key = bool((router.ssh_key or '').strip())
|
||||
has_global_key = bool((global_settings.global_ssh_key or '').strip())
|
||||
@@ -49,6 +54,12 @@ def list_routers(current_user: User = Depends(get_current_user), db: Session = D
|
||||
return [serialize_router(router, global_settings) for router in routers]
|
||||
|
||||
|
||||
@router.get('/ping-statuses', response_model=RouterPingBulkResponse)
|
||||
def list_ping_statuses(current_user: User = Depends(get_current_user), db: Session = Depends(get_db)):
|
||||
routers = db.query(Router).filter(Router.owner_id == current_user.id).all()
|
||||
return RouterPingBulkResponse(items=router_service.ping_many(routers))
|
||||
|
||||
|
||||
@router.post('', response_model=RouterResponse)
|
||||
def create_router(payload: RouterCreate, current_user: User = Depends(get_current_user), db: Session = Depends(get_db)):
|
||||
router_data = payload.model_dump()
|
||||
|
||||
Reference in New Issue
Block a user