109 lines
2.2 KiB
Go
109 lines
2.2 KiB
Go
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
|
|
}
|