github.com/99MyCql/duffett@v0.1.0/app/strategy/model/model.go (about) 1 package model 2 3 import ( 4 log "github.com/sirupsen/logrus" 5 "gorm.io/gorm" 6 7 "github.com/99MyCql/duffett/app/stock/model" 8 "github.com/99MyCql/duffett/pkg" 9 ) 10 11 // Strategy 策略类 12 type Strategy struct { 13 gorm.Model 14 Name string `gorm:"type:varchar(255);not null;uniqueIndex"` 15 Desc string `gorm:"type:varchar(255)"` 16 Content string `gorm:"type:text"` 17 UserID uint 18 Stocks []*model.Stock `gorm:"constraint:OnUpdate:CASCADE,OnDelete:SET NULL;"` 19 } 20 21 func Create(strategy *Strategy) pkg.RspData { 22 return pkg.ComCreate(strategy) 23 } 24 25 func Update(strategy *Strategy) pkg.RspData { 26 return pkg.ComUpdate(strategy) 27 } 28 29 func FindById(id uint) *Strategy { 30 var s Strategy 31 result := pkg.DB.Where("id = ?", id).Find(&s) 32 if result.Error != nil || result.RowsAffected < 1 { 33 log.Error(result.Error) 34 return nil 35 } 36 return &s 37 } 38 39 func FindByName(strategyName string) *Strategy { 40 var s Strategy 41 result := pkg.DB.Where("name = ?", strategyName).Find(&s) 42 if result.Error != nil || result.RowsAffected < 1 { 43 log.Error(result.Error) 44 return nil 45 } 46 return &s 47 } 48 49 func ListStrategies(username string) []*Strategy { 50 strategies := make([]*Strategy, 0) 51 pkg.DB. 52 Joins("JOIN users ON users.id = strategies.user_id"). 53 Where("users.username = ?", username). 54 Find(&strategies) 55 return strategies 56 } 57 58 // UnscopedDeleteById 永久删除 59 func UnscopedDeleteById(strategyId uint) pkg.RspData { 60 result := pkg.DB.Unscoped().Where("id = ?", strategyId).Delete(&Strategy{}) 61 if result.Error != nil { 62 log.Error(result.Error.Error()) 63 return pkg.ServerErr("服务端删除数据时发生了一些错误") 64 } 65 return pkg.Suc("") 66 }