Skip to main content

AnswerSubmission

The AnswerSubmission model tracks user answers to regular challenges. Table name: answer_submission

Fields

id
Integer
required
Primary key, auto-incrementing
user_id
Integer
required
Foreign key to users.id (indexed)
challenge_id
Integer
required
Foreign key to challenge.id (indexed)
answer_box_id
Integer
required
Foreign key to challenge_answer_box.id (indexed)
answer
String(100)
required
User’s submitted answer
is_correct
Boolean
Whether the answer was correct (nullable)
submitted_at
DateTime
default:"datetime.datetime.now"
required
Submission timestamp (indexed)

Relationships

Indexes

Composite indexes for optimized query patterns:
  • ix_answer_submission_user_challenge on (user_id, challenge_id)
  • ix_answer_submission_challenge_submitted on (challenge_id, submitted_at)

SummerSubmission

The SummerSubmission model tracks user answers to summer competition challenges. Table name: summer_submission

Fields

id
Integer
required
Primary key, auto-incrementing
user_id
Integer
required
Foreign key to users.id (indexed)
school_id
Integer
required
Foreign key to school.id (indexed)
challenge_id
Integer
required
Foreign key to summer_challenge.id (indexed)
answer_box_id
Integer
required
Foreign key to summer_challenge_answer_box.id (indexed)
answer
String(100)
required
User’s submitted answer
is_correct
Boolean
Whether the answer was correct (nullable)
submitted_at
DateTime
default:"datetime.datetime.now"
required
Submission timestamp (indexed)
points_awarded
Integer
default:"0"
required
Points awarded for this submission

Relationships

Indexes

Composite indexes for optimized query patterns:
  • ix_summer_submission_user_challenge on (user_id, challenge_id)
  • ix_summer_submission_school_points on (school_id, points_awarded)

Build docs developers (and LLMs) love