"""Schemata der Anwendungseinstellungen.""" from datetime import date from typing import Annotated from pydantic import Field from app.core.clock import MAX_MONTH_START_DAY, MIN_MONTH_START_DAY from app.schemas.common import ApiModel, InputModel MonthStartDay = Annotated[ int, Field( ge=MIN_MONTH_START_DAY, le=MAX_MONTH_START_DAY, description="Tag, an dem der Abrechnungsmonat beginnt – üblicherweise der Gehaltstag. " "Ein Wert jenseits der Monatslänge trifft den Monatsletzten.", ), ] class AppSettingsOut(ApiModel): """Die gültigen Einstellungen samt aktuellem Abrechnungsmonat.""" month_start_day: MonthStartDay current_month: date = Field( description="Bezeichner des laufenden Abrechnungsmonats – immer ein Monatserster." ) current_period_start: date current_period_end: date class AppSettingsIn(InputModel): """Änderbare Einstellungen.""" month_start_day: MonthStartDay