feat: add jobs queue

This commit is contained in:
h
2026-05-29 19:04:36 +02:00
parent 3c1a12750c
commit 4a471df8f1
8 changed files with 356 additions and 0 deletions
+46
View File
@@ -1,4 +1,5 @@
from datetime import datetime
from enum import StrEnum
from typing import Any
from sqlalchemy import BigInteger, Column, DateTime, LargeBinary, func
@@ -6,6 +7,13 @@ from sqlalchemy.dialects.postgresql import JSONB
from sqlmodel import Field, SQLModel
class JobStatus(StrEnum):
PENDING = "pending"
RUNNING = "running"
DONE = "done"
FAILED = "failed"
class Account(SQLModel, table=True):
__tablename__ = "accounts"
@@ -158,6 +166,44 @@ class Reaction(SQLModel, table=True):
)
class Job(SQLModel, table=True):
__tablename__ = "jobs"
id: int | None = Field(default=None, sa_column=Column(BigInteger, primary_key=True))
account_id: int
kind: str
status: str = JobStatus.PENDING
params: dict[str, Any] = Field(
default_factory=dict, sa_column=Column(JSONB, nullable=False)
)
cursor: dict[str, Any] | None = Field(default=None, sa_column=Column(JSONB))
progress: dict[str, Any] = Field(
default_factory=dict, sa_column=Column(JSONB, nullable=False)
)
flood_waits: int = 0
attempts: int = 0
error: str | None = None
created_at: datetime = Field(
sa_column=Column(
DateTime(timezone=True), nullable=False, server_default=func.now()
)
)
updated_at: datetime = Field(
sa_column=Column(
DateTime(timezone=True),
nullable=False,
server_default=func.now(),
onupdate=func.now(),
)
)
started_at: datetime | None = Field(
default=None, sa_column=Column(DateTime(timezone=True))
)
finished_at: datetime | None = Field(
default=None, sa_column=Column(DateTime(timezone=True))
)
class CapturePolicy(SQLModel, table=True):
__tablename__ = "capture_policy"