go.charczuk.com@v0.0.0-20240327042549-bc490516bd1a/projects/nodes/pkg/model/gen/expression.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 ExpressionForNode(graph *incr.Graph, n *types.Node) (output incr.INode, err error) { 15 switch n.Metadata.InputType { 16 case "table": 17 switch n.Metadata.OutputType { 18 case "table": 19 output = incrutil.MapN(graph, funcs.Expression[*types.Table, *types.Table](n.Metadata.Expression)) 20 return 21 case "[]bool": 22 output = incrutil.MapN(graph, funcs.Expression[*types.Table, []bool](n.Metadata.Expression)) 23 return 24 case "[]float64": 25 output = incrutil.MapN(graph, funcs.Expression[*types.Table, []float64](n.Metadata.Expression)) 26 return 27 case "[]int64": 28 output = incrutil.MapN(graph, funcs.Expression[*types.Table, []int64](n.Metadata.Expression)) 29 return 30 case "[]string": 31 output = incrutil.MapN(graph, funcs.Expression[*types.Table, []string](n.Metadata.Expression)) 32 return 33 case "[]duration": 34 output = incrutil.MapN(graph, funcs.Expression[*types.Table, []time.Duration](n.Metadata.Expression)) 35 return 36 case "[]timestamp": 37 output = incrutil.MapN(graph, funcs.Expression[*types.Table, []time.Time](n.Metadata.Expression)) 38 return 39 case "bool": 40 output = incrutil.MapN(graph, funcs.Expression[*types.Table, bool](n.Metadata.Expression)) 41 return 42 case "float64": 43 output = incrutil.MapN(graph, funcs.Expression[*types.Table, float64](n.Metadata.Expression)) 44 return 45 case "int64": 46 output = incrutil.MapN(graph, funcs.Expression[*types.Table, int64](n.Metadata.Expression)) 47 return 48 case "string": 49 output = incrutil.MapN(graph, funcs.Expression[*types.Table, string](n.Metadata.Expression)) 50 return 51 case "duration": 52 output = incrutil.MapN(graph, funcs.Expression[*types.Table, time.Duration](n.Metadata.Expression)) 53 return 54 case "timestamp": 55 output = incrutil.MapN(graph, funcs.Expression[*types.Table, time.Time](n.Metadata.Expression)) 56 return 57 default: 58 err = fmt.Errorf("invalid expression output type %v for input type %v", n.Metadata.OutputType, n.Metadata.InputType) 59 return 60 } 61 62 case "[]any": 63 switch n.Metadata.OutputType { 64 case "table": 65 output = incrutil.MapN(graph, funcs.Expression[[]any, *types.Table](n.Metadata.Expression)) 66 return 67 case "[]bool": 68 output = incrutil.MapN(graph, funcs.Expression[[]any, []bool](n.Metadata.Expression)) 69 return 70 case "[]float64": 71 output = incrutil.MapN(graph, funcs.Expression[[]any, []float64](n.Metadata.Expression)) 72 return 73 case "[]int64": 74 output = incrutil.MapN(graph, funcs.Expression[[]any, []int64](n.Metadata.Expression)) 75 return 76 case "[]string": 77 output = incrutil.MapN(graph, funcs.Expression[[]any, []string](n.Metadata.Expression)) 78 return 79 case "[]duration": 80 output = incrutil.MapN(graph, funcs.Expression[[]any, []time.Duration](n.Metadata.Expression)) 81 return 82 case "[]timestamp": 83 output = incrutil.MapN(graph, funcs.Expression[[]any, []time.Time](n.Metadata.Expression)) 84 return 85 case "bool": 86 output = incrutil.MapN(graph, funcs.Expression[[]any, bool](n.Metadata.Expression)) 87 return 88 case "float64": 89 output = incrutil.MapN(graph, funcs.Expression[[]any, float64](n.Metadata.Expression)) 90 return 91 case "int64": 92 output = incrutil.MapN(graph, funcs.Expression[[]any, int64](n.Metadata.Expression)) 93 return 94 case "string": 95 output = incrutil.MapN(graph, funcs.Expression[[]any, string](n.Metadata.Expression)) 96 return 97 case "duration": 98 output = incrutil.MapN(graph, funcs.Expression[[]any, time.Duration](n.Metadata.Expression)) 99 return 100 case "timestamp": 101 output = incrutil.MapN(graph, funcs.Expression[[]any, time.Time](n.Metadata.Expression)) 102 return 103 default: 104 err = fmt.Errorf("invalid expression output type %v for input type %v", n.Metadata.OutputType, n.Metadata.InputType) 105 return 106 } 107 108 case "[]bool": 109 switch n.Metadata.OutputType { 110 case "table": 111 output = incrutil.MapN(graph, funcs.Expression[[]bool, *types.Table](n.Metadata.Expression)) 112 return 113 case "[]bool": 114 output = incrutil.MapN(graph, funcs.Expression[[]bool, []bool](n.Metadata.Expression)) 115 return 116 case "[]float64": 117 output = incrutil.MapN(graph, funcs.Expression[[]bool, []float64](n.Metadata.Expression)) 118 return 119 case "[]int64": 120 output = incrutil.MapN(graph, funcs.Expression[[]bool, []int64](n.Metadata.Expression)) 121 return 122 case "[]string": 123 output = incrutil.MapN(graph, funcs.Expression[[]bool, []string](n.Metadata.Expression)) 124 return 125 case "[]duration": 126 output = incrutil.MapN(graph, funcs.Expression[[]bool, []time.Duration](n.Metadata.Expression)) 127 return 128 case "[]timestamp": 129 output = incrutil.MapN(graph, funcs.Expression[[]bool, []time.Time](n.Metadata.Expression)) 130 return 131 case "bool": 132 output = incrutil.MapN(graph, funcs.Expression[[]bool, bool](n.Metadata.Expression)) 133 return 134 case "float64": 135 output = incrutil.MapN(graph, funcs.Expression[[]bool, float64](n.Metadata.Expression)) 136 return 137 case "int64": 138 output = incrutil.MapN(graph, funcs.Expression[[]bool, int64](n.Metadata.Expression)) 139 return 140 case "string": 141 output = incrutil.MapN(graph, funcs.Expression[[]bool, string](n.Metadata.Expression)) 142 return 143 case "duration": 144 output = incrutil.MapN(graph, funcs.Expression[[]bool, time.Duration](n.Metadata.Expression)) 145 return 146 case "timestamp": 147 output = incrutil.MapN(graph, funcs.Expression[[]bool, time.Time](n.Metadata.Expression)) 148 return 149 default: 150 err = fmt.Errorf("invalid expression output type %v for input type %v", n.Metadata.OutputType, n.Metadata.InputType) 151 return 152 } 153 154 case "[]float64": 155 switch n.Metadata.OutputType { 156 case "table": 157 output = incrutil.MapN(graph, funcs.Expression[[]float64, *types.Table](n.Metadata.Expression)) 158 return 159 case "[]bool": 160 output = incrutil.MapN(graph, funcs.Expression[[]float64, []bool](n.Metadata.Expression)) 161 return 162 case "[]float64": 163 output = incrutil.MapN(graph, funcs.Expression[[]float64, []float64](n.Metadata.Expression)) 164 return 165 case "[]int64": 166 output = incrutil.MapN(graph, funcs.Expression[[]float64, []int64](n.Metadata.Expression)) 167 return 168 case "[]string": 169 output = incrutil.MapN(graph, funcs.Expression[[]float64, []string](n.Metadata.Expression)) 170 return 171 case "[]duration": 172 output = incrutil.MapN(graph, funcs.Expression[[]float64, []time.Duration](n.Metadata.Expression)) 173 return 174 case "[]timestamp": 175 output = incrutil.MapN(graph, funcs.Expression[[]float64, []time.Time](n.Metadata.Expression)) 176 return 177 case "bool": 178 output = incrutil.MapN(graph, funcs.Expression[[]float64, bool](n.Metadata.Expression)) 179 return 180 case "float64": 181 output = incrutil.MapN(graph, funcs.Expression[[]float64, float64](n.Metadata.Expression)) 182 return 183 case "int64": 184 output = incrutil.MapN(graph, funcs.Expression[[]float64, int64](n.Metadata.Expression)) 185 return 186 case "string": 187 output = incrutil.MapN(graph, funcs.Expression[[]float64, string](n.Metadata.Expression)) 188 return 189 case "duration": 190 output = incrutil.MapN(graph, funcs.Expression[[]float64, time.Duration](n.Metadata.Expression)) 191 return 192 case "timestamp": 193 output = incrutil.MapN(graph, funcs.Expression[[]float64, time.Time](n.Metadata.Expression)) 194 return 195 default: 196 err = fmt.Errorf("invalid expression output type %v for input type %v", n.Metadata.OutputType, n.Metadata.InputType) 197 return 198 } 199 200 case "[]int64": 201 switch n.Metadata.OutputType { 202 case "table": 203 output = incrutil.MapN(graph, funcs.Expression[[]int64, *types.Table](n.Metadata.Expression)) 204 return 205 case "[]bool": 206 output = incrutil.MapN(graph, funcs.Expression[[]int64, []bool](n.Metadata.Expression)) 207 return 208 case "[]float64": 209 output = incrutil.MapN(graph, funcs.Expression[[]int64, []float64](n.Metadata.Expression)) 210 return 211 case "[]int64": 212 output = incrutil.MapN(graph, funcs.Expression[[]int64, []int64](n.Metadata.Expression)) 213 return 214 case "[]string": 215 output = incrutil.MapN(graph, funcs.Expression[[]int64, []string](n.Metadata.Expression)) 216 return 217 case "[]duration": 218 output = incrutil.MapN(graph, funcs.Expression[[]int64, []time.Duration](n.Metadata.Expression)) 219 return 220 case "[]timestamp": 221 output = incrutil.MapN(graph, funcs.Expression[[]int64, []time.Time](n.Metadata.Expression)) 222 return 223 case "bool": 224 output = incrutil.MapN(graph, funcs.Expression[[]int64, bool](n.Metadata.Expression)) 225 return 226 case "float64": 227 output = incrutil.MapN(graph, funcs.Expression[[]int64, float64](n.Metadata.Expression)) 228 return 229 case "int64": 230 output = incrutil.MapN(graph, funcs.Expression[[]int64, int64](n.Metadata.Expression)) 231 return 232 case "string": 233 output = incrutil.MapN(graph, funcs.Expression[[]int64, string](n.Metadata.Expression)) 234 return 235 case "duration": 236 output = incrutil.MapN(graph, funcs.Expression[[]int64, time.Duration](n.Metadata.Expression)) 237 return 238 case "timestamp": 239 output = incrutil.MapN(graph, funcs.Expression[[]int64, time.Time](n.Metadata.Expression)) 240 return 241 default: 242 err = fmt.Errorf("invalid expression output type %v for input type %v", n.Metadata.OutputType, n.Metadata.InputType) 243 return 244 } 245 246 case "[]string": 247 switch n.Metadata.OutputType { 248 case "table": 249 output = incrutil.MapN(graph, funcs.Expression[[]string, *types.Table](n.Metadata.Expression)) 250 return 251 case "[]bool": 252 output = incrutil.MapN(graph, funcs.Expression[[]string, []bool](n.Metadata.Expression)) 253 return 254 case "[]float64": 255 output = incrutil.MapN(graph, funcs.Expression[[]string, []float64](n.Metadata.Expression)) 256 return 257 case "[]int64": 258 output = incrutil.MapN(graph, funcs.Expression[[]string, []int64](n.Metadata.Expression)) 259 return 260 case "[]string": 261 output = incrutil.MapN(graph, funcs.Expression[[]string, []string](n.Metadata.Expression)) 262 return 263 case "[]duration": 264 output = incrutil.MapN(graph, funcs.Expression[[]string, []time.Duration](n.Metadata.Expression)) 265 return 266 case "[]timestamp": 267 output = incrutil.MapN(graph, funcs.Expression[[]string, []time.Time](n.Metadata.Expression)) 268 return 269 case "bool": 270 output = incrutil.MapN(graph, funcs.Expression[[]string, bool](n.Metadata.Expression)) 271 return 272 case "float64": 273 output = incrutil.MapN(graph, funcs.Expression[[]string, float64](n.Metadata.Expression)) 274 return 275 case "int64": 276 output = incrutil.MapN(graph, funcs.Expression[[]string, int64](n.Metadata.Expression)) 277 return 278 case "string": 279 output = incrutil.MapN(graph, funcs.Expression[[]string, string](n.Metadata.Expression)) 280 return 281 case "duration": 282 output = incrutil.MapN(graph, funcs.Expression[[]string, time.Duration](n.Metadata.Expression)) 283 return 284 case "timestamp": 285 output = incrutil.MapN(graph, funcs.Expression[[]string, time.Time](n.Metadata.Expression)) 286 return 287 default: 288 err = fmt.Errorf("invalid expression output type %v for input type %v", n.Metadata.OutputType, n.Metadata.InputType) 289 return 290 } 291 292 case "[]duration": 293 switch n.Metadata.OutputType { 294 case "table": 295 output = incrutil.MapN(graph, funcs.Expression[[]time.Duration, *types.Table](n.Metadata.Expression)) 296 return 297 case "[]bool": 298 output = incrutil.MapN(graph, funcs.Expression[[]time.Duration, []bool](n.Metadata.Expression)) 299 return 300 case "[]float64": 301 output = incrutil.MapN(graph, funcs.Expression[[]time.Duration, []float64](n.Metadata.Expression)) 302 return 303 case "[]int64": 304 output = incrutil.MapN(graph, funcs.Expression[[]time.Duration, []int64](n.Metadata.Expression)) 305 return 306 case "[]string": 307 output = incrutil.MapN(graph, funcs.Expression[[]time.Duration, []string](n.Metadata.Expression)) 308 return 309 case "[]duration": 310 output = incrutil.MapN(graph, funcs.Expression[[]time.Duration, []time.Duration](n.Metadata.Expression)) 311 return 312 case "[]timestamp": 313 output = incrutil.MapN(graph, funcs.Expression[[]time.Duration, []time.Time](n.Metadata.Expression)) 314 return 315 case "bool": 316 output = incrutil.MapN(graph, funcs.Expression[[]time.Duration, bool](n.Metadata.Expression)) 317 return 318 case "float64": 319 output = incrutil.MapN(graph, funcs.Expression[[]time.Duration, float64](n.Metadata.Expression)) 320 return 321 case "int64": 322 output = incrutil.MapN(graph, funcs.Expression[[]time.Duration, int64](n.Metadata.Expression)) 323 return 324 case "string": 325 output = incrutil.MapN(graph, funcs.Expression[[]time.Duration, string](n.Metadata.Expression)) 326 return 327 case "duration": 328 output = incrutil.MapN(graph, funcs.Expression[[]time.Duration, time.Duration](n.Metadata.Expression)) 329 return 330 case "timestamp": 331 output = incrutil.MapN(graph, funcs.Expression[[]time.Duration, time.Time](n.Metadata.Expression)) 332 return 333 default: 334 err = fmt.Errorf("invalid expression output type %v for input type %v", n.Metadata.OutputType, n.Metadata.InputType) 335 return 336 } 337 338 case "[]timestamp": 339 switch n.Metadata.OutputType { 340 case "table": 341 output = incrutil.MapN(graph, funcs.Expression[[]time.Time, *types.Table](n.Metadata.Expression)) 342 return 343 case "[]bool": 344 output = incrutil.MapN(graph, funcs.Expression[[]time.Time, []bool](n.Metadata.Expression)) 345 return 346 case "[]float64": 347 output = incrutil.MapN(graph, funcs.Expression[[]time.Time, []float64](n.Metadata.Expression)) 348 return 349 case "[]int64": 350 output = incrutil.MapN(graph, funcs.Expression[[]time.Time, []int64](n.Metadata.Expression)) 351 return 352 case "[]string": 353 output = incrutil.MapN(graph, funcs.Expression[[]time.Time, []string](n.Metadata.Expression)) 354 return 355 case "[]duration": 356 output = incrutil.MapN(graph, funcs.Expression[[]time.Time, []time.Duration](n.Metadata.Expression)) 357 return 358 case "[]timestamp": 359 output = incrutil.MapN(graph, funcs.Expression[[]time.Time, []time.Time](n.Metadata.Expression)) 360 return 361 case "bool": 362 output = incrutil.MapN(graph, funcs.Expression[[]time.Time, bool](n.Metadata.Expression)) 363 return 364 case "float64": 365 output = incrutil.MapN(graph, funcs.Expression[[]time.Time, float64](n.Metadata.Expression)) 366 return 367 case "int64": 368 output = incrutil.MapN(graph, funcs.Expression[[]time.Time, int64](n.Metadata.Expression)) 369 return 370 case "string": 371 output = incrutil.MapN(graph, funcs.Expression[[]time.Time, string](n.Metadata.Expression)) 372 return 373 case "duration": 374 output = incrutil.MapN(graph, funcs.Expression[[]time.Time, time.Duration](n.Metadata.Expression)) 375 return 376 case "timestamp": 377 output = incrutil.MapN(graph, funcs.Expression[[]time.Time, time.Time](n.Metadata.Expression)) 378 return 379 default: 380 err = fmt.Errorf("invalid expression output type %v for input type %v", n.Metadata.OutputType, n.Metadata.InputType) 381 return 382 } 383 384 case "any": 385 switch n.Metadata.OutputType { 386 case "table": 387 output = incrutil.MapN(graph, funcs.Expression[any, *types.Table](n.Metadata.Expression)) 388 return 389 case "[]bool": 390 output = incrutil.MapN(graph, funcs.Expression[any, []bool](n.Metadata.Expression)) 391 return 392 case "[]float64": 393 output = incrutil.MapN(graph, funcs.Expression[any, []float64](n.Metadata.Expression)) 394 return 395 case "[]int64": 396 output = incrutil.MapN(graph, funcs.Expression[any, []int64](n.Metadata.Expression)) 397 return 398 case "[]string": 399 output = incrutil.MapN(graph, funcs.Expression[any, []string](n.Metadata.Expression)) 400 return 401 case "[]duration": 402 output = incrutil.MapN(graph, funcs.Expression[any, []time.Duration](n.Metadata.Expression)) 403 return 404 case "[]timestamp": 405 output = incrutil.MapN(graph, funcs.Expression[any, []time.Time](n.Metadata.Expression)) 406 return 407 case "bool": 408 output = incrutil.MapN(graph, funcs.Expression[any, bool](n.Metadata.Expression)) 409 return 410 case "float64": 411 output = incrutil.MapN(graph, funcs.Expression[any, float64](n.Metadata.Expression)) 412 return 413 case "int64": 414 output = incrutil.MapN(graph, funcs.Expression[any, int64](n.Metadata.Expression)) 415 return 416 case "string": 417 output = incrutil.MapN(graph, funcs.Expression[any, string](n.Metadata.Expression)) 418 return 419 case "duration": 420 output = incrutil.MapN(graph, funcs.Expression[any, time.Duration](n.Metadata.Expression)) 421 return 422 case "timestamp": 423 output = incrutil.MapN(graph, funcs.Expression[any, time.Time](n.Metadata.Expression)) 424 return 425 default: 426 err = fmt.Errorf("invalid expression output type %v for input type %v", n.Metadata.OutputType, n.Metadata.InputType) 427 return 428 } 429 430 case "bool": 431 switch n.Metadata.OutputType { 432 case "table": 433 output = incrutil.MapN(graph, funcs.Expression[bool, *types.Table](n.Metadata.Expression)) 434 return 435 case "[]bool": 436 output = incrutil.MapN(graph, funcs.Expression[bool, []bool](n.Metadata.Expression)) 437 return 438 case "[]float64": 439 output = incrutil.MapN(graph, funcs.Expression[bool, []float64](n.Metadata.Expression)) 440 return 441 case "[]int64": 442 output = incrutil.MapN(graph, funcs.Expression[bool, []int64](n.Metadata.Expression)) 443 return 444 case "[]string": 445 output = incrutil.MapN(graph, funcs.Expression[bool, []string](n.Metadata.Expression)) 446 return 447 case "[]duration": 448 output = incrutil.MapN(graph, funcs.Expression[bool, []time.Duration](n.Metadata.Expression)) 449 return 450 case "[]timestamp": 451 output = incrutil.MapN(graph, funcs.Expression[bool, []time.Time](n.Metadata.Expression)) 452 return 453 case "bool": 454 output = incrutil.MapN(graph, funcs.Expression[bool, bool](n.Metadata.Expression)) 455 return 456 case "float64": 457 output = incrutil.MapN(graph, funcs.Expression[bool, float64](n.Metadata.Expression)) 458 return 459 case "int64": 460 output = incrutil.MapN(graph, funcs.Expression[bool, int64](n.Metadata.Expression)) 461 return 462 case "string": 463 output = incrutil.MapN(graph, funcs.Expression[bool, string](n.Metadata.Expression)) 464 return 465 case "duration": 466 output = incrutil.MapN(graph, funcs.Expression[bool, time.Duration](n.Metadata.Expression)) 467 return 468 case "timestamp": 469 output = incrutil.MapN(graph, funcs.Expression[bool, time.Time](n.Metadata.Expression)) 470 return 471 default: 472 err = fmt.Errorf("invalid expression output type %v for input type %v", n.Metadata.OutputType, n.Metadata.InputType) 473 return 474 } 475 476 case "float64": 477 switch n.Metadata.OutputType { 478 case "table": 479 output = incrutil.MapN(graph, funcs.Expression[float64, *types.Table](n.Metadata.Expression)) 480 return 481 case "[]bool": 482 output = incrutil.MapN(graph, funcs.Expression[float64, []bool](n.Metadata.Expression)) 483 return 484 case "[]float64": 485 output = incrutil.MapN(graph, funcs.Expression[float64, []float64](n.Metadata.Expression)) 486 return 487 case "[]int64": 488 output = incrutil.MapN(graph, funcs.Expression[float64, []int64](n.Metadata.Expression)) 489 return 490 case "[]string": 491 output = incrutil.MapN(graph, funcs.Expression[float64, []string](n.Metadata.Expression)) 492 return 493 case "[]duration": 494 output = incrutil.MapN(graph, funcs.Expression[float64, []time.Duration](n.Metadata.Expression)) 495 return 496 case "[]timestamp": 497 output = incrutil.MapN(graph, funcs.Expression[float64, []time.Time](n.Metadata.Expression)) 498 return 499 case "bool": 500 output = incrutil.MapN(graph, funcs.Expression[float64, bool](n.Metadata.Expression)) 501 return 502 case "float64": 503 output = incrutil.MapN(graph, funcs.Expression[float64, float64](n.Metadata.Expression)) 504 return 505 case "int64": 506 output = incrutil.MapN(graph, funcs.Expression[float64, int64](n.Metadata.Expression)) 507 return 508 case "string": 509 output = incrutil.MapN(graph, funcs.Expression[float64, string](n.Metadata.Expression)) 510 return 511 case "duration": 512 output = incrutil.MapN(graph, funcs.Expression[float64, time.Duration](n.Metadata.Expression)) 513 return 514 case "timestamp": 515 output = incrutil.MapN(graph, funcs.Expression[float64, time.Time](n.Metadata.Expression)) 516 return 517 default: 518 err = fmt.Errorf("invalid expression output type %v for input type %v", n.Metadata.OutputType, n.Metadata.InputType) 519 return 520 } 521 522 case "int64": 523 switch n.Metadata.OutputType { 524 case "table": 525 output = incrutil.MapN(graph, funcs.Expression[int64, *types.Table](n.Metadata.Expression)) 526 return 527 case "[]bool": 528 output = incrutil.MapN(graph, funcs.Expression[int64, []bool](n.Metadata.Expression)) 529 return 530 case "[]float64": 531 output = incrutil.MapN(graph, funcs.Expression[int64, []float64](n.Metadata.Expression)) 532 return 533 case "[]int64": 534 output = incrutil.MapN(graph, funcs.Expression[int64, []int64](n.Metadata.Expression)) 535 return 536 case "[]string": 537 output = incrutil.MapN(graph, funcs.Expression[int64, []string](n.Metadata.Expression)) 538 return 539 case "[]duration": 540 output = incrutil.MapN(graph, funcs.Expression[int64, []time.Duration](n.Metadata.Expression)) 541 return 542 case "[]timestamp": 543 output = incrutil.MapN(graph, funcs.Expression[int64, []time.Time](n.Metadata.Expression)) 544 return 545 case "bool": 546 output = incrutil.MapN(graph, funcs.Expression[int64, bool](n.Metadata.Expression)) 547 return 548 case "float64": 549 output = incrutil.MapN(graph, funcs.Expression[int64, float64](n.Metadata.Expression)) 550 return 551 case "int64": 552 output = incrutil.MapN(graph, funcs.Expression[int64, int64](n.Metadata.Expression)) 553 return 554 case "string": 555 output = incrutil.MapN(graph, funcs.Expression[int64, string](n.Metadata.Expression)) 556 return 557 case "duration": 558 output = incrutil.MapN(graph, funcs.Expression[int64, time.Duration](n.Metadata.Expression)) 559 return 560 case "timestamp": 561 output = incrutil.MapN(graph, funcs.Expression[int64, time.Time](n.Metadata.Expression)) 562 return 563 default: 564 err = fmt.Errorf("invalid expression output type %v for input type %v", n.Metadata.OutputType, n.Metadata.InputType) 565 return 566 } 567 568 case "string": 569 switch n.Metadata.OutputType { 570 case "table": 571 output = incrutil.MapN(graph, funcs.Expression[string, *types.Table](n.Metadata.Expression)) 572 return 573 case "[]bool": 574 output = incrutil.MapN(graph, funcs.Expression[string, []bool](n.Metadata.Expression)) 575 return 576 case "[]float64": 577 output = incrutil.MapN(graph, funcs.Expression[string, []float64](n.Metadata.Expression)) 578 return 579 case "[]int64": 580 output = incrutil.MapN(graph, funcs.Expression[string, []int64](n.Metadata.Expression)) 581 return 582 case "[]string": 583 output = incrutil.MapN(graph, funcs.Expression[string, []string](n.Metadata.Expression)) 584 return 585 case "[]duration": 586 output = incrutil.MapN(graph, funcs.Expression[string, []time.Duration](n.Metadata.Expression)) 587 return 588 case "[]timestamp": 589 output = incrutil.MapN(graph, funcs.Expression[string, []time.Time](n.Metadata.Expression)) 590 return 591 case "bool": 592 output = incrutil.MapN(graph, funcs.Expression[string, bool](n.Metadata.Expression)) 593 return 594 case "float64": 595 output = incrutil.MapN(graph, funcs.Expression[string, float64](n.Metadata.Expression)) 596 return 597 case "int64": 598 output = incrutil.MapN(graph, funcs.Expression[string, int64](n.Metadata.Expression)) 599 return 600 case "string": 601 output = incrutil.MapN(graph, funcs.Expression[string, string](n.Metadata.Expression)) 602 return 603 case "duration": 604 output = incrutil.MapN(graph, funcs.Expression[string, time.Duration](n.Metadata.Expression)) 605 return 606 case "timestamp": 607 output = incrutil.MapN(graph, funcs.Expression[string, time.Time](n.Metadata.Expression)) 608 return 609 default: 610 err = fmt.Errorf("invalid expression output type %v for input type %v", n.Metadata.OutputType, n.Metadata.InputType) 611 return 612 } 613 614 case "duration": 615 switch n.Metadata.OutputType { 616 case "table": 617 output = incrutil.MapN(graph, funcs.Expression[time.Duration, *types.Table](n.Metadata.Expression)) 618 return 619 case "[]bool": 620 output = incrutil.MapN(graph, funcs.Expression[time.Duration, []bool](n.Metadata.Expression)) 621 return 622 case "[]float64": 623 output = incrutil.MapN(graph, funcs.Expression[time.Duration, []float64](n.Metadata.Expression)) 624 return 625 case "[]int64": 626 output = incrutil.MapN(graph, funcs.Expression[time.Duration, []int64](n.Metadata.Expression)) 627 return 628 case "[]string": 629 output = incrutil.MapN(graph, funcs.Expression[time.Duration, []string](n.Metadata.Expression)) 630 return 631 case "[]duration": 632 output = incrutil.MapN(graph, funcs.Expression[time.Duration, []time.Duration](n.Metadata.Expression)) 633 return 634 case "[]timestamp": 635 output = incrutil.MapN(graph, funcs.Expression[time.Duration, []time.Time](n.Metadata.Expression)) 636 return 637 case "bool": 638 output = incrutil.MapN(graph, funcs.Expression[time.Duration, bool](n.Metadata.Expression)) 639 return 640 case "float64": 641 output = incrutil.MapN(graph, funcs.Expression[time.Duration, float64](n.Metadata.Expression)) 642 return 643 case "int64": 644 output = incrutil.MapN(graph, funcs.Expression[time.Duration, int64](n.Metadata.Expression)) 645 return 646 case "string": 647 output = incrutil.MapN(graph, funcs.Expression[time.Duration, string](n.Metadata.Expression)) 648 return 649 case "duration": 650 output = incrutil.MapN(graph, funcs.Expression[time.Duration, time.Duration](n.Metadata.Expression)) 651 return 652 case "timestamp": 653 output = incrutil.MapN(graph, funcs.Expression[time.Duration, time.Time](n.Metadata.Expression)) 654 return 655 default: 656 err = fmt.Errorf("invalid expression output type %v for input type %v", n.Metadata.OutputType, n.Metadata.InputType) 657 return 658 } 659 660 case "timestamp": 661 switch n.Metadata.OutputType { 662 case "table": 663 output = incrutil.MapN(graph, funcs.Expression[time.Time, *types.Table](n.Metadata.Expression)) 664 return 665 case "[]bool": 666 output = incrutil.MapN(graph, funcs.Expression[time.Time, []bool](n.Metadata.Expression)) 667 return 668 case "[]float64": 669 output = incrutil.MapN(graph, funcs.Expression[time.Time, []float64](n.Metadata.Expression)) 670 return 671 case "[]int64": 672 output = incrutil.MapN(graph, funcs.Expression[time.Time, []int64](n.Metadata.Expression)) 673 return 674 case "[]string": 675 output = incrutil.MapN(graph, funcs.Expression[time.Time, []string](n.Metadata.Expression)) 676 return 677 case "[]duration": 678 output = incrutil.MapN(graph, funcs.Expression[time.Time, []time.Duration](n.Metadata.Expression)) 679 return 680 case "[]timestamp": 681 output = incrutil.MapN(graph, funcs.Expression[time.Time, []time.Time](n.Metadata.Expression)) 682 return 683 case "bool": 684 output = incrutil.MapN(graph, funcs.Expression[time.Time, bool](n.Metadata.Expression)) 685 return 686 case "float64": 687 output = incrutil.MapN(graph, funcs.Expression[time.Time, float64](n.Metadata.Expression)) 688 return 689 case "int64": 690 output = incrutil.MapN(graph, funcs.Expression[time.Time, int64](n.Metadata.Expression)) 691 return 692 case "string": 693 output = incrutil.MapN(graph, funcs.Expression[time.Time, string](n.Metadata.Expression)) 694 return 695 case "duration": 696 output = incrutil.MapN(graph, funcs.Expression[time.Time, time.Duration](n.Metadata.Expression)) 697 return 698 case "timestamp": 699 output = incrutil.MapN(graph, funcs.Expression[time.Time, time.Time](n.Metadata.Expression)) 700 return 701 default: 702 err = fmt.Errorf("invalid expression output type %v for input type %v", n.Metadata.OutputType, n.Metadata.InputType) 703 return 704 } 705 706 default: 707 err = fmt.Errorf("invalid expression input type %v", n.Metadata.InputType) 708 return 709 } 710 }