Skip to content

Commit 2d20143

Browse files
committed
fix(db): add job table to migration 001 and align schema with models
1 parent 15d69e4 commit 2d20143

3 files changed

Lines changed: 29 additions & 16 deletions

File tree

alembic/env.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@
33
from alembic import context
44
from sqlalchemy import engine_from_config, pool
55

6+
from sqlmodel import SQLModel
7+
68
from app.core.config import DATABASE_URL
7-
from app.models.models import SQLModel
8-
from app.models import Template, FormSubmission
9+
from app.models import FormSubmission, Job, Template
910

1011
config = context.config
1112

alembic/versions/001_initial_schema.py

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
"""Initial schema — Template and FormSubmission tables.
1+
"""Initial schema — Template, FormSubmission, and Job tables.
22
33
Revision ID: 001
44
Revises:
@@ -24,12 +24,7 @@ def upgrade() -> None:
2424
sa.Column("name", sqlmodel.sql.sqltypes.AutoString, nullable=False),
2525
sa.Column("fields", sa.JSON, nullable=False),
2626
sa.Column("pdf_path", sqlmodel.sql.sqltypes.AutoString, nullable=False),
27-
sa.Column(
28-
"created_at",
29-
sa.DateTime,
30-
nullable=False,
31-
server_default=sa.text("now()"),
32-
),
27+
sa.Column("created_at", sa.DateTime, nullable=False),
3328
)
3429

3530
op.create_table(
@@ -38,15 +33,32 @@ def upgrade() -> None:
3833
sa.Column("template_id", sa.Integer, sa.ForeignKey("template.id"), nullable=False),
3934
sa.Column("input_text", sqlmodel.sql.sqltypes.AutoString, nullable=False),
4035
sa.Column("output_pdf_path", sqlmodel.sql.sqltypes.AutoString, nullable=False),
41-
sa.Column(
42-
"created_at",
43-
sa.DateTime,
44-
nullable=False,
45-
server_default=sa.text("now()"),
46-
),
36+
sa.Column("created_at", sa.DateTime, nullable=False),
4737
)
4838

39+
op.create_table(
40+
"job",
41+
sa.Column("id", sa.Integer, primary_key=True, autoincrement=True),
42+
sa.Column("job_id", sqlmodel.sql.sqltypes.AutoString, nullable=False),
43+
sa.Column("celery_task_id", sqlmodel.sql.sqltypes.AutoString, nullable=False),
44+
sa.Column("job_type", sqlmodel.sql.sqltypes.AutoString, nullable=False),
45+
sa.Column("template_id", sa.Integer, sa.ForeignKey("template.id"), nullable=True),
46+
sa.Column("input_text", sqlmodel.sql.sqltypes.AutoString, nullable=True),
47+
sa.Column("status", sqlmodel.sql.sqltypes.AutoString, nullable=False),
48+
sa.Column("progress_percent", sa.Integer, nullable=False),
49+
sa.Column("result_url", sqlmodel.sql.sqltypes.AutoString, nullable=True),
50+
sa.Column("error", sa.JSON, nullable=True),
51+
sa.Column("model", sqlmodel.sql.sqltypes.AutoString, nullable=True),
52+
sa.Column("created_at", sa.DateTime, nullable=False),
53+
sa.Column("updated_at", sa.DateTime, nullable=False),
54+
)
55+
op.create_index("ix_job_job_id", "job", ["job_id"], unique=True)
56+
op.create_index("ix_job_celery_task_id", "job", ["celery_task_id"], unique=False)
57+
4958

5059
def downgrade() -> None:
60+
op.drop_index("ix_job_celery_task_id", table_name="job")
61+
op.drop_index("ix_job_job_id", table_name="job")
62+
op.drop_table("job")
5163
op.drop_table("formsubmission")
5264
op.drop_table("template")

app/models/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
class Template(SQLModel, table=True):
99
id: int | None = Field(default=None, primary_key=True)
1010
name: str
11-
fields: dict = Field(sa_column=Column(JSON))
11+
fields: dict = Field(sa_column=Column(JSON, nullable=False))
1212
pdf_path: str
1313
created_at: datetime = Field(default_factory=lambda: datetime.now(timezone.utc))
1414

0 commit comments

Comments
 (0)