From b1ab2df2143170e5a3d857fa3bb8e934b1b82f06 Mon Sep 17 00:00:00 2001 From: w-mj Date: Tue, 4 Apr 2023 21:10:17 +0800 Subject: [PATCH] curd on project --- src/controller/project_controller.go | 2 +- src/model/base_model.go | 5 ++- src/model/project_model.go | 56 ++++++++++++++-------------- 3 files changed, 31 insertions(+), 32 deletions(-) diff --git a/src/controller/project_controller.go b/src/controller/project_controller.go index 8b73565..d392828 100644 --- a/src/controller/project_controller.go +++ b/src/controller/project_controller.go @@ -14,7 +14,7 @@ func AddProject(username string, proj *model.ProjectModel) (utils.OKType, error) } func DeleteProject(username string, ID uint) (utils.OKType, error) { - old := model.ProjectModel{} + old := &model.ProjectModel{} old.ID = ID old.Fill() if username != old.UserName { diff --git a/src/model/base_model.go b/src/model/base_model.go index 6767f83..a46cd5a 100644 --- a/src/model/base_model.go +++ b/src/model/base_model.go @@ -2,6 +2,7 @@ package model import ( "gorm.io/gorm" + "gorm.io/gorm/clause" k8s_manager "k8s-manager/src" "reflect" "unsafe" @@ -32,7 +33,7 @@ type BaseModel[T any] struct { func (b *BaseModel[T]) Fill() { db := k8s_manager.DB() p := (*T)(unsafe.Pointer(b)) - db.First(p, b.ID) + db.Preload(clause.Associations).First(p, b.ID) } func (b *BaseModel[T]) Create() { @@ -57,7 +58,7 @@ func (b *BaseModel[T]) Gets() []T { db := k8s_manager.DB() ans := make([]T, 0) p := (*T)(unsafe.Pointer(b)) - db.Where(p).Find(&ans) + db.Preload(clause.Associations).Where(p).Find(&ans) return ans } diff --git a/src/model/project_model.go b/src/model/project_model.go index aaf7f59..e91d990 100644 --- a/src/model/project_model.go +++ b/src/model/project_model.go @@ -33,8 +33,9 @@ func (*ProjectModel) TableName() string { type ProjectTrainDataModel struct { BaseModel[ProjectTrainDataModel] - ProjectID uint - DataID uint + ProjectID int + Project *ProjectModel + DataID int Data *DataModel MountPath string } @@ -43,19 +44,15 @@ func (*ProjectTrainDataModel) TableName() string { return "project_train_data" } -func (p *ProjectModel) Fill() { - db := k8s_manager.DB() - db.Preload("ProjectTrainDataModel").First(p, p.ID) -} - -func (p *ProjectModel) Create() { - db := k8s_manager.DB() - db.Create(p) - for _, d := range p.TrainData { - d.ProjectID = p.ID - db.Create(d) - } -} +//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() @@ -71,30 +68,31 @@ func (p *ProjectModel) Save(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) - } - + //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 { + for _, t := range toDel { db.Delete(t) } - toSave := utils.Intersect(oldProject.TrainData, p.TrainData, func(a, b *ProjectTrainDataModel) bool { return a.ID == b.ID }) - for t := range toSave { + 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("ProjectTrainDataModel").Where(p).Find(&ans) - return ans -} +//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