package model import ( "time" "gorm.io/gorm" ) type Grade struct { ID string `json:"id" gorm:"type:varchar(36);primaryKey"` UserID string `json:"user_id" gorm:"type:varchar(36);index;not null"` Term string `json:"term" gorm:"type:varchar(30);not null"` CourseCode string `json:"course_code" gorm:"type:varchar(30)"` CourseName string `json:"course_name" gorm:"type:varchar(120);not null"` Nature string `json:"nature" gorm:"type:varchar(30)"` Category string `json:"category" gorm:"type:varchar(30)"` Credit string `json:"credit" gorm:"type:varchar(10)"` Score string `json:"score" gorm:"type:varchar(20)"` GradePoint string `json:"grade_point" gorm:"type:varchar(10)"` IsExam string `json:"is_exam" gorm:"type:varchar(10)"` CreatedAt time.Time UpdatedAt time.Time } func (g *Grade) BeforeCreate(tx *gorm.DB) error { SetUUIDIfEmpty(&g.ID) return nil } func (Grade) TableName() string { return "grades" } type GpaSummary struct { ID string `json:"id" gorm:"type:varchar(36);primaryKey"` UserID string `json:"user_id" gorm:"type:varchar(36);index;not null"` Semester string `json:"semester" gorm:"type:varchar(30);not null"` AverageGpa string `json:"average_gpa" gorm:"type:varchar(20)"` Rank string `json:"rank" gorm:"type:varchar(30)"` ExamTotalGpa string `json:"exam_total_gpa" gorm:"type:varchar(20)"` ExamTotalCredits string `json:"exam_total_credits" gorm:"type:varchar(20)"` FailCredits string `json:"fail_credits" gorm:"type:varchar(20)"` Semesters string `json:"semesters" gorm:"type:varchar(20)"` CreatedAt time.Time UpdatedAt time.Time } func (g *GpaSummary) BeforeCreate(tx *gorm.DB) error { SetUUIDIfEmpty(&g.ID) return nil } func (GpaSummary) TableName() string { return "gpa_summaries" }