Files
replicator/app/models/migration.py
2026-03-08 20:21:15 +09:00

68 lines
1.9 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from pydantic import BaseModel, Field
from datetime import datetime
from typing import List, Dict, Any, Optional
class MigrationStatus(BaseModel):
"""Статус миграции"""
is_running: bool = False
current_table: Optional[str] = None
progress: float = 0.0
start_time: Optional[datetime] = None
estimated_completion: Optional[datetime] = None
class TableInfo(BaseModel):
"""Информация о таблице"""
name: str
row_count: int
last_replication: Optional[datetime] = None
columns: List[str] = Field(default_factory=list)
has_pk: bool = False
has_date_column: bool = False
class MigrationRequest(BaseModel):
"""Запрос на миграцию"""
tables: Optional[List[str]] = None
full_reload: bool = False
send_email: bool = True
parallel_workers: int = 1
class MigrationResponse(BaseModel):
"""Ответ на запрос миграции"""
success: bool
message: str
task_id: Optional[str] = None
start_time: datetime = Field(default_factory=datetime.now)
class MigrationReport(BaseModel):
"""Отчет о миграции"""
summary: Dict[str, Any]
successful_tables: List[Dict[str, Any]]
failed_tables: List[Dict[str, Any]]
schema_changes: List[Dict[str, Any]]
errors: List[Dict[str, Any]]
class Config:
json_encoders = {
datetime: lambda v: v.isoformat()
}
class ColumnInfo(BaseModel):
"""Информация о колонке"""
name: str
type: str
nullable: bool
max_length: Optional[int] = None
default: Optional[str] = None
class SchemaDiff(BaseModel):
"""Различия в схемах"""
new_columns: List[ColumnInfo] = Field(default_factory=list)
missing_columns: List[str] = Field(default_factory=list)
type_mismatches: List[Dict[str, str]] = Field(default_factory=list)