package model import ( k8s_manager "k8s-manager/src" "k8s-manager/src/utils" "time" ) type ProjectModel struct { BaseModel[ProjectModel] ProjectName string UserName string GroupName string Type string Comment string Doc string IsPublished bool ImageID int Image ImageModel TrainData []*ProjectTrainDataModel `gorm:"foreignKey:ProjectID"` UserPath string CodePath string ModelPath string Running bool `gorm:"-:all"` } func (*ProjectModel) TableName() string { return "projects" } type ProjectTrainDataModel struct { BaseModel[ProjectTrainDataModel] ProjectID int Project *ProjectModel DataID int Data *DataModel MountPath string } func (*ProjectTrainDataModel) TableName() string { return "project_train_data" } //func (p *ProjectModel) Fill() { // db := k8s_manager.DB() // db.Preload(clause.Associations).First(p, p.ID) //} // //func (p *ProjectModel) Create() { // db := k8s_manager.DB() // db.Create(p) //} func (p *ProjectModel) Delete() { db := k8s_manager.DB() for _, d := range p.TrainData { db.Delete(d) } db.Delete(p) } func (p *ProjectModel) Save(oldProject *ProjectModel) { db := k8s_manager.DB() //oldProject := &ProjectModel{} //oldProject.ID = p.ID //oldProject.Fill() //toAdd := utils.Difference(p.TrainData, oldProject.TrainData, func(a, b ProjectTrainDataModel) bool { return a.ID == b.ID }) //for t := range toAdd { // db.Create(t) //} // toDel := utils.Difference(oldProject.TrainData, p.TrainData, func(a, b *ProjectTrainDataModel) bool { return a.ID == b.ID }) for _, t := range toDel { db.Delete(t) } toSave := utils.Intersect(p.TrainData, oldProject.TrainData, func(a, b *ProjectTrainDataModel) bool { return a.ID == b.ID }) for _, t := range toSave { t.Project = p db.Save(t) } db.Save(p) } //func (p *ProjectModel) Gets() []ProjectModel { // db := k8s_manager.DB() // var ans []ProjectModel // db.Model(&ProjectModel{}).Preload(clause.Associations).Where(p).Find(&ans) // return ans //} type RunningProject struct { Project *ProjectModel StartTime *time.Time UserName string Nodes int Cpus int Memory int Gpus int GpuMemory int URL string ControlURL string }