FastAPI + PostgreSQL 16. KYC, issue sistemi, permission/group yönetimi, session yönetimi, API client auth (kışla kapısı), officials/persons CRUD. Migration 0001–0013 dahil.
65 lines
1.5 KiB
Python
65 lines
1.5 KiB
Python
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
|