go.charczuk.com@v0.0.0-20240327042549-bc490516bd1a/projects/nodes/pkg/model/gen/first.go (about) 1 // File generated by nodegen. DO NOT EDIT. 2 package gen 3 4 import ( 5 "fmt" 6 "time" 7 8 "github.com/wcharczuk/go-incr" 9 "go.charczuk.com/projects/nodes/pkg/funcs" 10 "go.charczuk.com/projects/nodes/pkg/incrutil" 11 "go.charczuk.com/projects/nodes/pkg/types" 12 ) 13 14 func FirstForNode(graph *incr.Graph, n *types.Node) (output incr.INode, err error) { 15 switch n.Metadata.InputType { 16 case "[]bool": 17 switch n.Metadata.OutputType { 18 case "bool": 19 output = incrutil.MapN(graph, funcs.FirstMany[bool]) 20 return 21 default: 22 err = fmt.Errorf("invalid first output type %v for input type %v", n.Metadata.OutputType, n.Metadata.InputType) 23 return 24 } 25 26 case "[]float64": 27 switch n.Metadata.OutputType { 28 case "float64": 29 output = incrutil.MapN(graph, funcs.FirstMany[float64]) 30 return 31 default: 32 err = fmt.Errorf("invalid first output type %v for input type %v", n.Metadata.OutputType, n.Metadata.InputType) 33 return 34 } 35 36 case "[]int64": 37 switch n.Metadata.OutputType { 38 case "int64": 39 output = incrutil.MapN(graph, funcs.FirstMany[int64]) 40 return 41 default: 42 err = fmt.Errorf("invalid first output type %v for input type %v", n.Metadata.OutputType, n.Metadata.InputType) 43 return 44 } 45 46 case "[]string": 47 switch n.Metadata.OutputType { 48 case "string": 49 output = incrutil.MapN(graph, funcs.FirstMany[string]) 50 return 51 default: 52 err = fmt.Errorf("invalid first output type %v for input type %v", n.Metadata.OutputType, n.Metadata.InputType) 53 return 54 } 55 56 case "[]duration": 57 switch n.Metadata.OutputType { 58 case "duration": 59 output = incrutil.MapN(graph, funcs.FirstMany[time.Duration]) 60 return 61 default: 62 err = fmt.Errorf("invalid first output type %v for input type %v", n.Metadata.OutputType, n.Metadata.InputType) 63 return 64 } 65 66 case "[]timestamp": 67 switch n.Metadata.OutputType { 68 case "timestamp": 69 output = incrutil.MapN(graph, funcs.FirstMany[time.Time]) 70 return 71 default: 72 err = fmt.Errorf("invalid first output type %v for input type %v", n.Metadata.OutputType, n.Metadata.InputType) 73 return 74 } 75 76 default: 77 err = fmt.Errorf("invalid first input type %v", n.Metadata.InputType) 78 return 79 } 80 }