Files
loom/backend/app/api/v1/platforms.py
T
2026-04-24 17:46:03 +08:00

40 lines
1.5 KiB
Python

from __future__ import annotations
from fastapi import APIRouter, Depends
from app.core.deps import DbDep, require_perm
from app.core.exceptions import ok
from app.schemas.platform import PlatformCreate, PlatformRead, PlatformUpdate
from app.services import platform_service
router = APIRouter(prefix="/platforms", tags=["platform"])
@router.get("", dependencies=[Depends(require_perm("product:suite:view"))])
async def list_platforms(db: DbDep) -> dict:
return ok([p.model_dump() for p in await platform_service.list_all(db)])
@router.post("", dependencies=[Depends(require_perm("product:suite:create"))])
async def create_platform(data: PlatformCreate, db: DbDep) -> dict:
p = await platform_service.create(db, data)
return ok(PlatformRead(
id=p.id, code=p.code, name=p.name, url=p.url, description=p.description,
status=p.status, product_count=0,
).model_dump())
@router.patch("/{pid}", dependencies=[Depends(require_perm("product:suite:update"))])
async def update_platform(pid: int, data: PlatformUpdate, db: DbDep) -> dict:
p = await platform_service.update(db, pid, data)
return ok(PlatformRead(
id=p.id, code=p.code, name=p.name, url=p.url, description=p.description,
status=p.status, product_count=0,
).model_dump())
@router.delete("/{pid}", dependencies=[Depends(require_perm("product:suite:delete"))])
async def delete_platform(pid: int, db: DbDep) -> dict:
await platform_service.delete(db, pid)
return ok()