Files
CHIEFSOFT\ameye fbe34566f5 Fix subs
2025-08-30 04:49:49 -04:00

68 lines
2.2 KiB
Python

from datetime import datetime, timezone
from app.extensions import db
from app.models.charge import Charge
from sqlalchemy.orm import relationship
from sqlalchemy.sql import func
from sqlalchemy.exc import IntegrityError
import uuid
class PaymentsSession(db.Model):
__tablename__ = 'payments_session'
id = db.Column(
db.Integer,
primary_key=True,
autoincrement=True,
)
uid = db.Column(db.String(150), nullable=True)
member_id = db.Column(db.Integer, nullable=False)
option_name = db.Column(db.String(100), nullable=False)
processor = db.Column(db.String(25), nullable=False)
session_id = db.Column(db.String(150), nullable=False)
status = db.Column(db.Integer, nullable=True, default=1)
added = db.Column(db.DateTime(timezone=True), server_default=func.now())
updated = db.Column(db.DateTime(timezone=True), server_default=func.now(), onupdate=func.now())
@classmethod
def get_payment_session_with_session_id(cls, session_id):
paySession = cls.query.filter_by(session_id=session_id).first()
if not paySession:
raise ValueError(f"paySession with ID {session_id} does not exist.")
return paySession
@classmethod
def add_payment_session(cls, member_id, option_name, processor, session_id):
# save the response
session_data = cls(
uid=str(uuid.uuid4()),
member_id=member_id,
option_name=option_name,
processor=processor,
session_id=session_id,
added=datetime.now(timezone.utc),
updated=datetime.now(timezone.utc)
)
try:
db.session.add(session_data)
except IntegrityError as err:
raise ValueError(f"database integrity error: {err}")
return session_data
def to_dict(self):
return {
"id": self.id,
"uid": self.uid,
"member_id": self.member_id,
"option_name": self.option_name,
"processor": self.processor,
"session_id": self.session_id,
"status": self.status,
"added": self.added,
"updated": self.updated
}
def __repr__(self):
return f'<PaymentsSession {self.id}>'