Files
MABEA/backend/app/services/materialset.py
T
patrickandClaude Sonnet 5 52bf7d9ec9
CI / backend-tests (push) Successful in 2m55s
CI / frontend-build (push) Successful in 19s
feat(assets): ASSET-007 Material-Sets (Kits), ASSET-008 Consumable-Doku korrigiert
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV
2026-09-10 15:22:02 +02:00

53 lines
1.8 KiB
Python

import uuid
from decimal import Decimal
from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession
from app.models.materialset import MaterialSet, MaterialSetMitglied
async def erstelle_set(db: AsyncSession, *, name: str, beschreibung: str | None, code: str | None) -> MaterialSet:
material_set = MaterialSet(name=name, beschreibung=beschreibung, code=code)
db.add(material_set)
await db.flush()
return material_set
async def liste_sets(db: AsyncSession) -> list[MaterialSet]:
result = await db.execute(select(MaterialSet))
return list(result.scalars().all())
async def aendere_set(db: AsyncSession, material_set: MaterialSet, **felder) -> MaterialSet:
for feld, wert in felder.items():
if wert is not None:
setattr(material_set, feld, wert)
await db.flush()
return material_set
async def loesche_set(db: AsyncSession, material_set: MaterialSet) -> None:
await db.delete(material_set)
async def mitglieder_fuer_set(db: AsyncSession, set_id: uuid.UUID) -> list[MaterialSetMitglied]:
result = await db.execute(select(MaterialSetMitglied).where(MaterialSetMitglied.set_id == set_id))
return list(result.scalars().all())
async def setze_mitglied(db: AsyncSession, set_id: uuid.UUID, material_id: int, menge: Decimal) -> None:
bestehend = await db.get(MaterialSetMitglied, {"set_id": set_id, "material_id": material_id})
if bestehend is not None:
bestehend.menge = menge
else:
db.add(MaterialSetMitglied(set_id=set_id, material_id=material_id, menge=menge))
await db.flush()
async def entferne_mitglied(db: AsyncSession, set_id: uuid.UUID, material_id: int) -> None:
bestehend = await db.get(MaterialSetMitglied, {"set_id": set_id, "material_id": material_id})
if bestehend is not None:
await db.delete(bestehend)
await db.flush()