Update app/models/class_.py
Browse files- app/models/class_.py +35 -3
app/models/class_.py
CHANGED
|
@@ -35,9 +35,9 @@ class Class(Base):
|
|
| 35 |
|
| 36 |
# Coach assignment
|
| 37 |
coach_email = Column(String(255), nullable=True, index=True)
|
| 38 |
-
|
| 39 |
-
#
|
| 40 |
-
|
| 41 |
|
| 42 |
# Status + timestamps
|
| 43 |
is_active = Column(Boolean, default=True)
|
|
@@ -55,6 +55,12 @@ class Class(Base):
|
|
| 55 |
back_populates="class_",
|
| 56 |
cascade="all, delete-orphan",
|
| 57 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 58 |
|
| 59 |
|
| 60 |
class ClassEnrollment(Base):
|
|
@@ -90,3 +96,29 @@ class ClassEnrollment(Base):
|
|
| 90 |
removed_at = Column(DateTime, nullable=True)
|
| 91 |
|
| 92 |
class_ = relationship("Class", back_populates="enrollments")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 35 |
|
| 36 |
# Coach assignment
|
| 37 |
coach_email = Column(String(255), nullable=True, index=True)
|
| 38 |
+
|
| 39 |
+
# Location - can be physical address or online meeting link
|
| 40 |
+
location = Column(Text, nullable=True)
|
| 41 |
|
| 42 |
# Status + timestamps
|
| 43 |
is_active = Column(Boolean, default=True)
|
|
|
|
| 55 |
back_populates="class_",
|
| 56 |
cascade="all, delete-orphan",
|
| 57 |
)
|
| 58 |
+
# Many-to-many relationship with membership plans
|
| 59 |
+
membership_plans = relationship(
|
| 60 |
+
"ClassMembershipPlan",
|
| 61 |
+
back_populates="class_",
|
| 62 |
+
cascade="all, delete-orphan",
|
| 63 |
+
)
|
| 64 |
|
| 65 |
|
| 66 |
class ClassEnrollment(Base):
|
|
|
|
| 96 |
removed_at = Column(DateTime, nullable=True)
|
| 97 |
|
| 98 |
class_ = relationship("Class", back_populates="enrollments")
|
| 99 |
+
|
| 100 |
+
|
| 101 |
+
class ClassMembershipPlan(Base):
|
| 102 |
+
"""Many-to-many relationship between classes and membership plans."""
|
| 103 |
+
__tablename__ = "class_membership_plans"
|
| 104 |
+
|
| 105 |
+
id = Column(Integer, primary_key=True, index=True)
|
| 106 |
+
|
| 107 |
+
class_id = Column(
|
| 108 |
+
Integer,
|
| 109 |
+
ForeignKey("classes.id"),
|
| 110 |
+
nullable=False,
|
| 111 |
+
index=True,
|
| 112 |
+
)
|
| 113 |
+
|
| 114 |
+
membership_plan_id = Column(
|
| 115 |
+
Integer,
|
| 116 |
+
ForeignKey("membership_plans.id"),
|
| 117 |
+
nullable=False,
|
| 118 |
+
index=True,
|
| 119 |
+
)
|
| 120 |
+
|
| 121 |
+
created_at = Column(DateTime, default=datetime.utcnow)
|
| 122 |
+
|
| 123 |
+
# Relationships
|
| 124 |
+
class_ = relationship("Class", back_populates="membership_plans")
|