a
This commit is contained in:
@@ -5,6 +5,7 @@ from app.models.game import Game, GameStatus, GameType
|
||||
from app.models.challenge import Challenge, ChallengeType, Difficulty, ProofType
|
||||
from app.models.assignment import Assignment, AssignmentStatus
|
||||
from app.models.bonus_assignment import BonusAssignment, BonusAssignmentStatus
|
||||
from app.models.assignment_proof import AssignmentProof, BonusAssignmentProof
|
||||
from app.models.activity import Activity, ActivityType
|
||||
from app.models.event import Event, EventType
|
||||
from app.models.swap_request import SwapRequest, SwapRequestStatus
|
||||
@@ -32,6 +33,8 @@ __all__ = [
|
||||
"AssignmentStatus",
|
||||
"BonusAssignment",
|
||||
"BonusAssignmentStatus",
|
||||
"AssignmentProof",
|
||||
"BonusAssignmentProof",
|
||||
"Activity",
|
||||
"ActivityType",
|
||||
"Event",
|
||||
|
||||
@@ -42,3 +42,4 @@ class Assignment(Base):
|
||||
event: Mapped["Event | None"] = relationship("Event", back_populates="assignments")
|
||||
dispute: Mapped["Dispute | None"] = relationship("Dispute", back_populates="assignment", uselist=False, cascade="all, delete-orphan", passive_deletes=True)
|
||||
bonus_assignments: Mapped[list["BonusAssignment"]] = relationship("BonusAssignment", back_populates="main_assignment", cascade="all, delete-orphan")
|
||||
proof_files: Mapped[list["AssignmentProof"]] = relationship("AssignmentProof", back_populates="assignment", cascade="all, delete-orphan", order_by="AssignmentProof.order_index")
|
||||
|
||||
47
backend/app/models/assignment_proof.py
Normal file
47
backend/app/models/assignment_proof.py
Normal file
@@ -0,0 +1,47 @@
|
||||
from datetime import datetime
|
||||
from sqlalchemy import String, ForeignKey, Integer, DateTime
|
||||
from sqlalchemy.orm import Mapped, mapped_column, relationship
|
||||
|
||||
from app.core.database import Base
|
||||
|
||||
|
||||
class AssignmentProof(Base):
|
||||
"""Файлы-доказательства для заданий (множественные пруфы)"""
|
||||
__tablename__ = "assignment_proofs"
|
||||
|
||||
id: Mapped[int] = mapped_column(primary_key=True)
|
||||
assignment_id: Mapped[int] = mapped_column(
|
||||
ForeignKey("assignments.id", ondelete="CASCADE"),
|
||||
index=True
|
||||
)
|
||||
file_path: Mapped[str] = mapped_column(String(500)) # Путь к файлу в хранилище
|
||||
file_type: Mapped[str] = mapped_column(String(20)) # image или video
|
||||
order_index: Mapped[int] = mapped_column(Integer, default=0) # Порядок отображения
|
||||
created_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow)
|
||||
|
||||
# Relationships
|
||||
assignment: Mapped["Assignment"] = relationship(
|
||||
"Assignment",
|
||||
back_populates="proof_files"
|
||||
)
|
||||
|
||||
|
||||
class BonusAssignmentProof(Base):
|
||||
"""Файлы-доказательства для бонусных заданий (множественные пруфы)"""
|
||||
__tablename__ = "bonus_assignment_proofs"
|
||||
|
||||
id: Mapped[int] = mapped_column(primary_key=True)
|
||||
bonus_assignment_id: Mapped[int] = mapped_column(
|
||||
ForeignKey("bonus_assignments.id", ondelete="CASCADE"),
|
||||
index=True
|
||||
)
|
||||
file_path: Mapped[str] = mapped_column(String(500)) # Путь к файлу в хранилище
|
||||
file_type: Mapped[str] = mapped_column(String(20)) # image или video
|
||||
order_index: Mapped[int] = mapped_column(Integer, default=0) # Порядок отображения
|
||||
created_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow)
|
||||
|
||||
# Relationships
|
||||
bonus_assignment: Mapped["BonusAssignment"] = relationship(
|
||||
"BonusAssignment",
|
||||
back_populates="proof_files"
|
||||
)
|
||||
@@ -46,3 +46,9 @@ class BonusAssignment(Base):
|
||||
back_populates="bonus_assignment",
|
||||
uselist=False,
|
||||
)
|
||||
proof_files: Mapped[list["BonusAssignmentProof"]] = relationship(
|
||||
"BonusAssignmentProof",
|
||||
back_populates="bonus_assignment",
|
||||
cascade="all, delete-orphan",
|
||||
order_by="BonusAssignmentProof.order_index"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user