40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
from datetime import date
|
|
from fastapi import APIRouter, Depends
|
|
from sqlmodel import Session, select
|
|
from app.database import get_session
|
|
from app.models.settings import UserSettings, LunarCalendarEntry
|
|
|
|
router = APIRouter(tags=["réglages"])
|
|
|
|
|
|
@router.get("/settings")
|
|
def get_settings(session: Session = Depends(get_session)):
|
|
rows = session.exec(select(UserSettings)).all()
|
|
return {r.cle: r.valeur for r in rows}
|
|
|
|
|
|
@router.put("/settings")
|
|
def update_settings(data: dict, session: Session = Depends(get_session)):
|
|
for cle, valeur in data.items():
|
|
row = session.exec(select(UserSettings).where(UserSettings.cle == cle)).first()
|
|
if row:
|
|
row.valeur = str(valeur)
|
|
else:
|
|
row = UserSettings(cle=cle, valeur=str(valeur))
|
|
session.add(row)
|
|
session.commit()
|
|
return {"ok": True}
|
|
|
|
|
|
@router.get("/lunar")
|
|
def get_lunar(month: str, session: Session = Depends(get_session)):
|
|
year, m = map(int, month.split("-"))
|
|
first = date(year, m, 1)
|
|
last_m, last_y = (m + 1, year) if m < 12 else (1, year + 1)
|
|
last = date(last_y, last_m, 1)
|
|
return session.exec(
|
|
select(LunarCalendarEntry)
|
|
.where(LunarCalendarEntry.jour >= first)
|
|
.where(LunarCalendarEntry.jour < last)
|
|
).all()
|