from flask_sqlalchemy import SQLAlchemy from flask_login import UserMixin from . import db class User(UserMixin, db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(150), unique=True, nullable=False) email = db.Column(db.String(150), unique=True, nullable=False) password = db.Column(db.String(150), nullable=False) recipes = db.relationship('Recipe', backref='author', lazy=True) photo = db.Column(db.String(150), nullable=False) class Recipe(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(150), nullable=False) description = db.Column(db.Text, nullable=False) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) ingredients = db.relationship('Ingredient', backref='recipe', lazy=True) instructions = db.relationship('Instruction', backref='recipe', lazy=True) class Ingredient(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100), nullable=False) quantity = db.Column(db.String(50), nullable=False) recipe_id = db.Column(db.Integer, db.ForeignKey('recipe.id'), nullable=False) class Instruction(db.Model): id = db.Column(db.Integer, primary_key=True) step = db.Column(db.Integer, nullable=False) description = db.Column(db.Text, nullable=False) recipe_id = db.Column(db.Integer, db.ForeignKey('recipe.id'), nullable=False)