import uuid from datetime import datetime from sqlalchemy import Column, String, Integer, DateTime, Text, ForeignKey from sqlalchemy.dialects.postgresql import UUID from sqlalchemy.orm import relationship from app.database import Base class Achievement(Base): __tablename__ = "achievements" id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) name = Column(String(100), nullable=False) description = Column(Text) icon = Column(String(10)) category = Column(String(50)) requirement_type = Column(String(50)) requirement_value = Column(Integer) points = Column(Integer, default=10) class UserAchievement(Base): __tablename__ = "user_achievements" id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4) user_id = Column(UUID(as_uuid=True), ForeignKey("users.id"), nullable=False) achievement_id = Column(UUID(as_uuid=True), ForeignKey("achievements.id"), nullable=False) unlocked_at = Column(DateTime, default=datetime.utcnow) user = relationship("User", back_populates="achievements") achievement = relationship("Achievement")