feat(routers): add executions, backups, and settings endpoints

This commit is contained in:
2026-05-11 22:01:31 +02:00
parent b2d196498b
commit b4a22a1c44
3 changed files with 94 additions and 6 deletions
+41 -2
View File
@@ -1,4 +1,43 @@
from fastapi import APIRouter
from fastapi import APIRouter, Depends, HTTPException
from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy import select
from typing import List
from app.database import get_db
from app.models import Setting
from app.schemas import Setting as SettingSchema, SettingUpdate
router = APIRouter(prefix="/api/settings", tags=["settings"])
# Will be implemented in later tasks
@router.get("/", response_model=List[SettingSchema])
async def list_settings(db: AsyncSession = Depends(get_db)):
result = await db.execute(select(Setting))
settings = result.scalars().all()
return settings
@router.get("/{key}", response_model=SettingSchema)
async def get_setting(key: str, db: AsyncSession = Depends(get_db)):
result = await db.execute(select(Setting).where(Setting.key == key))
setting = result.scalar_one_or_none()
if not setting:
raise HTTPException(status_code=404, detail="Setting not found")
return setting
@router.put("/{key}", response_model=SettingSchema)
async def update_setting(
key: str,
setting_update: SettingUpdate,
db: AsyncSession = Depends(get_db)
):
result = await db.execute(select(Setting).where(Setting.key == key))
setting = result.scalar_one_or_none()
if not setting:
# Create if not exists
setting = Setting(key=key, value=setting_update.value)
db.add(setting)
else:
setting.value = setting_update.value
await db.commit()
await db.refresh(setting)
return setting