| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- from typing import List, Optional
- from pydantic import BaseModel
- from enum import Enum
- class MappingStrategy(str, Enum):
- SKIP = "SKIP"
- OVERWRITE = "OVERWRITE"
- class MappingRowStatus(str, Enum):
- NEW = "NEW" # User exists, no mapping exists -> Ready to insert
- UPDATE = "UPDATE" # User exists, mapping exists -> Ready to update (if overwrite)
- ERROR = "ERROR" # User does not exist, or format error
- class MappingRowPreview(BaseModel):
- row_index: int
- mobile: str
- mapped_key: str
- mapped_email: Optional[str] = None
- status: MappingRowStatus
- message: Optional[str] = None
- user_id: Optional[int] = None
- class MappingPreviewResponse(BaseModel):
- total_rows: int
- valid_count: int
- error_count: int
- new_count: int
- update_count: int
- preview_rows: List[MappingRowPreview]
- class MappingImportSummary(BaseModel):
- total_processed: int
- inserted: int
- updated: int
- failed: int
- class MappingCreate(BaseModel):
- mobile: str
- mapped_key: Optional[str] = None
- mapped_email: Optional[str] = None
- class MappingResponse(BaseModel):
- id: int
- app_id: int
- user_id: int
- mapped_key: Optional[str] = None
- mapped_email: Optional[str] = None
- user_mobile: str # Convenient to have
- is_active: bool = True
- class Config:
- from_attributes = True
- class MappingList(BaseModel):
- total: int
- items: List[MappingResponse]
|