// Code generated by sqlc. DO NOT EDIT. // versions: // sqlc v1.30.0 package sqlc import ( "database/sql/driver" "fmt" "github.com/jackc/pgx/v5/pgtype" ) type AnswerStatus string const ( AnswerStatusNotStarted AnswerStatus = "not_started" AnswerStatusInProgress AnswerStatus = "in_progress" AnswerStatusSubmitted AnswerStatus = "submitted" AnswerStatusReviewed AnswerStatus = "reviewed" ) func (e *AnswerStatus) Scan(src interface{}) error { switch s := src.(type) { case []byte: *e = AnswerStatus(s) case string: *e = AnswerStatus(s) default: return fmt.Errorf("unsupported scan type for AnswerStatus: %T", src) } return nil } type NullAnswerStatus struct { AnswerStatus AnswerStatus `json:"answer_status"` Valid bool `json:"valid"` // Valid is true if AnswerStatus is not NULL } // Scan implements the Scanner interface. func (ns *NullAnswerStatus) Scan(value interface{}) error { if value == nil { ns.AnswerStatus, ns.Valid = "", false return nil } ns.Valid = true return ns.AnswerStatus.Scan(value) } // Value implements the driver Valuer interface. func (ns NullAnswerStatus) Value() (driver.Value, error) { if !ns.Valid { return nil, nil } return string(ns.AnswerStatus), nil } type AssignmentNextStepOutcome string const ( AssignmentNextStepOutcomeRedo AssignmentNextStepOutcome = "redo" AssignmentNextStepOutcomeAccept AssignmentNextStepOutcome = "accept" AssignmentNextStepOutcomeSupport AssignmentNextStepOutcome = "support" ) func (e *AssignmentNextStepOutcome) Scan(src interface{}) error { switch s := src.(type) { case []byte: *e = AssignmentNextStepOutcome(s) case string: *e = AssignmentNextStepOutcome(s) default: return fmt.Errorf("unsupported scan type for AssignmentNextStepOutcome: %T", src) } return nil } type NullAssignmentNextStepOutcome struct { AssignmentNextStepOutcome AssignmentNextStepOutcome `json:"assignment_next_step_outcome"` Valid bool `json:"valid"` // Valid is true if AssignmentNextStepOutcome is not NULL } // Scan implements the Scanner interface. func (ns *NullAssignmentNextStepOutcome) Scan(value interface{}) error { if value == nil { ns.AssignmentNextStepOutcome, ns.Valid = "", false return nil } ns.Valid = true return ns.AssignmentNextStepOutcome.Scan(value) } // Value implements the driver Valuer interface. func (ns NullAssignmentNextStepOutcome) Value() (driver.Value, error) { if !ns.Valid { return nil, nil } return string(ns.AssignmentNextStepOutcome), nil } type AssignmentPassStatus string const ( AssignmentPassStatusPending AssignmentPassStatus = "pending" AssignmentPassStatusPass AssignmentPassStatus = "pass" AssignmentPassStatusNoPass AssignmentPassStatus = "no_pass" ) func (e *AssignmentPassStatus) Scan(src interface{}) error { switch s := src.(type) { case []byte: *e = AssignmentPassStatus(s) case string: *e = AssignmentPassStatus(s) default: return fmt.Errorf("unsupported scan type for AssignmentPassStatus: %T", src) } return nil } type NullAssignmentPassStatus struct { AssignmentPassStatus AssignmentPassStatus `json:"assignment_pass_status"` Valid bool `json:"valid"` // Valid is true if AssignmentPassStatus is not NULL } // Scan implements the Scanner interface. func (ns *NullAssignmentPassStatus) Scan(value interface{}) error { if value == nil { ns.AssignmentPassStatus, ns.Valid = "", false return nil } ns.Valid = true return ns.AssignmentPassStatus.Scan(value) } // Value implements the driver Valuer interface. func (ns NullAssignmentPassStatus) Value() (driver.Value, error) { if !ns.Valid { return nil, nil } return string(ns.AssignmentPassStatus), nil } type AssignmentStatus string const ( AssignmentStatusDraft AssignmentStatus = "draft" AssignmentStatusAssigned AssignmentStatus = "assigned" AssignmentStatusClosed AssignmentStatus = "closed" ) func (e *AssignmentStatus) Scan(src interface{}) error { switch s := src.(type) { case []byte: *e = AssignmentStatus(s) case string: *e = AssignmentStatus(s) default: return fmt.Errorf("unsupported scan type for AssignmentStatus: %T", src) } return nil } type NullAssignmentStatus struct { AssignmentStatus AssignmentStatus `json:"assignment_status"` Valid bool `json:"valid"` // Valid is true if AssignmentStatus is not NULL } // Scan implements the Scanner interface. func (ns *NullAssignmentStatus) Scan(value interface{}) error { if value == nil { ns.AssignmentStatus, ns.Valid = "", false return nil } ns.Valid = true return ns.AssignmentStatus.Scan(value) } // Value implements the driver Valuer interface. func (ns NullAssignmentStatus) Value() (driver.Value, error) { if !ns.Valid { return nil, nil } return string(ns.AssignmentStatus), nil } type QuestionDifficulty string const ( QuestionDifficultyEasy QuestionDifficulty = "easy" QuestionDifficultyMedium QuestionDifficulty = "medium" QuestionDifficultyHard QuestionDifficulty = "hard" ) func (e *QuestionDifficulty) Scan(src interface{}) error { switch s := src.(type) { case []byte: *e = QuestionDifficulty(s) case string: *e = QuestionDifficulty(s) default: return fmt.Errorf("unsupported scan type for QuestionDifficulty: %T", src) } return nil } type NullQuestionDifficulty struct { QuestionDifficulty QuestionDifficulty `json:"question_difficulty"` Valid bool `json:"valid"` // Valid is true if QuestionDifficulty is not NULL } // Scan implements the Scanner interface. func (ns *NullQuestionDifficulty) Scan(value interface{}) error { if value == nil { ns.QuestionDifficulty, ns.Valid = "", false return nil } ns.Valid = true return ns.QuestionDifficulty.Scan(value) } // Value implements the driver Valuer interface. func (ns NullQuestionDifficulty) Value() (driver.Value, error) { if !ns.Valid { return nil, nil } return string(ns.QuestionDifficulty), nil } type QuestionStatus string const ( QuestionStatusDraft QuestionStatus = "draft" QuestionStatusPublished QuestionStatus = "published" QuestionStatusArchived QuestionStatus = "archived" ) func (e *QuestionStatus) Scan(src interface{}) error { switch s := src.(type) { case []byte: *e = QuestionStatus(s) case string: *e = QuestionStatus(s) default: return fmt.Errorf("unsupported scan type for QuestionStatus: %T", src) } return nil } type NullQuestionStatus struct { QuestionStatus QuestionStatus `json:"question_status"` Valid bool `json:"valid"` // Valid is true if QuestionStatus is not NULL } // Scan implements the Scanner interface. func (ns *NullQuestionStatus) Scan(value interface{}) error { if value == nil { ns.QuestionStatus, ns.Valid = "", false return nil } ns.Valid = true return ns.QuestionStatus.Scan(value) } // Value implements the driver Valuer interface. func (ns NullQuestionStatus) Value() (driver.Value, error) { if !ns.Valid { return nil, nil } return string(ns.QuestionStatus), nil } type QuestionTopic string const ( QuestionTopicPlaceValue QuestionTopic = "place_value" QuestionTopicArithmetic QuestionTopic = "arithmetic" QuestionTopicNegativeNumbers QuestionTopic = "negative_numbers" QuestionTopicBidmas QuestionTopic = "bidmas" QuestionTopicFractions QuestionTopic = "fractions" QuestionTopicAlgebra QuestionTopic = "algebra" QuestionTopicGeometry QuestionTopic = "geometry" QuestionTopicData QuestionTopic = "data" ) func (e *QuestionTopic) Scan(src interface{}) error { switch s := src.(type) { case []byte: *e = QuestionTopic(s) case string: *e = QuestionTopic(s) default: return fmt.Errorf("unsupported scan type for QuestionTopic: %T", src) } return nil } type NullQuestionTopic struct { QuestionTopic QuestionTopic `json:"question_topic"` Valid bool `json:"valid"` // Valid is true if QuestionTopic is not NULL } // Scan implements the Scanner interface. func (ns *NullQuestionTopic) Scan(value interface{}) error { if value == nil { ns.QuestionTopic, ns.Valid = "", false return nil } ns.Valid = true return ns.QuestionTopic.Scan(value) } // Value implements the driver Valuer interface. func (ns NullQuestionTopic) Value() (driver.Value, error) { if !ns.Valid { return nil, nil } return string(ns.QuestionTopic), nil } type UserRole string const ( UserRoleStudent UserRole = "student" UserRoleTeacher UserRole = "teacher" ) func (e *UserRole) Scan(src interface{}) error { switch s := src.(type) { case []byte: *e = UserRole(s) case string: *e = UserRole(s) default: return fmt.Errorf("unsupported scan type for UserRole: %T", src) } return nil } type NullUserRole struct { UserRole UserRole `json:"user_role"` Valid bool `json:"valid"` // Valid is true if UserRole is not NULL } // Scan implements the Scanner interface. func (ns *NullUserRole) Scan(value interface{}) error { if value == nil { ns.UserRole, ns.Valid = "", false return nil } ns.Valid = true return ns.UserRole.Scan(value) } // Value implements the driver Valuer interface. func (ns NullUserRole) Value() (driver.Value, error) { if !ns.Valid { return nil, nil } return string(ns.UserRole), nil } type Assignment struct { ID int64 `json:"id"` ClassroomID int64 `json:"classroom_id"` TeacherID int64 `json:"teacher_id"` Title string `json:"title"` Instructions pgtype.Text `json:"instructions"` Status AssignmentStatus `json:"status"` DueAt pgtype.Timestamptz `json:"due_at"` PublishedAt pgtype.Timestamptz `json:"published_at"` CreatedAt pgtype.Timestamptz `json:"created_at"` UpdatedAt pgtype.Timestamptz `json:"updated_at"` PassThreshold pgtype.Numeric `json:"pass_threshold"` } type AssignmentAssignee struct { AssignmentID int64 `json:"assignment_id"` StudentID int64 `json:"student_id"` AssignedAt pgtype.Timestamptz `json:"assigned_at"` AiFeedback pgtype.Text `json:"ai_feedback"` TeacherFeedback pgtype.Text `json:"teacher_feedback"` OverallScore pgtype.Numeric `json:"overall_score"` PassThreshold pgtype.Numeric `json:"pass_threshold"` PassStatus AssignmentPassStatus `json:"pass_status"` PassStatusOverride NullAssignmentPassStatus `json:"pass_status_override"` NextStepOutcome NullAssignmentNextStepOutcome `json:"next_step_outcome"` RedoPlan pgtype.Text `json:"redo_plan"` RedoPlanGeneratedAt pgtype.Timestamptz `json:"redo_plan_generated_at"` } type AssignmentQuestion struct { AssignmentID int64 `json:"assignment_id"` QuestionID int64 `json:"question_id"` Position int32 `json:"position"` } type AssignmentStudentQuestion struct { ID int64 `json:"id"` AssignmentID int64 `json:"assignment_id"` StudentID int64 `json:"student_id"` QuestionID int64 `json:"question_id"` Position int32 `json:"position"` SourceBucket string `json:"source_bucket"` SourceTopic NullQuestionTopic `json:"source_topic"` SourceDifficulty NullQuestionDifficulty `json:"source_difficulty"` GeneratorSeed pgtype.Int8 `json:"generator_seed"` CreatedAt pgtype.Timestamptz `json:"created_at"` } type Classroom struct { ID int64 `json:"id"` TeacherID int64 `json:"teacher_id"` Name string `json:"name"` Code pgtype.Text `json:"code"` Description pgtype.Text `json:"description"` CreatedAt pgtype.Timestamptz `json:"created_at"` UpdatedAt pgtype.Timestamptz `json:"updated_at"` } type ClassroomStudent struct { ClassroomID int64 `json:"classroom_id"` StudentID int64 `json:"student_id"` JoinedAt pgtype.Timestamptz `json:"joined_at"` } type Message struct { ID int64 `json:"id"` ThreadID int64 `json:"thread_id"` SenderUserID int64 `json:"sender_user_id"` Body string `json:"body"` CreatedAt pgtype.Timestamptz `json:"created_at"` UpdatedAt pgtype.Timestamptz `json:"updated_at"` } type MessageThread struct { ID int64 `json:"id"` CreatedByUserID int64 `json:"created_by_user_id"` Subject string `json:"subject"` CreatedAt pgtype.Timestamptz `json:"created_at"` UpdatedAt pgtype.Timestamptz `json:"updated_at"` } type MessageThreadParticipant struct { ThreadID int64 `json:"thread_id"` UserID int64 `json:"user_id"` JoinedAt pgtype.Timestamptz `json:"joined_at"` LastReadAt pgtype.Timestamptz `json:"last_read_at"` ArchivedAt pgtype.Timestamptz `json:"archived_at"` } type Profile struct { UserID int64 `json:"user_id"` PreferredName pgtype.Text `json:"preferred_name"` ProfileIconUrl pgtype.Text `json:"profile_icon_url"` Headline pgtype.Text `json:"headline"` Bio pgtype.Text `json:"bio"` Timezone pgtype.Text `json:"timezone"` Locale pgtype.Text `json:"locale"` GradeLevel pgtype.Text `json:"grade_level"` LearningGoal pgtype.Text `json:"learning_goal"` CreatedAt pgtype.Timestamptz `json:"created_at"` UpdatedAt pgtype.Timestamptz `json:"updated_at"` } type Question struct { ID int64 `json:"id"` AuthorTeacherID int64 `json:"author_teacher_id"` Title string `json:"title"` Prompt string `json:"prompt"` Subject pgtype.Text `json:"subject"` Source pgtype.Text `json:"source"` Status QuestionStatus `json:"status"` CreatedAt pgtype.Timestamptz `json:"created_at"` UpdatedAt pgtype.Timestamptz `json:"updated_at"` CorrectAnswer pgtype.Text `json:"correct_answer"` Topic NullQuestionTopic `json:"topic"` Difficulty NullQuestionDifficulty `json:"difficulty"` } type QuestionTag struct { QuestionID int64 `json:"question_id"` TagID int64 `json:"tag_id"` } type StudentAnswer struct { ID int64 `json:"id"` AssignmentID int64 `json:"assignment_id"` QuestionID int64 `json:"question_id"` StudentID int64 `json:"student_id"` AnswerText pgtype.Text `json:"answer_text"` AiFeedback pgtype.Text `json:"ai_feedback"` TeacherFeedback pgtype.Text `json:"teacher_feedback"` Status AnswerStatus `json:"status"` SubmittedAt pgtype.Timestamptz `json:"submitted_at"` ReviewedAt pgtype.Timestamptz `json:"reviewed_at"` CreatedAt pgtype.Timestamptz `json:"created_at"` UpdatedAt pgtype.Timestamptz `json:"updated_at"` SolveMode string `json:"solve_mode"` WorkingSteps pgtype.Text `json:"working_steps"` IsCorrect pgtype.Bool `json:"is_correct"` ReviewNeedsAttention bool `json:"review_needs_attention"` ReviewIssueReason pgtype.Text `json:"review_issue_reason"` ReviewCorrectnessScore pgtype.Numeric `json:"review_correctness_score"` ReviewUnderstandingScore pgtype.Numeric `json:"review_understanding_score"` ReviewQuestionScore pgtype.Numeric `json:"review_question_score"` ReviewConfidence pgtype.Numeric `json:"review_confidence"` ReviewTags []string `json:"review_tags"` } type Tag struct { ID int64 `json:"id"` Name string `json:"name"` CreatedAt pgtype.Timestamptz `json:"created_at"` } type User struct { ID int64 `json:"id"` Email string `json:"email"` PasswordHash pgtype.Text `json:"password_hash"` Role UserRole `json:"role"` FullName string `json:"full_name"` IsActive bool `json:"is_active"` CreatedAt pgtype.Timestamptz `json:"created_at"` UpdatedAt pgtype.Timestamptz `json:"updated_at"` }