class Order(db.Model): id = db.Column(db.Integer, primary_key=True) order_date = db.Column(db.Date) books = db.relationship('Book', secondary=transactions) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) def __repr__(self): return f"Order( orderID: {self.id}, userID: {self.user_id}, date: {self.order_date})"
class Cart(db.Model): id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) date = db.Column(db.Date) cart_items = db.relationship('CartItem', backref=db.backref('cart'), lazy=True) def __repr__(self): return f"ShoppingCart( cart_id: '{self.id}', user_id: '{self.user_id}')"
class Comment(db.Model): id = db.Column(db.Integer, primary_key=True) content = db.Column(db.Text) creation_date = db.Column(db.Date) book_isbn = db.Column(db.BigInteger, db.ForeignKey('book.isbn')) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) def __repr__(self): return f"Comment( commentID: '{self.id}', book: '{self.book_isbn}', userID: '{self.user_id}')"
class Author(db.Model): name = db.Column(db.String(100), primary_key=True) info = db.Column(db.Text, nullable=False) books = db.relationship('Book', secondary=publish, backref=db.backref('authors')) def __repr__(self): return f"Author( name: '{self.name}' )"
class CartItem(db.Model): id = db.Column(db.Integer, primary_key=True) count = db.Column(db.Integer) cart_id = db.Column(db.Integer, db.ForeignKey('cart.id')) book_isbn = db.Column(db.Integer, db.ForeignKey('book.isbn')) price = db.Column(db.Integer) def __repr__(self): return f"CartItem( id: '{self.id}', cart_id: '{self.cart_id}', book_isbn: '{self.book_isbn}', count: '{self.count}', price: '{self.price}')"
class Author(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100),unique=True) info = db.Column(db.Text) img = db.Column(db.String(100)) books = db.relationship('Book', secondary=author_book_relationship, backref=db.backref('authors')) def __repr__(self): return f"Author( name: '{self.name}' )"
class Book(db.Model): isbn = db.Column(db.BigInteger, primary_key=True) title = db.Column(db.String(100), unique=True, nullable=False) date_pub = db.Column(db.String(100)) genre = db.Column(db.String(100)) rating = db.Column(db.Float) numRatings = db.Column(db.BigInteger) price = db.Column(db.Float) img = db.Column(db.String(100)) pub_info = db.Column(db.Text) book_description = db.Column(db.Text) comments = db.relationship('Comment', backref=db.backref('book'), lazy=True) carts = db.relationship('CartItem', backref=db.backref('book'), lazy=True) def __repr__(self): return f"Book( titel: '{self.title}' )"
class Comment(db.Model): id = db.Column(db.Integer, primary_key=True) content = db.Column(db.Text) creation_date = db.Column(db.Text) rating = db.Column(db.Float) book_isbn = db.Column(db.BigInteger, db.ForeignKey('book.isbn')) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) anon = db.Column(db.Integer) def __repr__(self): return f"Comment( commentID: '{self.id}', rating: '{self.rating}', content: '{self.content}', book: '{self.book_isbn}', userID: '{self.user_id}', anon: '{self.anon}')"
class CreditCard(db.Model): id = db.Column(db.Integer, primary_key=True) card_type = db.Column(db.String(20)) # I actually don't know if this cvv attribute shoult be a string or an Integer card_number = db.Column(db.String(20), unique=True) cvv = db.Column(db.Integer) exp_date = db.Column(db.Date) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) def __repr__(self): return f"CreditCard( card_number: '{self.card_number[:4]}', user: '******')"
class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) nickname = db.Column(db.String(15), unique=True) name = db.Column(db.String(30), nullable=False) username = db.Column(db.String(20), unique=True, nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) password = db.Column(db.String(60), nullable=False) address = db.Column(db.String) orders = db.relationship('Order', backref=db.backref('user'), lazy=True) comments = db.relationship('Comment', backref=db.backref('user'), lazy=True) credit_cards = db.relationship('CreditCard', backref=db.backref('user'), lazy=True) cart = db.relationship('Cart', backref=db.backref('user'), lazy=True) def __repr__(self): return f"User( email: '{self.email}', username: '******', password: '******')"
from geektext import db #relationship table between Author and Book. since it is a many to many relaitonship we need a new table called publish publish = db.Table( 'publish', db.Column('book_isbn', db.BigInteger, db.ForeignKey('book.isbn'), primary_key=True), db.Column('author_name', db.String(100), db.ForeignKey('author.name'), primary_key=True)) class Author(db.Model): name = db.Column(db.String(100), primary_key=True) info = db.Column(db.Text, nullable=False) books = db.relationship('Book', secondary=publish, backref=db.backref('authors')) def __repr__(self): return f"Author( name: '{self.name}' )" transactions = db.Table( 'transactions', db.Column('book_isbn', db.BigInteger,