async def radera_vattendrag(id: int, db: Db = Depends(on_database)): x: Optional[Vattendrag] = db.hamta_vattendrag(id) if x is None: raise fastapi.HTTPException( status_code=404, detail=f"Det finns inget vattendrag med id {id}.") db.radera_vattendrag(id)
async def skapa_nytt_lan(lan: Lan, db: Db = Depends(on_database)) -> Lan: x: Optional[Lan] = db.hamta_lan(lan.id) if x is not None: raise fastapi.HTTPException( status_code=409, detail=f"Det finns redan ett län med id {x.id}: {x.namn}" ) return db.spara_lan(lan)
async def radera_forsstracka(id: int, db: Db = Depends(on_database)): x: Optional[Forsstracka] = db.hamta_forsstracka(id) if x is None: raise fastapi.HTTPException( status_code=404, detail=f"Det finns ingen forssträcka med id {id}.") db.radera_forsstracka(id)
async def skapa_ny_forsstracka( forsstracka: Forsstracka, db: Db = Depends(on_database)) -> Forsstracka: if forsstracka.id is None: return db.spara_forsstracka(forsstracka) else: x: Optional[Forsstracka] = db.hamta_forsstracka(forsstracka.id) if x is not None: raise fastapi.HTTPException( status_code=409, detail= f"Det finns redan en forsstracka med id {forsstracka.id}.", ) return db.spara_forsstracka(forsstracka)
async def uppdatera_vattendrag( id: int, vattendrag: Vattendrag, db: Db = Depends(on_database)) -> Vattendrag: x: Optional[Vattendrag] = db.hamta_vattendrag(id) if x is None: raise fastapi.HTTPException( status_code=404, detail=f"Det finns inget vattendrag med id {id}.") if vattendrag.id != id: raise fastapi.HTTPException( status_code=409, detail=f"Vattendragets id kan inte ändras.") return db.spara_vattendrag(vattendrag)
async def uppdatera_lan(id: int, lan: Lan, db: Db = Depends(on_database)) -> Lan: x: Optional[Lan] = db.hamta_lan(id) if x is None: raise fastapi.HTTPException( status_code=404, detail=f"Det finns inget län med id {id}." ) if lan.id != id: raise fastapi.HTTPException( status_code=409, detail=f"Länets id kan inte ändras." ) return db.spara_lan(lan)
async def uppdatera_forsstracka( id: int, forsstracka: Forsstracka, db: Db = Depends(on_database)) -> Forsstracka: x: Optional[Forsstracka] = db.hamta_forsstracka(id) if x is None: raise fastapi.HTTPException( status_code=404, detail=f"Det finns inget forsstracka med id {id}.") if forsstracka.id != id: raise fastapi.HTTPException( status_code=409, detail=f"Forssträckans id kan inte ändras.") return db.spara_forsstracka(forsstracka)
async def hamta_forsstracka_beskrivning( id: int, db: Db = Depends(on_database)) -> Optional[ForsstrackaBeskrivning]: forsstracka_beskr = db.hamta_forsstracka_beskrivning(id) if forsstracka_beskr is None: raise fastapi.HTTPException(status_code=404) return forsstracka_beskr
async def uppdatera_forsstracka_beskrivnin( id: int, beskrivning: NyForsstrackaBeskrivning, db: Db = Depends(on_database) ) -> ForsstrackaBeskrivning: x: Optional[Forsstracka] = db.hamta_forsstracka(id) if x is None: raise fastapi.HTTPException( status_code=404, detail=f"Det finns inget forsstracka med id {id}.") beskr: ForsstrackaBeskrivning = ForsstrackaBeskrivning( beskrivning=beskrivning.beskrivning, uppdaterad=datetime.datetime.now(tz=datetime.timezone.utc), uppdaterad_av="???", ) return db.spara_forsstracka_beskrivning(id, beskr)
async def hamta_lan_med_id(id: int, db: Db = Depends(on_database)) -> Lan: lan = db.hamta_lan(id) if lan is None: raise fastapi.HTTPException(status_code=404) return lan
async def lista_alla_lan(db: Db = Depends(on_database)) -> LanCollection: return LanCollection(lan=db.lista_lan())
async def hamta_vattendrag_med_id( id: int, db: Db = Depends(on_database)) -> Vattendrag: vattendrag = db.hamta_vattendrag(id) if vattendrag is None: raise fastapi.HTTPException(status_code=404) return vattendrag
async def lista_forsstrackor(db: Db = Depends( on_database)) -> ForsstrackaCollection: return ForsstrackaCollection(forsstracka=db.lista_forsstracka())
async def dumpa_allt_data(db: Db = Depends(on_database)) -> DataDump: return DataDump( lan=db.lista_lan(), vattendrag=db.lista_vattendrag(), forsstracka=db.lista_forsstracka(), )
async def skapa_nytt_vattendrag( vattendrag: Vattendrag, db: Db = Depends(on_database)) -> Vattendrag: # ignorera eventuellt id i requestet vattendrag.id = -1 return db.spara_vattendrag(vattendrag)
async def hamta_forsstracka_med_id( id: int, db: Db = Depends(on_database)) -> Forsstracka: forsstracka = db.hamta_forsstracka(id) if forsstracka is None: raise fastapi.HTTPException(status_code=404) return forsstracka
async def lista_vattendrag(db: Db = Depends( on_database)) -> VattendragCollection: return VattendragCollection(vattendrag=db.lista_vattendrag())