feat: add leaderboard data model

This commit is contained in:
Ferdinand Mütsch 2022-09-30 17:14:05 +02:00
parent 0ab7faf7b6
commit beffe71ea6
2 changed files with 18 additions and 0 deletions

View File

@ -216,6 +216,9 @@ func (c *Config) GetMigrationFunc(dbDialect string) models.MigrationFunc {
if err := db.AutoMigrate(&models.Diagnostics{}); err != nil && !c.Db.AutoMigrateFailSilently {
return err
}
if err := db.AutoMigrate(&models.LeaderboardItem{}); err != nil && !c.Db.AutoMigrateFailSilently {
return err
}
return nil
}
}

15
models/leaderboard.go Normal file
View File

@ -0,0 +1,15 @@
package models
import "time"
type LeaderboardItem struct {
ID uint `json:"-" gorm:"primary_key; size:32"`
User *User `json:"-" gorm:"not null; constraint:OnUpdate:CASCADE,OnDelete:CASCADE"`
UserID string `json:"user_id" gorm:"not null; index:idx_leaderboard_user"`
Rank uint `json:"rank" gorm:"not null; size:16"`
Interval string `json:"interval" gorm:"not null; size:32; index:idx_leaderboard_combined"`
By uint8 `json:"aggregated_by" gorm:"index:idx_leaderboard_combined"`
Total time.Duration `json:"total" gorm:"not null" swaggertype:"primitive,integer"`
Key string `json:"key" gorm:"size:255"`
CreatedAt CustomTime `gorm:"type:timestamp; default:CURRENT_TIMESTAMP" swaggertype:"string" format:"date" example:"2006-01-02 15:04:05.000"`
}