"""System settings schemas — read, upsert.""" from __future__ import annotations from pydantic import BaseModel, Field class SystemSettingsUpsert(BaseModel): company_name: str = Field(..., min_length=1, max_length=200) company_legal_form: str | None = Field(None, max_length=50) company_street: str = Field(..., min_length=1, max_length=255) company_city: str = Field(..., min_length=1, max_length=100) company_zip: str = Field(..., min_length=1, max_length=20) company_country: str = Field(..., min_length=2, max_length=2) tax_number: str | None = Field(None, max_length=50) vat_id: str | None = Field(None, max_length=50) iban: str | None = Field(None, max_length=34) bic: str | None = Field(None, max_length=11) bank_name: str | None = Field(None, max_length=100) ceo: str | None = Field(None, max_length=100) trade_register: str | None = Field(None, max_length=100) default_currency_id: str | None = None default_tax_id: str | None = None invoice_prefix: str = Field("RE-", max_length=20) quote_prefix: str = Field("AN-", max_length=20) payment_terms_days: int = Field(14, ge=0, le=365) # Theme customization theme_primary_color: str = Field("#2563eb", max_length=20) theme_accent_color: str = Field("#d946ef", max_length=20) theme_font_family: str = Field("Inter", max_length=100) theme_border_radius: str = Field("0.5rem", max_length=20) # Backup configuration backup_interval: str = Field("daily", max_length=20, description="Backup interval: hourly, daily, weekly, manual") backup_retention_days: int = Field(7, ge=1, le=365, description="Days to keep backups") backup_destination: str = Field("local", max_length=20, description="Backup destination: local, s3, nextcloud") class SystemSettingsResponse(BaseModel): id: str company_name: str company_legal_form: str | None = None company_street: str company_city: str company_zip: str company_country: str tax_number: str | None = None vat_id: str | None = None iban: str | None = None bic: str | None = None bank_name: str | None = None ceo: str | None = None trade_register: str | None = None default_currency_id: str | None = None default_tax_id: str | None = None invoice_prefix: str = "RE-" quote_prefix: str = "AN-" payment_terms_days: int = 14 # Theme customization theme_primary_color: str = "#2563eb" theme_accent_color: str = "#d946ef" theme_font_family: str = "Inter" theme_border_radius: str = "0.5rem" # Backup configuration backup_interval: str = "daily" backup_retention_days: int = 7 backup_destination: str = "local" created_at: str | None = None updated_at: str | None = None