From a693a64bf579bb835fdfddecaec151999e12c0a2 Mon Sep 17 00:00:00 2001 From: Roberto Date: Tue, 12 May 2026 07:16:23 +0200 Subject: [PATCH] feat(api): add migration for folder token tracking Co-Authored-By: Claude Sonnet 4.6 --- .../d6e3f4a5b6c7_folder_index_tables.py | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 alembic/versions/d6e3f4a5b6c7_folder_index_tables.py diff --git a/alembic/versions/d6e3f4a5b6c7_folder_index_tables.py b/alembic/versions/d6e3f4a5b6c7_folder_index_tables.py new file mode 100644 index 0000000..78ea804 --- /dev/null +++ b/alembic/versions/d6e3f4a5b6c7_folder_index_tables.py @@ -0,0 +1,46 @@ +"""Add token tracking columns for folder integration. + +Revision ID: d6e3f4a5b6c7 +Revises: e04100e88ace +Create Date: 2026-05-11 00:00:00.000000 + +""" +from __future__ import annotations + +from typing import Sequence, Union + +import sqlalchemy as sa +from alembic import op +from sqlalchemy.dialects.postgresql import UUID + +# revision identifiers, used by Alembic. +revision: str = "d6e3f4a5b6c7" +down_revision: Union[str, None] = "006" +branch_labels: Union[str, Sequence[str], None] = None +depends_on: Union[str, Sequence[str], None] = None + + +def upgrade() -> None: + op.add_column( + "agent_run_logs", + sa.Column("tokens_used", sa.Integer(), nullable=False, server_default="0"), + ) + op.create_table( + "monthly_token_usage", + sa.Column("user_id", UUID(as_uuid=False), sa.ForeignKey("users.id", ondelete="CASCADE"), nullable=False), + sa.Column("year_month", sa.String(7), nullable=False), + sa.Column("feature", sa.String(64), nullable=False), + sa.Column("tokens_used", sa.Integer(), nullable=False, server_default="0"), + sa.PrimaryKeyConstraint("user_id", "year_month", "feature"), + ) + op.create_index( + "ix_monthly_token_usage_user_month", + "monthly_token_usage", + ["user_id", "year_month"], + ) + + +def downgrade() -> None: + op.drop_index("ix_monthly_token_usage_user_month", table_name="monthly_token_usage") + op.drop_table("monthly_token_usage") + op.drop_column("agent_run_logs", "tokens_used")