aboutsummaryrefslogtreecommitdiff
path: root/migrations/versions
diff options
context:
space:
mode:
Diffstat (limited to 'migrations/versions')
-rw-r--r--migrations/versions/681a2a9a1bc0_.py66
1 files changed, 66 insertions, 0 deletions
diff --git a/migrations/versions/681a2a9a1bc0_.py b/migrations/versions/681a2a9a1bc0_.py
new file mode 100644
index 0000000..2420b79
--- /dev/null
+++ b/migrations/versions/681a2a9a1bc0_.py
@@ -0,0 +1,66 @@
+"""empty message
+
+Revision ID: 681a2a9a1bc0
+Revises: f63641044cc1
+Create Date: 2026-08-14 13:40:55.149604
+
+"""
+from alembic import op
+import sqlalchemy as sa
+
+
+# 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 ###