add source and source_id to Task object

This commit is contained in:
Daniel Roth 2026-03-05 11:27:43 +00:00
parent 48ffb773bd
commit c0b2bf669c
2 changed files with 25 additions and 3 deletions

View file

@ -11,7 +11,7 @@ from sqlmodel import Session, select
from backend.app.db.connection import get_db_session from backend.app.db.connection import get_db_session
# ---- Models ---- # ---- Models ----
from backend.app.db.models.tasks import Task, SubTask from backend.app.db.models.tasks import SourceEnum, Task, SubTask
# ============================================================ # ============================================================
@ -268,6 +268,8 @@ class TasksInterface:
service: Optional[str] = None, service: Optional[str] = None,
inputs: Optional[Dict[str, Any]] = None, inputs: Optional[Dict[str, Any]] = None,
task_only: bool = False, task_only: bool = False,
source: Optional[SourceEnum] = None,
source_id: Optional[str] = None,
): ):
""" """
Create a new Task record, and an initial SubTask in waiting state. Can also be used to create just Create a new Task record, and an initial SubTask in waiting state. Can also be used to create just
@ -286,6 +288,8 @@ class TasksInterface:
status="waiting", status="waiting",
job_started=now, job_started=now,
job_completed=None, job_completed=None,
source=source,
source_id=source_id,
) )
session.add(task) session.add(task)

View file

@ -1,14 +1,25 @@
import enum
from typing import Optional from typing import Optional
from datetime import datetime from datetime import datetime
from uuid import UUID, uuid4 from uuid import UUID, uuid4
from sqlalchemy import Enum
from sqlalchemy.orm import Mapped, mapped_column
from sqlmodel import SQLModel, Field, Relationship from sqlmodel import SQLModel, Field, Relationship
class SourceEnum(enum.Enum): # TODO: move to domain?
PORTFOLIO = "portfolio_id"
class Task(SQLModel, table=True): class Task(SQLModel, table=True):
__tablename__ = "tasks" __tablename__ = "tasks"
id: UUID = Field(default_factory=uuid4, primary_key=True, index=True, ) id: UUID = Field(
default_factory=uuid4,
primary_key=True,
index=True,
)
task_source: str task_source: str
job_started: Optional[datetime] = None job_started: Optional[datetime] = None
job_completed: Optional[datetime] = None job_completed: Optional[datetime] = None
@ -16,13 +27,20 @@ class Task(SQLModel, table=True):
service: Optional[str] = None service: Optional[str] = None
updated_at: datetime = Field(default_factory=datetime.utcnow) updated_at: datetime = Field(default_factory=datetime.utcnow)
source: Mapped[Optional[SourceEnum]] = mapped_column(Enum(SourceEnum))
source_id: Optional[str] = None
sub_tasks: list["SubTask"] = Relationship(back_populates="task") sub_tasks: list["SubTask"] = Relationship(back_populates="task")
class SubTask(SQLModel, table=True): class SubTask(SQLModel, table=True):
__tablename__ = "sub_task" __tablename__ = "sub_task"
id: UUID = Field(default_factory=uuid4, primary_key=True, index=True, ) id: UUID = Field(
default_factory=uuid4,
primary_key=True,
index=True,
)
task_id: UUID = Field(foreign_key="tasks.id") task_id: UUID = Field(foreign_key="tasks.id")
job_started: Optional[datetime] = None job_started: Optional[datetime] = None