summaryrefslogtreecommitdiff
path: root/app/models.py
diff options
context:
space:
mode:
authorMarius Peter <marius.peter@tutanota.com>2022-06-05 14:20:40 +0200
committerMarius Peter <marius.peter@tutanota.com>2022-06-05 14:20:40 +0200
commit51c9fed15381421c4b7e8ba95af60b5204483d50 (patch)
tree9d4b9b9d55f44c9be23ab7f33c4a0b19ab9beaec /app/models.py
First commit :baby:
Diffstat (limited to 'app/models.py')
-rw-r--r--app/models.py63
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}>"
Copyright 2019--2024 Marius PETER