From 51c9fed15381421c4b7e8ba95af60b5204483d50 Mon Sep 17 00:00:00 2001 From: Marius Peter Date: Sun, 5 Jun 2022 14:20:40 +0200 Subject: First commit :baby: --- app/models.py | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 app/models.py (limited to 'app/models.py') 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"" + + +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"" -- cgit v1.2.3