init
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
from datetime import datetime
|
||||
from . import db
|
||||
|
||||
|
||||
class Session(db.Model):
|
||||
__tablename__ = "sessions"
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
code = db.Column(db.String(6), unique=True, nullable=False, index=True)
|
||||
status = db.Column(db.String(20), nullable=False, default="waiting")
|
||||
current_recipe_index = db.Column(db.Integer, nullable=False, default=0)
|
||||
matched_recipe_id = db.Column(db.Integer, db.ForeignKey("recipes.id"), nullable=True)
|
||||
created_at = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
|
||||
|
||||
participants = db.relationship("Participant", backref="session", cascade="all, delete-orphan")
|
||||
recipes = db.relationship("Recipe", backref="session", cascade="all, delete-orphan", order_by="Recipe.position")
|
||||
|
||||
|
||||
class Participant(db.Model):
|
||||
__tablename__ = "participants"
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
session_id = db.Column(db.Integer, db.ForeignKey("sessions.id"), nullable=False)
|
||||
name = db.Column(db.String(80), nullable=False)
|
||||
is_host = db.Column(db.Boolean, nullable=False, default=False)
|
||||
created_at = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
|
||||
|
||||
|
||||
class Recipe(db.Model):
|
||||
__tablename__ = "recipes"
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
session_id = db.Column(db.Integer, db.ForeignKey("sessions.id"), nullable=False)
|
||||
position = db.Column(db.Integer, nullable=False)
|
||||
title = db.Column(db.String(255), nullable=False)
|
||||
url = db.Column(db.Text, nullable=False)
|
||||
image_url = db.Column(db.Text, nullable=True)
|
||||
meta = db.Column(db.String(255), nullable=True)
|
||||
|
||||
|
||||
class Vote(db.Model):
|
||||
__tablename__ = "votes"
|
||||
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
session_id = db.Column(db.Integer, db.ForeignKey("sessions.id"), nullable=False)
|
||||
participant_id = db.Column(db.Integer, db.ForeignKey("participants.id"), nullable=False)
|
||||
recipe_id = db.Column(db.Integer, db.ForeignKey("recipes.id"), nullable=False)
|
||||
vote = db.Column(db.String(3), nullable=False) # yes/no
|
||||
created_at = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
|
||||
|
||||
__table_args__ = (
|
||||
db.UniqueConstraint("participant_id", "recipe_id", name="uq_participant_recipe_vote"),
|
||||
)
|
||||
Reference in New Issue
Block a user