From 545b31a15fefc638298bfd73e743480cb0587ef6 Mon Sep 17 00:00:00 2001 From: Blake Ridgway Date: Mon, 17 Feb 2025 19:46:36 -0600 Subject: [PATCH] feat: Added user profile and creation of profile --- models/User/user.py | 18 +++++++++++++++++- models/UserProfile/user_profile.py | 14 ++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 models/UserProfile/user_profile.py diff --git a/models/User/user.py b/models/User/user.py index 1c4d50b..d6f01a4 100644 --- a/models/User/user.py +++ b/models/User/user.py @@ -1,5 +1,7 @@ +from models.UserProfile.user_profile import UserProfile from werkzeug.security import generate_password_hash, check_password_hash from models import db +from sqlalchemy import event class User(db.Model): __tablename__ = 'users' @@ -8,6 +10,8 @@ class User(db.Model): username = db.Column(db.String(80), unique=True, nullable=False) _password = db.Column("password", db.String(255), nullable=False) + profile = db.relationship('UserProfile', back_populates='user', uselist=False, cascade="all, delete-orphan") + @property def password(self): return self._password @@ -20,4 +24,16 @@ class User(db.Model): self._password = raw_password def check_password(self, password): - return check_password_hash(self._password, password) \ No newline at end of file + return check_password_hash(self._password, password) + +@event.listens_for(User, 'after_insert') +def create_user_profile(mapper, connection, target): + connection.execute( + UserProfile.__table__.insert().values ( + user_id = target.id, + first_name = "", + last_name = "", + bio = "", + profile_picture = "" + ) + ) \ No newline at end of file diff --git a/models/UserProfile/user_profile.py b/models/UserProfile/user_profile.py new file mode 100644 index 0000000..2063b39 --- /dev/null +++ b/models/UserProfile/user_profile.py @@ -0,0 +1,14 @@ +from models import db + +class UserProfile(db.Model): + __tablename__ = 'user_profile' + + id = db.Column(db.Integer, primary_key = True) + user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable = False) + first_name = db.Column(db.String(80), nullable = False) + last_name = db.Column(db.String(80), nullable = False) + bio = db.Column(db.Text, nullable = True) + profile_picture = db.Column(db.String(255), nullable = True) + + user = db.relationship('User', back_populates='profile') + \ No newline at end of file