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 }