Initial commit - MIDAS App educação financeira para apostadores (FastAPI + Next.js)
This commit is contained in:
27
backend/app/models/achievement.py
Normal file
27
backend/app/models/achievement.py
Normal file
@@ -0,0 +1,27 @@
|
||||
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")
|
||||
Reference in New Issue
Block a user