Finish Domain Model Structs 3 of 8 models exist in internal/core/models/models.go (AssessmentTemplate, Question, TestCase). The remaining 5 need to be added.
Already done AssessmentTemplate — id, title, description, durationMinutes, timestampsQuestion — id, assessmentTemplateId, type, prompt, options, correctAnswer, score, languageTestCase — id, questionId, input, expectedOutput, isHidden, scoreRemaining work Add the following structs to internal/core/models/models.go:
AssessmentInvite — id (int64), assessment_template_id (int64), candidate_email (string), invite_token (string), expires_at (time.Time), status (string), created_at, updated_atAssessmentAttempt — id (int64), invite_id (int64), started_at (*time.Time), completed_at (*time.Time), status (string), total_score (*int), created_at, updated_atAnswer — id (int64), attempt_id (int64), question_id (int64), response (json.RawMessage), score_awarded (*int), created_at, updated_atSubmission — id (int64), attempt_id (int64), question_id (int64), language (string), source_code (string), status (string), stdout (*string), stderr (*string), execution_ms (*int), memory_bytes (*int64), score_awarded (*int), created_at, updated_atSubmissionResult — id (int64), submission_id (int64), test_case_id (int64), passed (bool), actual_output (string), execution_ms (*int), created_atAll structs need json:"..." and db:"..." tags. Use pointer types for nullable fields consistent with existing models.
Finish Domain Model Structs
3 of 8 models exist in
internal/core/models/models.go(AssessmentTemplate, Question, TestCase). The remaining 5 need to be added.Already done
AssessmentTemplate— id, title, description, durationMinutes, timestampsQuestion— id, assessmentTemplateId, type, prompt, options, correctAnswer, score, languageTestCase— id, questionId, input, expectedOutput, isHidden, scoreRemaining work
Add the following structs to
internal/core/models/models.go:AssessmentInvite— id (int64), assessment_template_id (int64), candidate_email (string), invite_token (string), expires_at (time.Time), status (string), created_at, updated_atAssessmentAttempt— id (int64), invite_id (int64), started_at (*time.Time), completed_at (*time.Time), status (string), total_score (*int), created_at, updated_atAnswer— id (int64), attempt_id (int64), question_id (int64), response (json.RawMessage), score_awarded (*int), created_at, updated_atSubmission— id (int64), attempt_id (int64), question_id (int64), language (string), source_code (string), status (string), stdout (*string), stderr (*string), execution_ms (*int), memory_bytes (*int64), score_awarded (*int), created_at, updated_atSubmissionResult— id (int64), submission_id (int64), test_case_id (int64), passed (bool), actual_output (string), execution_ms (*int), created_atAll structs need
json:"..."anddb:"..."tags. Use pointer types for nullable fields consistent with existing models.