You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

35 lines
1.6 KiB

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)