Files
2024-11-15 09:51:31 -06:00

73 lines
1.8 KiB
Go

package star
import (
"errors"
"time"
)
var ErrCommandValidationFailed = errors.New("command missing required fields")
type Star struct {
ID int64 `xorm:"pk autoincr 'id'" db:"id"`
UserID int64 `xorm:"user_id" db:"user_id"`
// Deprecated: use DashboardUID
DashboardID int64 `xorm:"dashboard_id" db:"dashboard_id"`
DashboardUID string `xorm:"dashboard_uid" db:"dashboard_uid"`
OrgID int64 `xorm:"org_id" db:"org_id"`
Updated time.Time `xorm:"updated" db:"updated"`
}
// ----------------------
// COMMANDS
type StarDashboardCommand struct {
UserID int64 `xorm:"user_id"`
// Deprecated: use DashboardUID
DashboardID int64 `xorm:"dashboard_id"`
DashboardUID string `xorm:"dashboard_uid"`
OrgID int64 `xorm:"org_id"`
Updated time.Time `xorm:"updated"`
}
func (cmd *StarDashboardCommand) Validate() error {
// nolint:staticcheck
if (cmd.DashboardID == 0 && cmd.DashboardUID == "" && cmd.OrgID == 0) || cmd.UserID == 0 {
return ErrCommandValidationFailed
}
return nil
}
type UnstarDashboardCommand struct {
UserID int64 `xorm:"user_id"`
DashboardID int64 `xorm:"dashboard_id"`
DashboardUID string `xorm:"dashboard_uid"`
OrgID int64 `xorm:"org_id"`
}
func (cmd *UnstarDashboardCommand) Validate() error {
// nolint:staticcheck
if (cmd.DashboardID == 0 && cmd.DashboardUID == "" && cmd.OrgID == 0) || cmd.UserID == 0 {
return ErrCommandValidationFailed
}
return nil
}
// ---------------------
// QUERIES
type GetUserStarsQuery struct {
UserID int64 `xorm:"user_id"`
}
type IsStarredByUserQuery struct {
UserID int64 `xorm:"user_id"`
DashboardID int64 `xorm:"dashboard_id"`
DashboardUID string `xorm:"dashboard_uid"`
OrgID int64 `xorm:"org_id"`
Updated time.Time `xorm:"updated"`
}
type GetUserStarsResult struct {
UserStars map[string]bool
}