Fix API regressions and refresh project docs
This commit is contained in:
@@ -1,13 +1,29 @@
|
||||
from sqlalchemy import Column, Integer, String, Boolean, ForeignKey, JSON
|
||||
from datetime import datetime
|
||||
|
||||
from sqlalchemy import Boolean, Integer, JSON, String
|
||||
from sqlalchemy.orm import Mapped, mapped_column
|
||||
|
||||
from app.core.database import Base
|
||||
|
||||
|
||||
class ScheduleTask(Base):
|
||||
"""
|
||||
Персистентная метадата пользовательских расписаний.
|
||||
|
||||
APScheduler остаётся рантайм-движком исполнения, а эта таблица служит
|
||||
источником истины для CRUD, восстановления и миграции задач.
|
||||
"""
|
||||
|
||||
__tablename__ = "schedules"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True)
|
||||
device_id = Column(Integer, ForeignKey("devices.id"), nullable=False)
|
||||
task_type = Column(String) # 'once', 'daily', 'cron'
|
||||
action_params = Column(JSON) # {'state': True, 'dimming': 50}
|
||||
is_active = Column(Boolean, default=True)
|
||||
job_id = Column(String, unique=True) # ID задачи в APScheduler
|
||||
id: Mapped[int] = mapped_column(Integer, primary_key=True, autoincrement=True)
|
||||
job_id: Mapped[str] = mapped_column(String, unique=True, index=True)
|
||||
trigger_type: Mapped[str] = mapped_column(String) # once | cron
|
||||
target_id: Mapped[str] = mapped_column(String)
|
||||
target_type: Mapped[str] = mapped_column(String) # group | device
|
||||
trigger_args: Mapped[dict] = mapped_column(JSON)
|
||||
action_params: Mapped[dict] = mapped_column(JSON)
|
||||
is_active: Mapped[bool] = mapped_column(Boolean, default=True)
|
||||
created_at: Mapped[str] = mapped_column(
|
||||
String, default=lambda: datetime.now().isoformat()
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user