Files
17th-UnitTracker-API/api/db/award.go

111 lines
2.1 KiB
Go

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
}