diff options
author | Marius Peter <marius.peter@tutanota.com> | 2022-06-05 14:20:40 +0200 |
---|---|---|
committer | Marius Peter <marius.peter@tutanota.com> | 2022-06-05 14:20:40 +0200 |
commit | 51c9fed15381421c4b7e8ba95af60b5204483d50 (patch) | |
tree | 9d4b9b9d55f44c9be23ab7f33c4a0b19ab9beaec /app/models.py |
First commit :baby:
Diffstat (limited to 'app/models.py')
-rw-r--r-- | app/models.py | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/app/models.py b/app/models.py new file mode 100644 index 0000000..5b61045 --- /dev/null +++ b/app/models.py @@ -0,0 +1,63 @@ +# -*- mode: python; -*- + + +from flask_sqlalchemy import SQLAlchemy +from sqlalchemy.sql import func + +from flask_login import UserMixin + +db = SQLAlchemy() + + +class User(UserMixin, db.Model): + """UserMixin inheritance required for features described here: + + https://stackoverflow.com/questions/63231163/what-is-the-usermixin-in-flask""" + + __tablename__ = "User" + + def get_id(self): + return self.primary_key + + primary_key = db.Column("UserId", db.Integer, primary_key=True) + username = db.Column("Username", db.String(20), nullable=False) + hashed_password = db.Column("HashedPassword", db.String(100), nullable=False) + name_first = db.Column("NameFirst", db.String(20), nullable=False) + name_last = db.Column("NameLast", db.String(20), nullable=False) + date_time_created = db.Column( + "DateTimeCreated", db.String, server_default=func.now() + ) + date_time_updated = db.Column( + "DateTimeUpdated", db.String, server_onupdate=func.now() + ) + downloads = db.relationship("Download", back_populates="user") + + def __repr__(self): + return f"<User {self.name_first} {self.name_last}>" + + +class Download(db.Model): + """One record per file downloaded.""" + + __tablename__ = "Download" + primary_key = db.Column("DownloadId", db.Integer, primary_key=True) + title = db.Column("Title", db.String(20), nullable=False) + url = db.Column("URL", db.String, nullable=False) + date_time_downloaded = db.Column( + "DateTimeDownloaded", db.String, server_default=func.now() + ) + user_id = db.Column("UserId", db.Integer, db.ForeignKey("User.UserId")) + user = db.relationship("User", back_populates="downloads") + + def __init__( + self, + title, + url, + user_id, + ): + self.title = title + self.url = url + self.user_id = user_id + + def __repr__(self): + return f"<Download {self.user.title} for {self.user.first_name} downloaded {self.date_time_downloaded}>" |