fabianad commited on
Commit
ad748fc
·
verified ·
1 Parent(s): 27a9088

Create models.py

Browse files
Files changed (1) hide show
  1. models.py +45 -0
models.py ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from datetime import datetime
2
+ import sqlalchemy as sa
3
+ from sqlalchemy.ext.declarative import declarative_base
4
+ from sqlalchemy.orm import sessionmaker
5
+ from sqlalchemy import create_engine
6
+ import os
7
+
8
+ Base = declarative_base()
9
+
10
+ class User(Base):
11
+ __tablename__ = 'users'
12
+
13
+ id = sa.Column(sa.Integer, primary_key=True)
14
+ username = sa.Column(sa.String(50), unique=True, nullable=False)
15
+ password = sa.Column(sa.String(255), nullable=False)
16
+ full_name = sa.Column(sa.String(100))
17
+ email = sa.Column(sa.String(100))
18
+ school = sa.Column(sa.String(100))
19
+ grade = sa.Column(sa.String(20))
20
+ profile_photo = sa.Column(sa.Text) # Store photo as base64
21
+ created_at = sa.Column(sa.DateTime, default=datetime.utcnow)
22
+ updated_at = sa.Column(sa.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
23
+
24
+ class History(Base):
25
+ __tablename__ = 'history'
26
+
27
+ id = sa.Column(sa.Integer, primary_key=True)
28
+ user_id = sa.Column(sa.Integer, sa.ForeignKey('users.id'), nullable=False)
29
+ equation = sa.Column(sa.String(255), nullable=False)
30
+ solution = sa.Column(sa.Text, nullable=False)
31
+ created_at = sa.Column(sa.DateTime, default=datetime.utcnow)
32
+
33
+ # Database setup
34
+ engine = create_engine(os.environ['DATABASE_URL'])
35
+ SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
36
+
37
+ def init_db():
38
+ Base.metadata.create_all(bind=engine)
39
+
40
+ def get_db():
41
+ db = SessionLocal()
42
+ try:
43
+ yield db
44
+ finally:
45
+ db.close()