from pydantic import BaseModel from typing import Optional from datetime import date, datetime from enum import Enum class LocationType(str, Enum): ulke = "ulke" bolge = "bolge" il = "il" ilce = "ilce" bucak = "bucak" belde = "belde" koy = "koy" mahalle = "mahalle" diger = "diger" class Location(BaseModel): id: int parent_id: Optional[int] name: str slug: str type: LocationType latitude: Optional[float] longitude: Optional[float] is_active: bool created_at: datetime updated_at: datetime class LocationCreate(BaseModel): parent_id: Optional[int] = None name: str slug: str type: LocationType latitude: Optional[float] = None longitude: Optional[float] = None class LocationRetype(BaseModel): new_type: LocationType change_reason: str changed_by: Optional[int] = None # user_id class LocationReparent(BaseModel): new_parent_id: int change_reason: str changed_by: Optional[int] = None class LocationSplitFrom(BaseModel): source_id: int effective_at: date notes: Optional[str] = None class LocationMerge(BaseModel): source_ids: list[int] # birleşen lokasyonlar target_id: int # hedef (varsa) veya yeni oluşturulacak effective_at: date notes: Optional[str] = None change_reason: str changed_by: Optional[int] = None