curd on project

This commit is contained in:
w-mj 2023-04-04 21:10:17 +08:00
parent e4ddd0b445
commit b1ab2df214
No known key found for this signature in database
GPG Key ID: 3A2CB5BE2F835897
3 changed files with 31 additions and 32 deletions

View File

@ -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 {

View File

@ -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
}

View File

@ -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