34 lines
1.2 KiB
Go
34 lines
1.2 KiB
Go
package models
|
|
|
|
import (
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type GraphNode struct {
|
|
BaseModel
|
|
TreeID string `json:"tree_id" gorm:"column:tree_id;type:varchar(255);not null"`
|
|
StageID string `json:"stage_id" gorm:"column:stage_id;type:varchar(255);not null"`
|
|
InstanceID string `json:"instance_id" gorm:"column:instance_id;type:varchar(255);not null"`
|
|
X float64 `json:"x" gorm:"column:x;default:0"`
|
|
Y float64 `json:"y" gorm:"column:y;default:0"`
|
|
FX float64 `json:"fx" gorm:"column:fx;default:0"`
|
|
FY float64 `json:"fy" gorm:"column:fy;default:0"`
|
|
Name string `json:"name" gorm:"column:name;type:varchar(255)"`
|
|
Level int `json:"level" gorm:"column:level;default:0"`
|
|
ParentID string `json:"parent_id" gorm:"column:parent_id;type:varchar(255)"`
|
|
}
|
|
|
|
// 获取关联的树节点
|
|
func (gn *GraphNode) Tree(db *gorm.DB) (*Tree, error) {
|
|
var tree Tree
|
|
err := db.Where("id = ?", gn.TreeID).First(&tree).Error
|
|
return &tree, err
|
|
}
|
|
|
|
// 获取关联的所有连接
|
|
func (gn *GraphNode) Links(db *gorm.DB) ([]GraphLink, error) {
|
|
var links []GraphLink
|
|
err := db.Where("source_id = ? OR target_id = ?", gn.ID, gn.ID).Find(&links).Error
|
|
return links, err
|
|
}
|