first commit
This commit is contained in:
53
models.py
Normal file
53
models.py
Normal file
@@ -0,0 +1,53 @@
|
||||
from flask_sqlalchemy import SQLAlchemy
|
||||
from datetime import datetime
|
||||
|
||||
db = SQLAlchemy()
|
||||
|
||||
class Player(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
matrix_id = db.Column(db.String(255), unique=True, nullable=False)
|
||||
current_step = db.Column(db.Integer, default=1)
|
||||
# Track per-player flow state and hint indices
|
||||
stage = db.Column(db.String(50), nullable=True) # e.g. 'intro_needed','awaiting_code','awaiting_answer'
|
||||
location_hint_index = db.Column(db.Integer, default=0)
|
||||
question_hint_index = db.Column(db.Integer, default=0)
|
||||
last_sent_step = db.Column(db.Integer, nullable=True)
|
||||
created_at = db.Column(db.DateTime, default=datetime.utcnow)
|
||||
|
||||
|
||||
# Step model matching the CSV columns expected by the application:
|
||||
# step, pre_text, location, location_enigma, location_hint, code,
|
||||
# question, question_hint, answer, comments, success_text
|
||||
class Step(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
step = db.Column(db.Integer, unique=True, nullable=False)
|
||||
pre_text = db.Column(db.Text) # pre_texttexte to show at start of each steps
|
||||
location = db.Column(db.String(255)) # location (for game master)
|
||||
location_enigma = db.Column(db.Text)
|
||||
location_hint = db.Column(db.String(255)) # location_hint
|
||||
code = db.Column(db.String(50), nullable=False)
|
||||
question = db.Column(db.Text) # question
|
||||
question_hint = db.Column(db.Text) # question_hint
|
||||
answer = db.Column(db.Text) # answer
|
||||
comments = db.Column(db.Text) # comments
|
||||
success_text = db.Column(db.Text) # success_text
|
||||
|
||||
# Display/media fields
|
||||
|
||||
image_path = db.Column(db.String(255))
|
||||
audio_path = db.Column(db.String(255))
|
||||
|
||||
|
||||
class MessageLog(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
player_id = db.Column(db.Integer, db.ForeignKey('player.id'))
|
||||
sender = db.Column(db.String(50)) # mag, lia, admin
|
||||
content = db.Column(db.Text)
|
||||
timestamp = db.Column(db.DateTime, default=datetime.utcnow)
|
||||
|
||||
|
||||
class GameSession(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True)
|
||||
room_id = db.Column(db.String(255), unique=True, nullable=False)
|
||||
player_matrix_id = db.Column(db.String(255), nullable=False) # seul ce matrix_id peut discuter avec l'IA
|
||||
started_at = db.Column(db.DateTime, default=datetime.utcnow)
|
||||
Reference in New Issue
Block a user