Dify-Learning / models.py
AtAI2024's picture
Upload 16 files
7cb4836 verified
from app import db
from datetime import datetime
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), unique=True, nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
created_at = db.Column(db.DateTime, default=datetime.utcnow)
# Relationship with progress
progress_entries = db.relationship('Progress', backref='user', lazy=True)
class Tutorial(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(200), nullable=False)
slug = db.Column(db.String(100), unique=True, nullable=False)
category = db.Column(db.String(50), nullable=False)
difficulty = db.Column(db.String(20), nullable=False) # beginner, intermediate, advanced
order_index = db.Column(db.Integer, nullable=False)
estimated_time = db.Column(db.Integer) # in minutes
description = db.Column(db.Text)
created_at = db.Column(db.DateTime, default=datetime.utcnow)
class Progress(db.Model):
id = db.Column(db.Integer, primary_key=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
tutorial_id = db.Column(db.Integer, db.ForeignKey('tutorial.id'), nullable=False)
completed = db.Column(db.Boolean, default=False)
current_step = db.Column(db.Integer, default=0)
completion_date = db.Column(db.DateTime)
created_at = db.Column(db.DateTime, default=datetime.utcnow)
updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
class Project(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(200), nullable=False)
slug = db.Column(db.String(100), unique=True, nullable=False)
category = db.Column(db.String(50), nullable=False)
difficulty = db.Column(db.String(20), nullable=False)
description = db.Column(db.Text)
estimated_time = db.Column(db.Integer) # in minutes
prerequisites = db.Column(db.Text) # JSON string of tutorial IDs
created_at = db.Column(db.DateTime, default=datetime.utcnow)