diff --git a/manager/models/application.go b/manager/models/application.go index 421788e4bbd..eda4ace6b93 100644 --- a/manager/models/application.go +++ b/manager/models/application.go @@ -16,6 +16,8 @@ package models +import "gorm.io/gorm" + type Application struct { BaseModel Name string `gorm:"column:name;type:varchar(256);index:uk_application_name,unique;not null;comment:name" json:"name"` @@ -23,5 +25,19 @@ type Application struct { BIO string `gorm:"column:bio;type:varchar(1024);comment:biography" json:"bio"` Priority JSONMap `gorm:"column:priority;not null;comment:download priority" json:"priority"` UserID uint `gorm:"comment:user id" json:"user_id"` - User User `json:"user"` + User User `gorm:"-" json:"user"` +} + +func (a *Application) AfterFind(tx *gorm.DB) (err error) { + if a.UserID == 0 || a.UserID == a.User.ID { + return nil + } + + var user User + if err := tx.First(&user, a.UserID).Error; err != nil { + return err + } + + a.User = user + return nil } diff --git a/manager/models/job.go b/manager/models/job.go index b5c483289f4..dfbec2f6651 100644 --- a/manager/models/job.go +++ b/manager/models/job.go @@ -16,6 +16,8 @@ package models +import "gorm.io/gorm" + type Job struct { BaseModel TaskID string `gorm:"column:task_id;type:varchar(256);not null;comment:task id" json:"task_id"` @@ -25,7 +27,21 @@ type Job struct { Args JSONMap `gorm:"column:args;not null;comment:task request args" json:"args"` Result JSONMap `gorm:"column:result;comment:task result" json:"result"` UserID uint `gorm:"column:user_id;comment:user id" json:"user_id"` - User User `json:"user"` + User User `gorm:"-" json:"user"` SeedPeerClusters []SeedPeerCluster `gorm:"many2many:job_seed_peer_cluster;" json:"seed_peer_clusters"` SchedulerClusters []SchedulerCluster `gorm:"many2many:job_scheduler_cluster;" json:"scheduler_clusters"` } + +func (j *Job) AfterFind(tx *gorm.DB) (err error) { + if j.UserID == 0 || j.UserID == j.User.ID { + return nil + } + + var user User + if err := tx.First(&user, j.UserID).Error; err != nil { + return err + } + + j.User = user + return nil +}