111 lines
2.1 KiB
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
|
|
}
|