39 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package graph
 | 
						|
 | 
						|
import (
 | 
						|
	"cloud.o-forge.io/core/oc-lib/models/resources"
 | 
						|
	"cloud.o-forge.io/core/oc-lib/tools"
 | 
						|
)
 | 
						|
 | 
						|
// GraphItem is a struct that represents an item in a graph
 | 
						|
type GraphItem struct {
 | 
						|
	ID                      string   `bson:"id" json:"id" validate:"required"`             // ID is the unique identifier of the item
 | 
						|
	Width                   float64  `bson:"width" json:"width" validate:"required"`       // Width is the graphical width of the item
 | 
						|
	Height                  float64  `bson:"height" json:"height" validate:"required"`     // Height is the graphical height of the item
 | 
						|
	Position                Position `bson:"position" json:"position" validate:"required"` // Position is the graphical position of the item
 | 
						|
	*resources.ItemResource          // ItemResource is the resource of the item affected to the item
 | 
						|
}
 | 
						|
 | 
						|
func (g *GraphItem) GetResource() (tools.DataType, resources.ResourceInterface) {
 | 
						|
	if g.Data != nil {
 | 
						|
		return tools.DATA_RESOURCE, g.Data
 | 
						|
	} else if g.Compute != nil {
 | 
						|
		return tools.COMPUTE_RESOURCE, g.Compute
 | 
						|
	} else if g.Workflow != nil {
 | 
						|
		return tools.WORKFLOW_RESOURCE, g.Workflow
 | 
						|
	} else if g.Processing != nil {
 | 
						|
		return tools.PROCESSING_RESOURCE, g.Processing
 | 
						|
	} else if g.Storage != nil {
 | 
						|
		return tools.STORAGE_RESOURCE, g.Storage
 | 
						|
	}
 | 
						|
	return tools.INVALID, nil
 | 
						|
}
 | 
						|
 | 
						|
func (g *GraphItem) Clear() {
 | 
						|
	g.Data = nil
 | 
						|
	g.Compute = nil
 | 
						|
	g.Workflow = nil
 | 
						|
	g.Processing = nil
 | 
						|
	g.Storage = nil
 | 
						|
}
 |