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
|
# Ensure Optional is available in global scope for dynamic imports
|
||||||
from typing import Optional
|
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.ext.declarative import declarative_base
|
||||||
from sqlalchemy.orm import relationship
|
from sqlalchemy.orm import relationship
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
@@ -174,6 +174,9 @@ class APIUsageLog(Base):
|
|||||||
|
|
||||||
# Indexes for performance
|
# Indexes for performance
|
||||||
__table_args__ = (
|
__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'},
|
{'mysql_engine': 'InnoDB'},
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -241,6 +244,8 @@ class UsageSummary(Base):
|
|||||||
|
|
||||||
# Unique constraint on user_id and billing_period
|
# Unique constraint on user_id and billing_period
|
||||||
__table_args__ = (
|
__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'},
|
{'mysql_engine': 'InnoDB'},
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -276,6 +281,7 @@ class APIProviderPricing(Base):
|
|||||||
|
|
||||||
# Unique constraint on provider and model
|
# Unique constraint on provider and model
|
||||||
__table_args__ = (
|
__table_args__ = (
|
||||||
|
UniqueConstraint('provider', 'model_name', name='uq_api_provider_pricing_provider_model'),
|
||||||
{'mysql_engine': 'InnoDB'},
|
{'mysql_engine': 'InnoDB'},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user