package db /* DDL CREATE TABLE `course_events` ( `id` int(11) NOT NULL AUTO_INCREMENT, `course_id` int(11) DEFAULT NULL, `event_type` int(11) DEFAULT NULL, `event_date` datetime NOT NULL, `guilded_event_id` int(11) DEFAULT NULL, `created_at` datetime NOT NULL DEFAULT current_timestamp(), `updated_at` datetime NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `deleted` tinyint(4) DEFAULT 0, `report_url` varchar(2048) DEFAULT NULL, PRIMARY KEY (`id`), KEY `fk_course_events_event_type_id` (`event_type`) USING BTREE, KEY `courseId` (`course_id`) USING BTREE, CONSTRAINT `fk_coures_events_course_id` FOREIGN KEY (`course_id`) REFERENCES `courses` (`id`) ON UPDATE CASCADE, CONSTRAINT `fk_course_events_event_type_id` FOREIGN KEY (`event_type`) REFERENCES `event_types` (`id`) ON UPDATE CASCADE ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4; */ type TrainingEvent struct { ObjectBase EventType int `json:"event_type"` EventDate string `json:"event_date"` GuildedEventID int `json:"guilded_event_id"` ReportURL string `json:"report_url"` Course Course `json:"course" gorm:"references:ID; foreignkey:CourseID"` CourseID int `json:"course_id"` } // Get one by id func (te *TrainingEvent) GetByID(id int) error { db, err := GetDB() if err != nil { return err } err = db.First(te, id).Error return err } // Get all func (te *TrainingEvent) GetAll() ([]TrainingEvent, error) { db, err := GetDB() if err != nil { return nil, err } var tes []TrainingEvent err = db.Find(&tes).Error return tes, err } // Get all by course func (te *TrainingEvent) GetAllByCourse(courseID int) ([]TrainingEvent, error) { db, err := GetDB() if err != nil { return nil, err } var tes []TrainingEvent err = db.Where("course_id = ?", courseID).Find(&tes).Error return tes, err } // Create func (te *TrainingEvent) Create() error { db, err := GetDB() if err != nil { return err } err = db.Create(te).Error return err } // Update func (te *TrainingEvent) Update() error { db, err := GetDB() if err != nil { return err } err = db.Save(te).Error return err } // Delete func (te *TrainingEvent) Delete() error { db, err := GetDB() if err != nil { return err } err = db.Delete(te).Error return err } // Get all by date range func (te *TrainingEvent) GetByDateRange(start string, end string) ([]TrainingEvent, error) { db, err := GetDB() if err != nil { return nil, err } var tes []TrainingEvent err = db.Where("event_date BETWEEN ? AND ?", start, end).Find(&tes).Error return tes, err }