aboutsummaryrefslogtreecommitdiff
path: root/migrations/versions/681a2a9a1bc0_webmention_sender.py
blob: 29142af4bd098b00afa2532238e4af6c0352c607 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
"""Webmention sender

Revision ID: 681a2a9a1bc0
Revises: f63641044cc1
Create Date: 2026-08-14 13:40:55.149604

"""

import sqlalchemy as sa
from alembic import op

# revision identifiers, used by Alembic.
revision = "681a2a9a1bc0"
down_revision = "f63641044cc1"
branch_labels = None
depends_on = None


def upgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    op.create_table(
        "sources",
        sa.Column("uuid", sa.Uuid(), nullable=False),
        sa.Column("path", sa.Text(), nullable=False),
        sa.Column("url", sa.Text(), nullable=False),
        sa.Column("content_hash", sa.String(length=32), nullable=False),
        sa.Column("revision", sa.Integer(), nullable=False),
        sa.Column("last_seen_at", sa.DateTime(timezone=True), nullable=False),
        sa.Column("revised_at", sa.DateTime(timezone=True), nullable=False),
        sa.Column("deleted_at", sa.DateTime(timezone=True), nullable=True),
        sa.PrimaryKeyConstraint("uuid"),
        sa.UniqueConstraint("path"),
        sa.UniqueConstraint("url"),
    )
    op.create_table(
        "sent_webmentions",
        sa.Column("uuid", sa.Uuid(), nullable=False),
        sa.Column("source_id", sa.Uuid(), nullable=False),
        sa.Column("target", sa.Text(), nullable=False),
        sa.Column("active", sa.Boolean(), nullable=False),
        sa.Column("desired_revision", sa.Integer(), nullable=False),
        sa.Column("processed_revision", sa.Integer(), nullable=True),
        sa.Column("sent_revision", sa.Integer(), nullable=True),
        sa.Column(
            "status",
            sa.Enum(
                "sent",
                "unsupported",
                "failed",
                name="sent_webmention_status",
                native_enum=False,
            ),
            nullable=True,
        ),
        sa.Column("failure_reason", sa.Text(), nullable=True),
        sa.Column("endpoint", sa.Text(), nullable=True),
        sa.Column("response_status", sa.Integer(), nullable=True),
        sa.Column("status_url", sa.Text(), nullable=True),
        sa.Column("last_attempted_at", sa.DateTime(timezone=True), nullable=True),
        sa.Column("last_sent_at", sa.DateTime(timezone=True), nullable=True),
        sa.ForeignKeyConstraint(["source_id"], ["sources.uuid"], ondelete="CASCADE"),
        sa.PrimaryKeyConstraint("uuid"),
        sa.UniqueConstraint(
            "source_id", "target", name="uq_sent_webmention_source_target"
        ),
    )
    with op.batch_alter_table("sent_webmentions", schema=None) as batch_op:
        batch_op.create_index(
            batch_op.f("ix_sent_webmentions_source_id"), ["source_id"], unique=False
        )

    # ### end Alembic commands ###


def downgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    with op.batch_alter_table("sent_webmentions", schema=None) as batch_op:
        batch_op.drop_index(batch_op.f("ix_sent_webmentions_source_id"))

    op.drop_table("sent_webmentions")
    op.drop_table("sources")
    # ### end Alembic commands ###