Files
rezept_finder/backend/app/models/session.py
T
2026-06-09 15:25:54 +02:00

54 lines
2.2 KiB
Python

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"),
)