from typing import Literal

from pydantic import BaseModel


class NumberFormatConfig(BaseModel):
    thousand_separator: str = ","   # ',' | '.' | ' ' | ''
    decimal_separator: str = "."    # '.' | ','
    decimal_places: int = 0         # 0–4
    negative_format: str = "prefix" # 'prefix' | 'suffix' | 'parentheses'
    negative_color: bool = False    # True = tampilkan merah


class SystemStatusResponse(BaseModel):
    maintenance_mode: bool
    environment_mode: str  # 'development' or 'production'
    number_format: NumberFormatConfig = NumberFormatConfig()


class SystemSettingsUpdate(BaseModel):
    maintenance_mode: bool | None = None
    environment_mode: str | None = None  # 'development' or 'production'
    number_format: NumberFormatConfig | None = None


TruncateGroup = Literal[
    "penjualan",
    "stock",
    "penebusan_penerimaan",
    "expenses_penyetoran",
    "end_to_end",
    "all",
]


class TruncateRequest(BaseModel):
    group: TruncateGroup


class TruncateResponse(BaseModel):
    message: str
    rows_deleted: int
