Add per-app ActivityPub actors via shared AP blueprint
Each AP-enabled app (blog, market, events, federation) now serves its own webfinger, actor profile, inbox, outbox, and followers endpoints. Per-app actors are virtual projections of the same ActorProfile/keypair, scoped by APFollower.app_domain and APActivity.origin_app. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
"""Add app_domain to ap_followers for per-app AP actors
|
||||
|
||||
Revision ID: t0r8n4o6p7
|
||||
Revises: s9q7n3o5p6
|
||||
"""
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
revision = "t0r8n4o6p7"
|
||||
down_revision = "s9q7n3o5p6"
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
|
||||
def upgrade():
|
||||
op.add_column(
|
||||
"ap_followers",
|
||||
sa.Column("app_domain", sa.String(64), nullable=True),
|
||||
)
|
||||
# Replace old unique constraint with one that includes app_domain
|
||||
op.drop_constraint("uq_follower_acct", "ap_followers", type_="unique")
|
||||
op.create_unique_constraint(
|
||||
"uq_follower_acct_app",
|
||||
"ap_followers",
|
||||
["actor_profile_id", "follower_acct", "app_domain"],
|
||||
)
|
||||
op.create_index(
|
||||
"ix_ap_follower_app_domain",
|
||||
"ap_followers",
|
||||
["actor_profile_id", "app_domain"],
|
||||
)
|
||||
|
||||
|
||||
def downgrade():
|
||||
op.drop_index("ix_ap_follower_app_domain", table_name="ap_followers")
|
||||
op.drop_constraint("uq_follower_acct_app", "ap_followers", type_="unique")
|
||||
op.create_unique_constraint(
|
||||
"uq_follower_acct",
|
||||
"ap_followers",
|
||||
["actor_profile_id", "follower_acct"],
|
||||
)
|
||||
op.drop_column("ap_followers", "app_domain")
|
||||
Reference in New Issue
Block a user