# -*- 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""