Coverage for src / avisos / services / aviso_service.py: 100%
31 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-18 14:29 -0300
« prev ^ index » next coverage.py v7.13.5, created at 2026-03-18 14:29 -0300
1"""Regras de negocio do modulo avisos."""
3from sqlalchemy import select
4from sqlalchemy.orm import Session
6from src.avisos.models import Aviso
7from src.avisos.schemas import AvisoCreateSchema, AvisoUpdateSchema
10def list_avisos(db: Session) -> list[Aviso]:
11 """Lista avisos cadastrados."""
12 return list(db.scalars(select(Aviso).order_by(Aviso.id)))
15def get_aviso_by_id(db: Session, aviso_id: int) -> Aviso | None:
16 """Busca aviso por id."""
17 return db.get(Aviso, aviso_id)
20def create_aviso(db: Session, payload: AvisoCreateSchema) -> Aviso:
21 """Cria aviso e persiste no banco."""
22 aviso = Aviso(**payload.model_dump())
23 db.add(aviso)
24 db.commit()
25 db.refresh(aviso)
26 return aviso
29def update_aviso(
30 db: Session, aviso: Aviso, payload: AvisoCreateSchema
31) -> Aviso:
32 """Substitui os dados do aviso existente (PUT)."""
33 for key, value in payload.model_dump().items():
34 setattr(aviso, key, value)
36 db.add(aviso)
37 db.commit()
38 db.refresh(aviso)
39 return aviso
42def patch_aviso(
43 db: Session, aviso: Aviso, payload: AvisoUpdateSchema
44) -> Aviso:
45 """Atualiza parcialmente os dados do aviso (PATCH)."""
46 for key, value in payload.model_dump(exclude_unset=True).items():
47 setattr(aviso, key, value)
49 db.add(aviso)
50 db.commit()
51 db.refresh(aviso)
52 return aviso
55def delete_aviso(db: Session, aviso: Aviso) -> None:
56 """Remove aviso do banco."""
57 db.delete(aviso)
58 db.commit()