change to GORM, add member and rank handlers
This commit is contained in:
109
api/db/rank.go
Normal file
109
api/db/rank.go
Normal file
@@ -0,0 +1,109 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user