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  }