Files
haunt-fm/alembic/versions/005_add_profile_feedback.py
Thomas Hallock 8101871877 Add profile-scoped feedback endpoint
New POST /api/profiles/{name}/feedback accepts explicit vibe text and
records feedback against a named profile. GET history endpoint added too.
Scoring now filters feedback by profile_name for profile-aware playlists.
Migration 005 adds profile_name column and makes playlist_id nullable.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 09:41:42 -06:00

31 lines
1.0 KiB
Python

"""Add profile_name to feedback_events, make playlist_id nullable
Revision ID: 005
Revises: 004
Create Date: 2026-02-23
"""
from typing import Sequence, Union
import sqlalchemy as sa
from alembic import op
revision: str = "005"
down_revision: Union[str, None] = "004"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
def upgrade() -> None:
op.add_column("feedback_events", sa.Column("profile_name", sa.Text, nullable=True))
op.create_index("ix_feedback_events_profile_name", "feedback_events", ["profile_name"])
# Make playlist_id nullable (profile-scoped feedback doesn't require a playlist)
op.alter_column("feedback_events", "playlist_id", existing_type=sa.BigInteger, nullable=True)
def downgrade() -> None:
op.alter_column("feedback_events", "playlist_id", existing_type=sa.BigInteger, nullable=False)
op.drop_index("ix_feedback_events_profile_name", table_name="feedback_events")
op.drop_column("feedback_events", "profile_name")