Update app/models/membership_invite.py
Browse files
app/models/membership_invite.py
CHANGED
|
@@ -1,9 +1,27 @@
|
|
| 1 |
# app/models/membership_invite.py
|
| 2 |
from datetime import datetime
|
|
|
|
| 3 |
from sqlalchemy import Column, Integer, String, Text, DateTime, ForeignKey
|
|
|
|
| 4 |
from core.database import Base
|
| 5 |
|
| 6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 7 |
class MembershipInvite(Base):
|
| 8 |
__tablename__ = "membership_invites"
|
| 9 |
|
|
@@ -19,6 +37,7 @@ class MembershipInvite(Base):
|
|
| 19 |
invited_by = Column(String(255), nullable=True) # Admin email/name
|
| 20 |
invite_date = Column(DateTime, default=datetime.utcnow)
|
| 21 |
completed_at = Column(DateTime, nullable=True)
|
|
|
|
| 22 |
created_at = Column(DateTime, default=datetime.utcnow)
|
| 23 |
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
|
| 24 |
|
|
|
|
| 1 |
# app/models/membership_invite.py
|
| 2 |
from datetime import datetime
|
| 3 |
+
import json
|
| 4 |
from sqlalchemy import Column, Integer, String, Text, DateTime, ForeignKey
|
| 5 |
+
from sqlalchemy.types import TypeDecorator, TEXT
|
| 6 |
from core.database import Base
|
| 7 |
|
| 8 |
|
| 9 |
+
class JSONEncodedDict(TypeDecorator):
|
| 10 |
+
"""Represents an immutable structure as a json-encoded string."""
|
| 11 |
+
impl = TEXT
|
| 12 |
+
cache_ok = True
|
| 13 |
+
|
| 14 |
+
def process_bind_param(self, value, dialect):
|
| 15 |
+
if value is not None:
|
| 16 |
+
return json.dumps(value)
|
| 17 |
+
return None
|
| 18 |
+
|
| 19 |
+
def process_result_value(self, value, dialect):
|
| 20 |
+
if value is not None:
|
| 21 |
+
return json.loads(value)
|
| 22 |
+
return None
|
| 23 |
+
|
| 24 |
+
|
| 25 |
class MembershipInvite(Base):
|
| 26 |
__tablename__ = "membership_invites"
|
| 27 |
|
|
|
|
| 37 |
invited_by = Column(String(255), nullable=True) # Admin email/name
|
| 38 |
invite_date = Column(DateTime, default=datetime.utcnow)
|
| 39 |
completed_at = Column(DateTime, nullable=True)
|
| 40 |
+
students_data = Column(JSONEncodedDict, nullable=True) # Store student data temporarily before payment
|
| 41 |
created_at = Column(DateTime, default=datetime.utcnow)
|
| 42 |
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
|
| 43 |
|