package db /* DDL CREATE TABLE `ranks` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(100) NOT NULL, `short_name` varchar(70) NOT NULL, `category` varchar(100) NOT NULL, `sort_id` int(11) NOT NULL DEFAULT 0, `image_url` varchar(240) 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, PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`), UNIQUE KEY `shortName` (`short_name`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8mb4; */ type Rank struct { ObjectBase Name string `json:"name"` ShortName string `json:"short_name"` Category string `json:"category"` SortID int `json:"sort_id"` ImageURL string `json:"image_url"` Members []Member `json:"members" gorm:"references:ID; foreignkey:RankID"` } // Get one by id func (r *Rank) GetByID(id int) error { db, err := GetDB() if err != nil { return err } err = db.First(r, id).Error return err } // Get one by name func (r *Rank) GetByName(name string) error { db, err := GetDB() if err != nil { return err } err = db.Where("name = ?", name).First(r).Error return err } // Get all func (r *Rank) GetAll() ([]Rank, error) { db, err := GetDB() if err != nil { return nil, err } var ranks []Rank err = db.Find(&ranks).Error return ranks, err } // Add a member to a rank func (r *Rank) AddHolder(m *Member) error { db, err := GetDB() if err != nil { return err } err = db.Model(r).Association("Members").Append(m) return err } // Create func (r *Rank) Create() error { db, err := GetDB() if err != nil { return err } err = db.Create(r).Error return err } // Update func (r *Rank) Update() error { db, err := GetDB() if err != nil { return err } err = db.Save(r).Error return err } // Delete func (r *Rank) Delete() error { db, err := GetDB() if err != nil { return err } err = db.Delete(r).Error return err }