Spaces:
Running
Running
from datetime import datetime | |
import sqlalchemy as sa | |
from sqlalchemy.ext.declarative import declarative_base | |
from sqlalchemy.orm import sessionmaker | |
from sqlalchemy import create_engine | |
import os | |
Base = declarative_base() | |
class User(Base): | |
__tablename__ = 'users' | |
id = sa.Column(sa.Integer, primary_key=True) | |
username = sa.Column(sa.String(50), unique=True, nullable=False) | |
password = sa.Column(sa.String(255), nullable=False) | |
full_name = sa.Column(sa.String(100)) | |
email = sa.Column(sa.String(100)) | |
school = sa.Column(sa.String(100)) | |
grade = sa.Column(sa.String(20)) | |
profile_photo = sa.Column(sa.Text) # Store photo as base64 | |
created_at = sa.Column(sa.DateTime, default=datetime.utcnow) | |
updated_at = sa.Column(sa.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) | |
class History(Base): | |
__tablename__ = 'history' | |
id = sa.Column(sa.Integer, primary_key=True) | |
user_id = sa.Column(sa.Integer, sa.ForeignKey('users.id'), nullable=False) | |
equation = sa.Column(sa.String(255), nullable=False) | |
solution = sa.Column(sa.Text, nullable=False) | |
created_at = sa.Column(sa.DateTime, default=datetime.utcnow) | |
# Database setup | |
engine = create_engine(os.environ['DATABASE_URL']) | |
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) | |
def init_db(): | |
Base.metadata.create_all(bind=engine) | |
def get_db(): | |
db = SessionLocal() | |
try: | |
yield db | |
finally: | |
db.close() |