Spaces:
Running
Running
| from sqlalchemy import Column, String, Boolean, Integer, DateTime | |
| from sqlalchemy.sql import func | |
| from sqlalchemy.dialects.postgresql import UUID | |
| from sqlalchemy import text | |
| from app.database import Base | |
| import uuid | |
| class User(Base): | |
| __tablename__ = "users" | |
| id = Column(String(36), primary_key=True, default=lambda: str(uuid.uuid4())) | |
| email = Column(String(255), unique=True, nullable=False) | |
| password_hash = Column(String(255), nullable=True) # null for Google-only accounts | |
| full_name = Column(String(255), nullable=True) | |
| auth_provider = Column(String(20), default="email") # email | google | |
| firebase_uid = Column(String(128), nullable=True, index=True) | |
| plan = Column(String(20), default="free") | |
| monthly_searches = Column(Integer, default=0) | |
| search_limit = Column(Integer, default=50) | |
| is_active = Column(Boolean, default=True) | |
| is_verified = Column(Boolean, default=False) | |
| token_version = Column(Integer, default=0) | |
| created_at = Column(DateTime(timezone=True), server_default=func.now()) | |
| updated_at = Column(DateTime(timezone=True), onupdate=func.now()) |