From c0b2bf669c8050c0d71be61c4e5e3680022a42f7 Mon Sep 17 00:00:00 2001 From: Daniel Roth Date: Thu, 5 Mar 2026 11:27:43 +0000 Subject: [PATCH] add source and source_id to Task object --- backend/app/db/functions/tasks/Tasks.py | 6 +++++- backend/app/db/models/tasks.py | 22 ++++++++++++++++++++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/backend/app/db/functions/tasks/Tasks.py b/backend/app/db/functions/tasks/Tasks.py index 0f987f3b..7ba3dd35 100644 --- a/backend/app/db/functions/tasks/Tasks.py +++ b/backend/app/db/functions/tasks/Tasks.py @@ -11,7 +11,7 @@ from sqlmodel import Session, select from backend.app.db.connection import get_db_session # ---- 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, inputs: Optional[Dict[str, Any]] = None, 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 @@ -286,6 +288,8 @@ class TasksInterface: status="waiting", job_started=now, job_completed=None, + source=source, + source_id=source_id, ) session.add(task) diff --git a/backend/app/db/models/tasks.py b/backend/app/db/models/tasks.py index cfe18d83..5b9d82c1 100644 --- a/backend/app/db/models/tasks.py +++ b/backend/app/db/models/tasks.py @@ -1,14 +1,25 @@ +import enum from typing import Optional from datetime import datetime from uuid import UUID, uuid4 +from sqlalchemy import Enum +from sqlalchemy.orm import Mapped, mapped_column from sqlmodel import SQLModel, Field, Relationship +class SourceEnum(enum.Enum): # TODO: move to domain? + PORTFOLIO = "portfolio_id" + + class Task(SQLModel, table=True): __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 job_started: Optional[datetime] = None job_completed: Optional[datetime] = None @@ -16,13 +27,20 @@ class Task(SQLModel, table=True): service: Optional[str] = None 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") class SubTask(SQLModel, table=True): __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") job_started: Optional[datetime] = None