from datetime import datetime, timezone from app.extensions import db from sqlalchemy.sql import func from sqlalchemy.exc import IntegrityError import uuid class MembersPending(db.Model): __tablename__ = 'members_pending' id = db.Column(db.Integer, primary_key=True, autoincrement=True) uid = db.Column(db.String(150), nullable=False) firstname = db.Column(db.String(35), nullable=False) lastname = db.Column(db.String(35), nullable=True) email = db.Column(db.String(35), nullable=False) status = db.Column(db.Integer, default=0) added = db.Column(db.DateTime(timezone=False), server_default=func.now()) updated = db.Column(db.DateTime(timezone=False), server_default=func.now(), onupdate=func.now()) def to_dict(self): return { "id": self.id, "uid": self.uid, "firstname": self.firstname, "lastname": self.lastname, "email": self.email, "status": self.status, "added": self.added.isoformat() if self.added else None, "updated": self.updated.isoformat() if self.updated else None } def __repr__(self): return f'' @classmethod def add_members_pending(cls, firstname, lastname, email): # Save the response pending_data = cls( uid=str(uuid.uuid4()), firstname=firstname, lastname=lastname, email=email, added=datetime.now(timezone.utc), updated=datetime.now(timezone.utc) ) try: db.session.add(pending_data) except IntegrityError as err: raise ValueError(f"Database integrity error: {err}") return pending_data @classmethod def get_member_by_username(cls, username): """ Return an offer by its ID. """ member = cls.query.filter_by(username=str(username)).first() if not member: raise ValueError(f"Username = {username} not found") return member # { # "email": "ameye@chiefsoft.com", # "firstname": "Olusesan", # "lastname": "Ameye", # "isChecked": true # } ''' merms_panel=# \d members_pending Table "public.members_pending" Column | Type | Collation | Nullable | Default -----------+-----------------------------+-----------+----------+--------------------------------------------- id | integer | | not null | nextval('members_pending_id_seq'::regclass) uid | uuid | | | uuid_generate_v4() firstname | character varying(35) | | not null | lastname | character varying(35) | | not null | email | character varying(35) | | not null | status | integer | | | 0 added | timestamp without time zone | | | now() updated | timestamp without time zone | | | now() Indexes: "members_pending_id_key" UNIQUE CONSTRAINT, btree (id) merms_panel=# '''