Source code for dakweb.routers.suite

# SPDX-License-Identifier:  GPL-2.0-or-later
# © 2026, Ansgar 🙀 <ansgar@debian.org>
# © 2026, Anton Gladky <gladk@debian.org>

from fastapi import APIRouter, Depends, HTTPException
from pydantic import BaseModel
from sqlalchemy import select
from sqlalchemy.orm import Session

from daklib.dbconn import Suite, get_suite
from dakweb.routers.deps import get_db

router = APIRouter()


[docs] class SuiteResponse(BaseModel): name: str codename: str | None dakname: str | None archive: str architectures: list[str] components: list[str]
[docs] @router.get("/suites") def suites(db: Session = Depends(get_db)) -> list[SuiteResponse]: """Give information about all known suites.""" stmt = select(Suite).order_by(Suite.suite_name) return [ SuiteResponse( name=p.release_suite_output, codename=p.codename, dakname=p.suite_name, archive=p.archive.archive_name, architectures=[x.arch_string for x in p.architectures], components=[x.component_name for x in p.components], ) for p in db.scalars(stmt) ]
[docs] @router.get("/suite/{suite}") def suite(suite: str, db: Session = Depends(get_db)) -> SuiteResponse: """Give information about a single suite, identified by name or codename.""" so = get_suite(suite, session=db) if so is None: raise HTTPException(status_code=404, detail="Not found") return SuiteResponse( name=so.release_suite_output, codename=so.codename, dakname=so.suite_name, archive=so.archive.archive_name, architectures=[x.arch_string for x in so.architectures], components=[x.component_name for x in so.components], )