from sqlalchemy import Column, Integer, String, DateTime, Boolean, Float, Text from sqlalchemy.sql import func from src.database.db import Base class ApiKey(Base): __tablename__ = "api_keys" id = Column(Integer, primary_key=True, index=True) key_hash = Column(String(64), unique=True, index=True) description = Column(String(255), nullable=True) created_at = Column(DateTime(timezone=True), server_default=func.now()) last_used_at = Column(DateTime(timezone=True), nullable=True) is_active = Column(Boolean, default=True) usage_count = Column(Integer, default=0) class UsageLog(Base): __tablename__ = "usage_logs" id = Column(Integer, primary_key=True, index=True) api_key_id = Column(Integer, nullable=True) endpoint = Column(String(100)) file_size_bytes = Column(Integer, nullable=True) duration_seconds = Column(Float, nullable=True) processing_time_ms = Column(Integer) model_used = Column(String(50)) status = Column(String(20)) # success, error error_message = Column(Text, nullable=True) created_at = Column(DateTime(timezone=True), server_default=func.now())