package db /* DDL CREATE TABLE `awards` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100) DEFAULT NULL, `short_name` varchar(10) DEFAULT NULL, `description` text DEFAULT NULL, `type` varchar(100) DEFAULT NULL, `footprint` varchar(50) DEFAULT NULL, `created_at` datetime DEFAULT current_timestamp(), `updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp(), `image_url` varchar(250) DEFAULT NULL, `deleted` tinytext DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) ) ENGINE=InnoDB AUTO_INCREMENT=81 DEFAULT CHARSET=utf8mb4 COMMENT='Contains a list of Awards for the unit.'; */ type Award struct { ObjectBase Name string `json:"name"` ShortName string `json:"short_name"` Description string `json:"description"` Type string `json:"type"` Footprint string `json:"footprint"` ImageURL string `json:"image_url"` Members []Member `json:"members" gorm:"many2many:member_awards;"` } // Get one by id func (a *Award) GetByID(id int) error { db, err := GetDB() if err != nil { return err } err = db.First(a, id).Error return err } // Get one by name func (a *Award) GetByName(name string) error { db, err := GetDB() if err != nil { return err } err = db.Where("name = ?", name).First(a).Error return err } // Get all func (a *Award) GetAll() ([]Award, error) { db, err := GetDB() if err != nil { return nil, err } var awards []Award err = db.Find(&awards).Error return awards, err } // Create func (a *Award) Create() error { db, err := GetDB() if err != nil { return err } err = db.Create(a).Error return err } // Update func (a *Award) Update() error { db, err := GetDB() if err != nil { return err } err = db.Save(a).Error return err } // Delete func (a *Award) Delete() error { db, err := GetDB() if err != nil { return err } err = db.Delete(a).Error return err } // Get all holders of an award func (a *Award) GetHolders() ([]Member, error) { db, err := GetDB() if err != nil { return nil, err } var members []Member err = db.Model(a).Association("Members").Find(&members) return members, err }