Moncey10 commited on
Commit
b3d29a7
·
1 Parent(s): b9a265c

Update models.py

Browse files
Files changed (1) hide show
  1. models.py +90 -90
models.py CHANGED
@@ -1,90 +1,90 @@
1
- from sqlalchemy import Column, Integer, String, Text, DateTime, ForeignKey, UniqueConstraint
2
- from sqlalchemy.orm import relationship
3
- from sqlalchemy.sql import func
4
- from db import Base
5
-
6
-
7
- class Student(Base):
8
- __tablename__ = "students"
9
-
10
- id = Column(Integer, primary_key=True, index=True)
11
- student_id = Column(String(100), unique=True, index=True, nullable=False)
12
- name = Column(String(200), nullable=True)
13
- email = Column(String(200), nullable=True)
14
- created_at = Column(DateTime(timezone=True), server_default=func.now())
15
-
16
-
17
- class HomeworkAssignment(Base):
18
- __tablename__ = "homework_assignments"
19
-
20
- id = Column(Integer, primary_key=True, index=True)
21
- homework_id = Column(String(100), unique=True, index=True, nullable=False)
22
- title = Column(String(255), nullable=True)
23
- description = Column(Text, nullable=True)
24
- created_at = Column(DateTime(timezone=True), server_default=func.now())
25
-
26
-
27
- class Submission(Base):
28
- __tablename__ = "submissions"
29
-
30
- id = Column(Integer, primary_key=True, index=True)
31
-
32
- student_id = Column(String(100), index=True, nullable=False)
33
- homework_id = Column(String(100), index=True, nullable=False)
34
-
35
- student_ref_id = Column(Integer, ForeignKey("students.id"), nullable=True)
36
- homework_ref_id = Column(Integer, ForeignKey("homework_assignments.id"), nullable=True)
37
-
38
- status = Column(String(50), default="processed")
39
- created_at = Column(DateTime(timezone=True), server_default=func.now())
40
-
41
- student = relationship("Student", lazy="joined")
42
- homework = relationship("HomeworkAssignment", lazy="joined")
43
-
44
-
45
- class HomeworkImage(Base):
46
- __tablename__ = "homework_images"
47
-
48
- id = Column(Integer, primary_key=True, index=True)
49
- submission_id = Column(Integer, ForeignKey("submissions.id"), nullable=True)
50
-
51
- homework_id = Column(String(100), index=True, nullable=False)
52
- role = Column(String(20), nullable=False) # teacher/student
53
-
54
- filename = Column(String(255), nullable=False)
55
- content_type = Column(String(100), nullable=True)
56
-
57
- disk_path = Column(String(500), nullable=True)
58
- ocr_text = Column(Text, nullable=True)
59
-
60
- created_at = Column(DateTime(timezone=True), server_default=func.now())
61
-
62
-
63
- class Result(Base):
64
- __tablename__ = "results"
65
-
66
- id = Column(Integer, primary_key=True, index=True)
67
- submission_id = Column(Integer, ForeignKey("submissions.id"), nullable=False)
68
-
69
- filename = Column(String(255), nullable=False)
70
- extracted_text = Column(Text, nullable=True)
71
- segmented_answers_json = Column(Text, nullable=True)
72
- validation_json = Column(Text, nullable=True)
73
-
74
- created_at = Column(DateTime(timezone=True), server_default=func.now())
75
-
76
- __table_args__ = (
77
- UniqueConstraint("submission_id", "filename", name="uq_result_submission_filename"),
78
- )
79
-
80
-
81
- class AuditLog(Base):
82
- __tablename__ = "audit_logs"
83
-
84
- id = Column(Integer, primary_key=True, index=True)
85
- submission_id = Column(Integer, ForeignKey("submissions.id"), nullable=True)
86
-
87
- level = Column(String(20), default="INFO")
88
- message = Column(Text, nullable=False)
89
-
90
- created_at = Column(DateTime(timezone=True), server_default=func.now())
 
1
+ from sqlalchemy import Column, Integer, String, Text, DateTime, ForeignKey, UniqueConstraint
2
+ from sqlalchemy.orm import relationship
3
+ from sqlalchemy.sql import func
4
+ from db import Base
5
+
6
+
7
+ class Student(Base):
8
+ __tablename__ = "students"
9
+
10
+ id = Column(Integer, primary_key=True, index=True)
11
+ student_id = Column(String(100), unique=True, index=True, nullable=False)
12
+ name = Column(String(200), nullable=True)
13
+ email = Column(String(200), nullable=True)
14
+ created_at = Column(DateTime(timezone=True), server_default=func.now())
15
+
16
+
17
+ class HomeworkAssignment(Base):
18
+ __tablename__ = "homework_assignments"
19
+
20
+ id = Column(Integer, primary_key=True, index=True)
21
+ homework_id = Column(String(100), unique=True, index=True, nullable=False)
22
+ title = Column(String(255), nullable=True)
23
+ description = Column(Text, nullable=True)
24
+ created_at = Column(DateTime(timezone=True), server_default=func.now())
25
+
26
+
27
+ class Submission(Base):
28
+ __tablename__ = "submissions"
29
+
30
+ id = Column(Integer, primary_key=True, index=True)
31
+
32
+ student_id = Column(String(100), index=True, nullable=False)
33
+ homework_id = Column(String(100), index=True, nullable=False)
34
+
35
+ student_ref_id = Column(Integer, ForeignKey("students.id"), nullable=True)
36
+ homework_ref_id = Column(Integer, ForeignKey("homework_assignments.id"), nullable=True)
37
+
38
+ status = Column(String(50), default="processed")
39
+ created_at = Column(DateTime(timezone=True), server_default=func.now())
40
+
41
+ student = relationship("Student", lazy="joined")
42
+ homework = relationship("HomeworkAssignment", lazy="joined")
43
+
44
+
45
+ class HomeworkImage(Base):
46
+ __tablename__ = "homework_images"
47
+
48
+ id = Column(Integer, primary_key=True, index=True)
49
+ submission_id = Column(Integer, ForeignKey("submissions.id"), nullable=True)
50
+
51
+ homework_id = Column(String(100), index=True, nullable=False)
52
+ role = Column(String(20), nullable=False) # teacher/student
53
+
54
+ filename = Column(String(255), nullable=False)
55
+ content_type = Column(String(100), nullable=True)
56
+
57
+ disk_path = Column(String(500), nullable=True)
58
+ ocr_text = Column(Text, nullable=True)
59
+
60
+ created_at = Column(DateTime(timezone=True), server_default=func.now())
61
+
62
+
63
+ class Result(Base):
64
+ __tablename__ = "results"
65
+
66
+ id = Column(Integer, primary_key=True, index=True)
67
+ submission_id = Column(Integer, ForeignKey("submissions.id"), nullable=False)
68
+
69
+ filename = Column(String(255), nullable=False)
70
+ extracted_text = Column(Text, nullable=True)
71
+ segmented_answers_json = Column(Text, nullable=True)
72
+ validation_json = Column(Text, nullable=True)
73
+
74
+ created_at = Column(DateTime(timezone=True), server_default=func.now())
75
+
76
+ __table_args__ = (
77
+ UniqueConstraint("submission_id", "filename", name="uq_result_submission_filename"),
78
+ )
79
+
80
+
81
+ class AuditLog(Base):
82
+ __tablename__ = "audit_logs"
83
+
84
+ id = Column(Integer, primary_key=True, index=True)
85
+ submission_id = Column(Integer, ForeignKey("submissions.id"), nullable=True)
86
+
87
+ level = Column(String(20), default="INFO")
88
+ message = Column(Text, nullable=False)
89
+
90
+ created_at = Column(DateTime(timezone=True), server_default=func.now())