cleanup and fix runtime bugs
This commit is contained in:
@@ -16,14 +16,14 @@ from .enums import (
|
||||
|
||||
|
||||
class Base(DeclarativeBase):
|
||||
# Базовый класс для всех ORM-моделей.
|
||||
# База ORM.
|
||||
pass
|
||||
|
||||
|
||||
class Car(Base):
|
||||
# Основная сущность автомобиля в БД.
|
||||
# Автомобиль.
|
||||
__tablename__ = "cars"
|
||||
id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True)
|
||||
id: Mapped[int] = mapped_column(BigInteger().with_variant(Integer, "sqlite"), primary_key=True, autoincrement=True)
|
||||
parser_id: Mapped[str] = mapped_column(String(50), nullable=False, unique=True)
|
||||
brand: Mapped[str] = mapped_column(String(50), nullable=False)
|
||||
model: Mapped[str] = mapped_column(String(50), nullable=False)
|
||||
@@ -59,18 +59,18 @@ class Car(Base):
|
||||
|
||||
|
||||
class Image(Base):
|
||||
# Изображения автомобиля, привязанные к записи Car.
|
||||
# Картинки автомобиля.
|
||||
__tablename__ = "images"
|
||||
id: Mapped[int] = mapped_column(BigInteger().with_variant(Integer, "sqlite"), primary_key=True, autoincrement=True)
|
||||
fullres_image: Mapped[str] = mapped_column(String(), nullable=False)
|
||||
preview_image: Mapped[str] = mapped_column(String(), nullable=False)
|
||||
order_index: Mapped[int] = mapped_column(Integer, nullable=False)
|
||||
car_id: Mapped[int] = mapped_column(Integer, ForeignKey("cars.id", ondelete="CASCADE"), nullable=False)
|
||||
car_id: Mapped[int] = mapped_column(BigInteger, ForeignKey("cars.id", ondelete="CASCADE"), nullable=False)
|
||||
car: Mapped[Car] = relationship("Car", back_populates="images")
|
||||
|
||||
|
||||
class SyncRun(Base):
|
||||
# Служебная таблица для статистики запусков синхронизации.
|
||||
# Статистика синхронизаций.
|
||||
__tablename__ = "sync_runs"
|
||||
id: Mapped[int] = mapped_column(BigInteger().with_variant(Integer, "sqlite"), primary_key=True, autoincrement=True)
|
||||
started_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), nullable=False, default=func.now())
|
||||
@@ -82,3 +82,18 @@ class SyncRun(Base):
|
||||
cars_failed: Mapped[int] = mapped_column(Integer, nullable=False, default=0)
|
||||
images_upserted: Mapped[int] = mapped_column(Integer, nullable=False, default=0)
|
||||
error_summary: Mapped[str | None] = mapped_column(Text, nullable=True)
|
||||
|
||||
|
||||
class ScrapeTask(Base):
|
||||
# Задачи Celery.
|
||||
__tablename__ = "scrape_tasks"
|
||||
id: Mapped[int] = mapped_column(BigInteger().with_variant(Integer, "sqlite"), primary_key=True, autoincrement=True)
|
||||
celery_task_id: Mapped[str] = mapped_column(String(255), nullable=False, unique=True, index=True)
|
||||
task_type: Mapped[str] = mapped_column(String(50), nullable=False) # sync_vehicle/sync_listing
|
||||
status: Mapped[str] = mapped_column(String(20), nullable=False, default="pending") # pending/running/success/failed
|
||||
vehicle_url: Mapped[str | None] = mapped_column(Text, nullable=True)
|
||||
created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), nullable=False, default=func.now())
|
||||
started_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
|
||||
finished_at: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), nullable=True)
|
||||
result_summary: Mapped[str | None] = mapped_column(Text, nullable=True)
|
||||
error_message: Mapped[str | None] = mapped_column(Text, nullable=True)
|
||||
|
||||
Reference in New Issue
Block a user