mirror of
https://github.com/jkingsman/Remote-Terminal-for-MeshCore.git
synced 2026-03-28 17:43:05 +01:00
49 lines
1.6 KiB
Python
49 lines
1.6 KiB
Python
import logging
|
|
|
|
from fastapi import APIRouter
|
|
from pydantic import BaseModel, Field
|
|
|
|
from app.config import settings
|
|
|
|
logger = logging.getLogger(__name__)
|
|
router = APIRouter(prefix="/settings", tags=["settings"])
|
|
|
|
|
|
class AppSettingsResponse(BaseModel):
|
|
max_radio_contacts: int = Field(description="Maximum non-repeater contacts to keep on radio for DM ACKs")
|
|
|
|
|
|
class AppSettingsUpdate(BaseModel):
|
|
max_radio_contacts: int | None = Field(
|
|
default=None,
|
|
ge=1,
|
|
le=1000,
|
|
description="Maximum non-repeater contacts to keep on radio (1-1000)"
|
|
)
|
|
|
|
|
|
@router.get("", response_model=AppSettingsResponse)
|
|
async def get_settings() -> AppSettingsResponse:
|
|
"""Get current application settings."""
|
|
return AppSettingsResponse(
|
|
max_radio_contacts=settings.max_radio_contacts,
|
|
)
|
|
|
|
|
|
@router.patch("", response_model=AppSettingsResponse)
|
|
async def update_settings(update: AppSettingsUpdate) -> AppSettingsResponse:
|
|
"""Update application settings.
|
|
|
|
Note: Changes are applied immediately but not persisted across restarts.
|
|
Set MESHCORE_MAX_RADIO_CONTACTS environment variable for persistent changes.
|
|
"""
|
|
if update.max_radio_contacts is not None:
|
|
logger.info("Updating max_radio_contacts from %d to %d",
|
|
settings.max_radio_contacts, update.max_radio_contacts)
|
|
# Pydantic settings are mutable, we can update them directly
|
|
object.__setattr__(settings, 'max_radio_contacts', update.max_radio_contacts)
|
|
|
|
return AppSettingsResponse(
|
|
max_radio_contacts=settings.max_radio_contacts,
|
|
)
|