Add explicit usage summary uniqueness and billing indexes
This commit is contained in:
@@ -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'},
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user