mirror of
https://github.com/andatoshiki/shikigrid.git
synced 2026-06-05 19:56:27 +00:00
45 lines
1.0 KiB
Go
45 lines
1.0 KiB
Go
package models
|
|
|
|
import "github.com/biezhi/gorm-paginator/pagination"
|
|
|
|
type UnitsByCountry struct {
|
|
Country string `json:"country"`
|
|
Count int `json:"units"`
|
|
}
|
|
|
|
func GetUnitsByCountry() ([]UnitsByCountry, error) {
|
|
results := make([]UnitsByCountry, 0)
|
|
if err := db.Raw("SELECT country,COUNT(id) AS count FROM units GROUP BY country ORDER BY count DESC").Scan(&results).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
return results, nil
|
|
}
|
|
|
|
func GetPagedUnits(page int) (units []Unit, total int, pages int) {
|
|
paginator := pagination.Paging(&pagination.Param{
|
|
DB: db,
|
|
Page: page,
|
|
Limit: 25,
|
|
OrderBy: []string{"id desc"},
|
|
}, &units)
|
|
return units, paginator.TotalRecord, paginator.TotalPage
|
|
}
|
|
|
|
func FindUnit(id uint) *Unit {
|
|
var unit Unit
|
|
if err := db.Find(&unit, id).Error; err != nil {
|
|
return nil
|
|
}
|
|
return &unit
|
|
}
|
|
|
|
func FindUnitByFingerprint(fingerprint string) *Unit {
|
|
var unit Unit
|
|
if fingerprint == "" {
|
|
return nil
|
|
} else if err := db.Where("fingerprint = ?", fingerprint).Take(&unit).Error; err != nil {
|
|
return nil
|
|
}
|
|
return &unit
|
|
}
|