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