"""seed aws pricing data

Revision ID: 0892c44b2a58
Revises: e80c6eef58b2
Create Date: 2026-04-07 13:53:23.116106

"""

from typing import Sequence, Union
from uuid import uuid4

from alembic import op


# revision identifiers, used by Alembic.
revision: str = "0892c44b2a58"
down_revision: Union[str, Sequence[str], None] = "e80c6eef58b2"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
    """Seed AWS pricing data."""
    # Pricing data for us-east-1 (N. Virginia)
    pricing_data = [
        # SQS Pricing
        {
            "id": str(uuid4()),
            "service": "sqs",
            "region": "us-east-1",
            "tier": "standard",
            "price_per_unit": 0.40,
            "unit": "per_million_requests",
            "description": "Amazon SQS Standard Queue - API requests",
        },
        # Lambda Pricing
        {
            "id": str(uuid4()),
            "service": "lambda",
            "region": "us-east-1",
            "tier": "x86_request",
            "price_per_unit": 0.20,
            "unit": "per_million_requests",
            "description": "AWS Lambda x86 - Request charges",
        },
        {
            "id": str(uuid4()),
            "service": "lambda",
            "region": "us-east-1",
            "tier": "x86_compute",
            "price_per_unit": 0.0000166667,
            "unit": "per_gb_second",
            "description": "AWS Lambda x86 - Compute charges",
        },
        # Bedrock Pricing (Claude 3)
        {
            "id": str(uuid4()),
            "service": "bedrock",
            "region": "us-east-1",
            "tier": "claude_3_sonnet_input",
            "price_per_unit": 0.003,
            "unit": "per_1k_tokens",
            "description": "Amazon Bedrock - Claude 3 Sonnet Input",
        },
        {
            "id": str(uuid4()),
            "service": "bedrock",
            "region": "us-east-1",
            "tier": "claude_3_sonnet_output",
            "price_per_unit": 0.015,
            "unit": "per_1k_tokens",
            "description": "Amazon Bedrock - Claude 3 Sonnet Output",
        },
        # eu-west-1 (Ireland) - similar pricing
        {
            "id": str(uuid4()),
            "service": "sqs",
            "region": "eu-west-1",
            "tier": "standard",
            "price_per_unit": 0.40,
            "unit": "per_million_requests",
            "description": "Amazon SQS Standard Queue - API requests",
        },
        {
            "id": str(uuid4()),
            "service": "lambda",
            "region": "eu-west-1",
            "tier": "x86_request",
            "price_per_unit": 0.20,
            "unit": "per_million_requests",
            "description": "AWS Lambda x86 - Request charges",
        },
        {
            "id": str(uuid4()),
            "service": "lambda",
            "region": "eu-west-1",
            "tier": "x86_compute",
            "price_per_unit": 0.0000166667,
            "unit": "per_gb_second",
            "description": "AWS Lambda x86 - Compute charges",
        },
        {
            "id": str(uuid4()),
            "service": "bedrock",
            "region": "eu-west-1",
            "tier": "claude_3_sonnet_input",
            "price_per_unit": 0.003,
            "unit": "per_1k_tokens",
            "description": "Amazon Bedrock - Claude 3 Sonnet Input",
        },
        {
            "id": str(uuid4()),
            "service": "bedrock",
            "region": "eu-west-1",
            "tier": "claude_3_sonnet_output",
            "price_per_unit": 0.015,
            "unit": "per_1k_tokens",
            "description": "Amazon Bedrock - Claude 3 Sonnet Output",
        },
    ]

    # Insert data using bulk insert
    for data in pricing_data:
        op.execute(f"""
            INSERT INTO aws_pricing 
            (id, service, region, tier, price_per_unit, unit, description, is_active, effective_from)
            VALUES 
            ('{data["id"]}', '{data["service"]}', '{data["region"]}', '{data["tier"]}', 
             {data["price_per_unit"]}, '{data["unit"]}', '{data["description"]}', 
             true, CURRENT_DATE)
        """)


def downgrade() -> None:
    """Remove seeded pricing data."""
    op.execute("DELETE FROM aws_pricing WHERE is_active = true;")
