Files
track/backend/app/models/app_version.py

45 lines
1.3 KiB
Python

"""App 版本管理模型 — 用于 OTA 热更新"""
import uuid
from datetime import datetime
from sqlalchemy import String, DateTime, Boolean, Text, Integer
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.orm import Mapped, mapped_column
from app.models.base import Base
from app.core.time_utils import get_beijing_time
class AppVersion(Base):
__tablename__ = "app_versions"
id: Mapped[uuid.UUID] = mapped_column(
UUID(as_uuid=True), primary_key=True, default=uuid.uuid4,
)
version: Mapped[str] = mapped_column(
String(20), nullable=False, unique=True, comment="版本号,如 T1.0.1",
)
version_code: Mapped[int] = mapped_column(
Integer, nullable=False, default=100, comment="数字版本号,用于比较",
)
wgt_url: Mapped[str] = mapped_column(
String(500), nullable=False, comment="WGT 升级包下载地址",
)
description: Mapped[str | None] = mapped_column(
Text, nullable=True, comment="更新说明",
)
is_active: Mapped[bool] = mapped_column(
Boolean, default=True, comment="是否启用",
)
created_at: Mapped[datetime] = mapped_column(
DateTime(timezone=True), default=get_beijing_time,
)
def __repr__(self) -> str:
return f"<AppVersion {self.version}>"