Add explicit usage summary uniqueness and billing indexes

This commit is contained in:
ي
2026-03-05 11:17:48 +05:30
parent 45dbf095f6
commit 81f49f4ebd

View File

@@ -6,7 +6,7 @@ Comprehensive models for usage-based subscription system with API cost tracking.
# Ensure Optional is available in global scope for dynamic imports
from typing import Optional
from sqlalchemy import Column, Integer, String, DateTime, Float, Boolean, JSON, Text, ForeignKey, Enum
from sqlalchemy import Column, Integer, String, DateTime, Float, Boolean, JSON, Text, ForeignKey, Enum, Index, UniqueConstraint
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
from datetime import datetime, timedelta
@@ -174,6 +174,9 @@ class APIUsageLog(Base):
# Indexes for performance
__table_args__ = (
Index('ix_api_usage_logs_user_period_ts', 'user_id', 'billing_period', 'timestamp'),
Index('ix_api_usage_logs_user_provider_ts', 'user_id', 'provider', 'timestamp'),
Index('ix_api_usage_logs_user_status_ts', 'user_id', 'status_code', 'timestamp'),
{'mysql_engine': 'InnoDB'},
)
@@ -241,6 +244,8 @@ class UsageSummary(Base):
# Unique constraint on user_id and billing_period
__table_args__ = (
UniqueConstraint('user_id', 'billing_period', name='uq_usage_summaries_user_period'),
Index('ix_usage_summaries_user_period', 'user_id', 'billing_period'),
{'mysql_engine': 'InnoDB'},
)
@@ -276,6 +281,7 @@ class APIProviderPricing(Base):
# Unique constraint on provider and model
__table_args__ = (
UniqueConstraint('provider', 'model_name', name='uq_api_provider_pricing_provider_model'),
{'mysql_engine': 'InnoDB'},
)