|
|
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, order_by='Ingredient.order')
|
|
|
instructions = db.relationship('Instruction', backref='recipe', lazy=True, order_by='Instruction.order')
|
|
|
|
|
|
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)
|
|
|
order = db.Column(db.Integer, 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)
|
|
|
order = db.Column(db.Integer, nullable=False)
|
|
|
recipe_id = db.Column(db.Integer, db.ForeignKey('recipe.id'), nullable=False)
|