bitbucket.org/Aishee/synsec@v0.0.0-20210414005726-236fc01a153d/pkg/database/ent/event_query.go (about) 1 // Code generated by entc, DO NOT EDIT. 2 3 package ent 4 5 import ( 6 "context" 7 "errors" 8 "fmt" 9 "math" 10 11 "entgo.io/ent/dialect/sql" 12 "entgo.io/ent/dialect/sql/sqlgraph" 13 "entgo.io/ent/schema/field" 14 "bitbucket.org/Aishee/synsec/pkg/database/ent/alert" 15 "bitbucket.org/Aishee/synsec/pkg/database/ent/event" 16 "bitbucket.org/Aishee/synsec/pkg/database/ent/predicate" 17 ) 18 19 // EventQuery is the builder for querying Event entities. 20 type EventQuery struct { 21 config 22 limit *int 23 offset *int 24 order []OrderFunc 25 fields []string 26 predicates []predicate.Event 27 // eager-loading edges. 28 withOwner *AlertQuery 29 withFKs bool 30 // intermediate query (i.e. traversal path). 31 sql *sql.Selector 32 path func(context.Context) (*sql.Selector, error) 33 } 34 35 // Where adds a new predicate for the EventQuery builder. 36 func (eq *EventQuery) Where(ps ...predicate.Event) *EventQuery { 37 eq.predicates = append(eq.predicates, ps...) 38 return eq 39 } 40 41 // Limit adds a limit step to the query. 42 func (eq *EventQuery) Limit(limit int) *EventQuery { 43 eq.limit = &limit 44 return eq 45 } 46 47 // Offset adds an offset step to the query. 48 func (eq *EventQuery) Offset(offset int) *EventQuery { 49 eq.offset = &offset 50 return eq 51 } 52 53 // Order adds an order step to the query. 54 func (eq *EventQuery) Order(o ...OrderFunc) *EventQuery { 55 eq.order = append(eq.order, o...) 56 return eq 57 } 58 59 // QueryOwner chains the current query on the "owner" edge. 60 func (eq *EventQuery) QueryOwner() *AlertQuery { 61 query := &AlertQuery{config: eq.config} 62 query.path = func(ctx context.Context) (fromU *sql.Selector, err error) { 63 if err := eq.prepareQuery(ctx); err != nil { 64 return nil, err 65 } 66 selector := eq.sqlQuery(ctx) 67 if err := selector.Err(); err != nil { 68 return nil, err 69 } 70 step := sqlgraph.NewStep( 71 sqlgraph.From(event.Table, event.FieldID, selector), 72 sqlgraph.To(alert.Table, alert.FieldID), 73 sqlgraph.Edge(sqlgraph.M2O, true, event.OwnerTable, event.OwnerColumn), 74 ) 75 fromU = sqlgraph.SetNeighbors(eq.driver.Dialect(), step) 76 return fromU, nil 77 } 78 return query 79 } 80 81 // First returns the first Event entity from the query. 82 // Returns a *NotFoundError when no Event was found. 83 func (eq *EventQuery) First(ctx context.Context) (*Event, error) { 84 nodes, err := eq.Limit(1).All(ctx) 85 if err != nil { 86 return nil, err 87 } 88 if len(nodes) == 0 { 89 return nil, &NotFoundError{event.Label} 90 } 91 return nodes[0], nil 92 } 93 94 // FirstX is like First, but panics if an error occurs. 95 func (eq *EventQuery) FirstX(ctx context.Context) *Event { 96 node, err := eq.First(ctx) 97 if err != nil && !IsNotFound(err) { 98 panic(err) 99 } 100 return node 101 } 102 103 // FirstID returns the first Event ID from the query. 104 // Returns a *NotFoundError when no Event ID was found. 105 func (eq *EventQuery) FirstID(ctx context.Context) (id int, err error) { 106 var ids []int 107 if ids, err = eq.Limit(1).IDs(ctx); err != nil { 108 return 109 } 110 if len(ids) == 0 { 111 err = &NotFoundError{event.Label} 112 return 113 } 114 return ids[0], nil 115 } 116 117 // FirstIDX is like FirstID, but panics if an error occurs. 118 func (eq *EventQuery) FirstIDX(ctx context.Context) int { 119 id, err := eq.FirstID(ctx) 120 if err != nil && !IsNotFound(err) { 121 panic(err) 122 } 123 return id 124 } 125 126 // Only returns a single Event entity found by the query, ensuring it only returns one. 127 // Returns a *NotSingularError when exactly one Event entity is not found. 128 // Returns a *NotFoundError when no Event entities are found. 129 func (eq *EventQuery) Only(ctx context.Context) (*Event, error) { 130 nodes, err := eq.Limit(2).All(ctx) 131 if err != nil { 132 return nil, err 133 } 134 switch len(nodes) { 135 case 1: 136 return nodes[0], nil 137 case 0: 138 return nil, &NotFoundError{event.Label} 139 default: 140 return nil, &NotSingularError{event.Label} 141 } 142 } 143 144 // OnlyX is like Only, but panics if an error occurs. 145 func (eq *EventQuery) OnlyX(ctx context.Context) *Event { 146 node, err := eq.Only(ctx) 147 if err != nil { 148 panic(err) 149 } 150 return node 151 } 152 153 // OnlyID is like Only, but returns the only Event ID in the query. 154 // Returns a *NotSingularError when exactly one Event ID is not found. 155 // Returns a *NotFoundError when no entities are found. 156 func (eq *EventQuery) OnlyID(ctx context.Context) (id int, err error) { 157 var ids []int 158 if ids, err = eq.Limit(2).IDs(ctx); err != nil { 159 return 160 } 161 switch len(ids) { 162 case 1: 163 id = ids[0] 164 case 0: 165 err = &NotFoundError{event.Label} 166 default: 167 err = &NotSingularError{event.Label} 168 } 169 return 170 } 171 172 // OnlyIDX is like OnlyID, but panics if an error occurs. 173 func (eq *EventQuery) OnlyIDX(ctx context.Context) int { 174 id, err := eq.OnlyID(ctx) 175 if err != nil { 176 panic(err) 177 } 178 return id 179 } 180 181 // All executes the query and returns a list of Events. 182 func (eq *EventQuery) All(ctx context.Context) ([]*Event, error) { 183 if err := eq.prepareQuery(ctx); err != nil { 184 return nil, err 185 } 186 return eq.sqlAll(ctx) 187 } 188 189 // AllX is like All, but panics if an error occurs. 190 func (eq *EventQuery) AllX(ctx context.Context) []*Event { 191 nodes, err := eq.All(ctx) 192 if err != nil { 193 panic(err) 194 } 195 return nodes 196 } 197 198 // IDs executes the query and returns a list of Event IDs. 199 func (eq *EventQuery) IDs(ctx context.Context) ([]int, error) { 200 var ids []int 201 if err := eq.Select(event.FieldID).Scan(ctx, &ids); err != nil { 202 return nil, err 203 } 204 return ids, nil 205 } 206 207 // IDsX is like IDs, but panics if an error occurs. 208 func (eq *EventQuery) IDsX(ctx context.Context) []int { 209 ids, err := eq.IDs(ctx) 210 if err != nil { 211 panic(err) 212 } 213 return ids 214 } 215 216 // Count returns the count of the given query. 217 func (eq *EventQuery) Count(ctx context.Context) (int, error) { 218 if err := eq.prepareQuery(ctx); err != nil { 219 return 0, err 220 } 221 return eq.sqlCount(ctx) 222 } 223 224 // CountX is like Count, but panics if an error occurs. 225 func (eq *EventQuery) CountX(ctx context.Context) int { 226 count, err := eq.Count(ctx) 227 if err != nil { 228 panic(err) 229 } 230 return count 231 } 232 233 // Exist returns true if the query has elements in the graph. 234 func (eq *EventQuery) Exist(ctx context.Context) (bool, error) { 235 if err := eq.prepareQuery(ctx); err != nil { 236 return false, err 237 } 238 return eq.sqlExist(ctx) 239 } 240 241 // ExistX is like Exist, but panics if an error occurs. 242 func (eq *EventQuery) ExistX(ctx context.Context) bool { 243 exist, err := eq.Exist(ctx) 244 if err != nil { 245 panic(err) 246 } 247 return exist 248 } 249 250 // Clone returns a duplicate of the EventQuery builder, including all associated steps. It can be 251 // used to prepare common query builders and use them differently after the clone is made. 252 func (eq *EventQuery) Clone() *EventQuery { 253 if eq == nil { 254 return nil 255 } 256 return &EventQuery{ 257 config: eq.config, 258 limit: eq.limit, 259 offset: eq.offset, 260 order: append([]OrderFunc{}, eq.order...), 261 predicates: append([]predicate.Event{}, eq.predicates...), 262 withOwner: eq.withOwner.Clone(), 263 // clone intermediate query. 264 sql: eq.sql.Clone(), 265 path: eq.path, 266 } 267 } 268 269 // WithOwner tells the query-builder to eager-load the nodes that are connected to 270 // the "owner" edge. The optional arguments are used to configure the query builder of the edge. 271 func (eq *EventQuery) WithOwner(opts ...func(*AlertQuery)) *EventQuery { 272 query := &AlertQuery{config: eq.config} 273 for _, opt := range opts { 274 opt(query) 275 } 276 eq.withOwner = query 277 return eq 278 } 279 280 // GroupBy is used to group vertices by one or more fields/columns. 281 // It is often used with aggregate functions, like: count, max, mean, min, sum. 282 // 283 // Example: 284 // 285 // var v []struct { 286 // CreatedAt time.Time `json:"created_at,omitempty"` 287 // Count int `json:"count,omitempty"` 288 // } 289 // 290 // client.Event.Query(). 291 // GroupBy(event.FieldCreatedAt). 292 // Aggregate(ent.Count()). 293 // Scan(ctx, &v) 294 // 295 func (eq *EventQuery) GroupBy(field string, fields ...string) *EventGroupBy { 296 group := &EventGroupBy{config: eq.config} 297 group.fields = append([]string{field}, fields...) 298 group.path = func(ctx context.Context) (prev *sql.Selector, err error) { 299 if err := eq.prepareQuery(ctx); err != nil { 300 return nil, err 301 } 302 return eq.sqlQuery(ctx), nil 303 } 304 return group 305 } 306 307 // Select allows the selection one or more fields/columns for the given query, 308 // instead of selecting all fields in the entity. 309 // 310 // Example: 311 // 312 // var v []struct { 313 // CreatedAt time.Time `json:"created_at,omitempty"` 314 // } 315 // 316 // client.Event.Query(). 317 // Select(event.FieldCreatedAt). 318 // Scan(ctx, &v) 319 // 320 func (eq *EventQuery) Select(field string, fields ...string) *EventSelect { 321 eq.fields = append([]string{field}, fields...) 322 return &EventSelect{EventQuery: eq} 323 } 324 325 func (eq *EventQuery) prepareQuery(ctx context.Context) error { 326 for _, f := range eq.fields { 327 if !event.ValidColumn(f) { 328 return &ValidationError{Name: f, err: fmt.Errorf("ent: invalid field %q for query", f)} 329 } 330 } 331 if eq.path != nil { 332 prev, err := eq.path(ctx) 333 if err != nil { 334 return err 335 } 336 eq.sql = prev 337 } 338 return nil 339 } 340 341 func (eq *EventQuery) sqlAll(ctx context.Context) ([]*Event, error) { 342 var ( 343 nodes = []*Event{} 344 withFKs = eq.withFKs 345 _spec = eq.querySpec() 346 loadedTypes = [1]bool{ 347 eq.withOwner != nil, 348 } 349 ) 350 if eq.withOwner != nil { 351 withFKs = true 352 } 353 if withFKs { 354 _spec.Node.Columns = append(_spec.Node.Columns, event.ForeignKeys...) 355 } 356 _spec.ScanValues = func(columns []string) ([]interface{}, error) { 357 node := &Event{config: eq.config} 358 nodes = append(nodes, node) 359 return node.scanValues(columns) 360 } 361 _spec.Assign = func(columns []string, values []interface{}) error { 362 if len(nodes) == 0 { 363 return fmt.Errorf("ent: Assign called without calling ScanValues") 364 } 365 node := nodes[len(nodes)-1] 366 node.Edges.loadedTypes = loadedTypes 367 return node.assignValues(columns, values) 368 } 369 if err := sqlgraph.QueryNodes(ctx, eq.driver, _spec); err != nil { 370 return nil, err 371 } 372 if len(nodes) == 0 { 373 return nodes, nil 374 } 375 376 if query := eq.withOwner; query != nil { 377 ids := make([]int, 0, len(nodes)) 378 nodeids := make(map[int][]*Event) 379 for i := range nodes { 380 fk := nodes[i].alert_events 381 if fk != nil { 382 ids = append(ids, *fk) 383 nodeids[*fk] = append(nodeids[*fk], nodes[i]) 384 } 385 } 386 query.Where(alert.IDIn(ids...)) 387 neighbors, err := query.All(ctx) 388 if err != nil { 389 return nil, err 390 } 391 for _, n := range neighbors { 392 nodes, ok := nodeids[n.ID] 393 if !ok { 394 return nil, fmt.Errorf(`unexpected foreign-key "alert_events" returned %v`, n.ID) 395 } 396 for i := range nodes { 397 nodes[i].Edges.Owner = n 398 } 399 } 400 } 401 402 return nodes, nil 403 } 404 405 func (eq *EventQuery) sqlCount(ctx context.Context) (int, error) { 406 _spec := eq.querySpec() 407 return sqlgraph.CountNodes(ctx, eq.driver, _spec) 408 } 409 410 func (eq *EventQuery) sqlExist(ctx context.Context) (bool, error) { 411 n, err := eq.sqlCount(ctx) 412 if err != nil { 413 return false, fmt.Errorf("ent: check existence: %w", err) 414 } 415 return n > 0, nil 416 } 417 418 func (eq *EventQuery) querySpec() *sqlgraph.QuerySpec { 419 _spec := &sqlgraph.QuerySpec{ 420 Node: &sqlgraph.NodeSpec{ 421 Table: event.Table, 422 Columns: event.Columns, 423 ID: &sqlgraph.FieldSpec{ 424 Type: field.TypeInt, 425 Column: event.FieldID, 426 }, 427 }, 428 From: eq.sql, 429 Unique: true, 430 } 431 if fields := eq.fields; len(fields) > 0 { 432 _spec.Node.Columns = make([]string, 0, len(fields)) 433 _spec.Node.Columns = append(_spec.Node.Columns, event.FieldID) 434 for i := range fields { 435 if fields[i] != event.FieldID { 436 _spec.Node.Columns = append(_spec.Node.Columns, fields[i]) 437 } 438 } 439 } 440 if ps := eq.predicates; len(ps) > 0 { 441 _spec.Predicate = func(selector *sql.Selector) { 442 for i := range ps { 443 ps[i](selector) 444 } 445 } 446 } 447 if limit := eq.limit; limit != nil { 448 _spec.Limit = *limit 449 } 450 if offset := eq.offset; offset != nil { 451 _spec.Offset = *offset 452 } 453 if ps := eq.order; len(ps) > 0 { 454 _spec.Order = func(selector *sql.Selector) { 455 for i := range ps { 456 ps[i](selector, event.ValidColumn) 457 } 458 } 459 } 460 return _spec 461 } 462 463 func (eq *EventQuery) sqlQuery(ctx context.Context) *sql.Selector { 464 builder := sql.Dialect(eq.driver.Dialect()) 465 t1 := builder.Table(event.Table) 466 selector := builder.Select(t1.Columns(event.Columns...)...).From(t1) 467 if eq.sql != nil { 468 selector = eq.sql 469 selector.Select(selector.Columns(event.Columns...)...) 470 } 471 for _, p := range eq.predicates { 472 p(selector) 473 } 474 for _, p := range eq.order { 475 p(selector, event.ValidColumn) 476 } 477 if offset := eq.offset; offset != nil { 478 // limit is mandatory for offset clause. We start 479 // with default value, and override it below if needed. 480 selector.Offset(*offset).Limit(math.MaxInt32) 481 } 482 if limit := eq.limit; limit != nil { 483 selector.Limit(*limit) 484 } 485 return selector 486 } 487 488 // EventGroupBy is the group-by builder for Event entities. 489 type EventGroupBy struct { 490 config 491 fields []string 492 fns []AggregateFunc 493 // intermediate query (i.e. traversal path). 494 sql *sql.Selector 495 path func(context.Context) (*sql.Selector, error) 496 } 497 498 // Aggregate adds the given aggregation functions to the group-by query. 499 func (egb *EventGroupBy) Aggregate(fns ...AggregateFunc) *EventGroupBy { 500 egb.fns = append(egb.fns, fns...) 501 return egb 502 } 503 504 // Scan applies the group-by query and scans the result into the given value. 505 func (egb *EventGroupBy) Scan(ctx context.Context, v interface{}) error { 506 query, err := egb.path(ctx) 507 if err != nil { 508 return err 509 } 510 egb.sql = query 511 return egb.sqlScan(ctx, v) 512 } 513 514 // ScanX is like Scan, but panics if an error occurs. 515 func (egb *EventGroupBy) ScanX(ctx context.Context, v interface{}) { 516 if err := egb.Scan(ctx, v); err != nil { 517 panic(err) 518 } 519 } 520 521 // Strings returns list of strings from group-by. 522 // It is only allowed when executing a group-by query with one field. 523 func (egb *EventGroupBy) Strings(ctx context.Context) ([]string, error) { 524 if len(egb.fields) > 1 { 525 return nil, errors.New("ent: EventGroupBy.Strings is not achievable when grouping more than 1 field") 526 } 527 var v []string 528 if err := egb.Scan(ctx, &v); err != nil { 529 return nil, err 530 } 531 return v, nil 532 } 533 534 // StringsX is like Strings, but panics if an error occurs. 535 func (egb *EventGroupBy) StringsX(ctx context.Context) []string { 536 v, err := egb.Strings(ctx) 537 if err != nil { 538 panic(err) 539 } 540 return v 541 } 542 543 // String returns a single string from a group-by query. 544 // It is only allowed when executing a group-by query with one field. 545 func (egb *EventGroupBy) String(ctx context.Context) (_ string, err error) { 546 var v []string 547 if v, err = egb.Strings(ctx); err != nil { 548 return 549 } 550 switch len(v) { 551 case 1: 552 return v[0], nil 553 case 0: 554 err = &NotFoundError{event.Label} 555 default: 556 err = fmt.Errorf("ent: EventGroupBy.Strings returned %d results when one was expected", len(v)) 557 } 558 return 559 } 560 561 // StringX is like String, but panics if an error occurs. 562 func (egb *EventGroupBy) StringX(ctx context.Context) string { 563 v, err := egb.String(ctx) 564 if err != nil { 565 panic(err) 566 } 567 return v 568 } 569 570 // Ints returns list of ints from group-by. 571 // It is only allowed when executing a group-by query with one field. 572 func (egb *EventGroupBy) Ints(ctx context.Context) ([]int, error) { 573 if len(egb.fields) > 1 { 574 return nil, errors.New("ent: EventGroupBy.Ints is not achievable when grouping more than 1 field") 575 } 576 var v []int 577 if err := egb.Scan(ctx, &v); err != nil { 578 return nil, err 579 } 580 return v, nil 581 } 582 583 // IntsX is like Ints, but panics if an error occurs. 584 func (egb *EventGroupBy) IntsX(ctx context.Context) []int { 585 v, err := egb.Ints(ctx) 586 if err != nil { 587 panic(err) 588 } 589 return v 590 } 591 592 // Int returns a single int from a group-by query. 593 // It is only allowed when executing a group-by query with one field. 594 func (egb *EventGroupBy) Int(ctx context.Context) (_ int, err error) { 595 var v []int 596 if v, err = egb.Ints(ctx); err != nil { 597 return 598 } 599 switch len(v) { 600 case 1: 601 return v[0], nil 602 case 0: 603 err = &NotFoundError{event.Label} 604 default: 605 err = fmt.Errorf("ent: EventGroupBy.Ints returned %d results when one was expected", len(v)) 606 } 607 return 608 } 609 610 // IntX is like Int, but panics if an error occurs. 611 func (egb *EventGroupBy) IntX(ctx context.Context) int { 612 v, err := egb.Int(ctx) 613 if err != nil { 614 panic(err) 615 } 616 return v 617 } 618 619 // Float64s returns list of float64s from group-by. 620 // It is only allowed when executing a group-by query with one field. 621 func (egb *EventGroupBy) Float64s(ctx context.Context) ([]float64, error) { 622 if len(egb.fields) > 1 { 623 return nil, errors.New("ent: EventGroupBy.Float64s is not achievable when grouping more than 1 field") 624 } 625 var v []float64 626 if err := egb.Scan(ctx, &v); err != nil { 627 return nil, err 628 } 629 return v, nil 630 } 631 632 // Float64sX is like Float64s, but panics if an error occurs. 633 func (egb *EventGroupBy) Float64sX(ctx context.Context) []float64 { 634 v, err := egb.Float64s(ctx) 635 if err != nil { 636 panic(err) 637 } 638 return v 639 } 640 641 // Float64 returns a single float64 from a group-by query. 642 // It is only allowed when executing a group-by query with one field. 643 func (egb *EventGroupBy) Float64(ctx context.Context) (_ float64, err error) { 644 var v []float64 645 if v, err = egb.Float64s(ctx); err != nil { 646 return 647 } 648 switch len(v) { 649 case 1: 650 return v[0], nil 651 case 0: 652 err = &NotFoundError{event.Label} 653 default: 654 err = fmt.Errorf("ent: EventGroupBy.Float64s returned %d results when one was expected", len(v)) 655 } 656 return 657 } 658 659 // Float64X is like Float64, but panics if an error occurs. 660 func (egb *EventGroupBy) Float64X(ctx context.Context) float64 { 661 v, err := egb.Float64(ctx) 662 if err != nil { 663 panic(err) 664 } 665 return v 666 } 667 668 // Bools returns list of bools from group-by. 669 // It is only allowed when executing a group-by query with one field. 670 func (egb *EventGroupBy) Bools(ctx context.Context) ([]bool, error) { 671 if len(egb.fields) > 1 { 672 return nil, errors.New("ent: EventGroupBy.Bools is not achievable when grouping more than 1 field") 673 } 674 var v []bool 675 if err := egb.Scan(ctx, &v); err != nil { 676 return nil, err 677 } 678 return v, nil 679 } 680 681 // BoolsX is like Bools, but panics if an error occurs. 682 func (egb *EventGroupBy) BoolsX(ctx context.Context) []bool { 683 v, err := egb.Bools(ctx) 684 if err != nil { 685 panic(err) 686 } 687 return v 688 } 689 690 // Bool returns a single bool from a group-by query. 691 // It is only allowed when executing a group-by query with one field. 692 func (egb *EventGroupBy) Bool(ctx context.Context) (_ bool, err error) { 693 var v []bool 694 if v, err = egb.Bools(ctx); err != nil { 695 return 696 } 697 switch len(v) { 698 case 1: 699 return v[0], nil 700 case 0: 701 err = &NotFoundError{event.Label} 702 default: 703 err = fmt.Errorf("ent: EventGroupBy.Bools returned %d results when one was expected", len(v)) 704 } 705 return 706 } 707 708 // BoolX is like Bool, but panics if an error occurs. 709 func (egb *EventGroupBy) BoolX(ctx context.Context) bool { 710 v, err := egb.Bool(ctx) 711 if err != nil { 712 panic(err) 713 } 714 return v 715 } 716 717 func (egb *EventGroupBy) sqlScan(ctx context.Context, v interface{}) error { 718 for _, f := range egb.fields { 719 if !event.ValidColumn(f) { 720 return &ValidationError{Name: f, err: fmt.Errorf("invalid field %q for group-by", f)} 721 } 722 } 723 selector := egb.sqlQuery() 724 if err := selector.Err(); err != nil { 725 return err 726 } 727 rows := &sql.Rows{} 728 query, args := selector.Query() 729 if err := egb.driver.Query(ctx, query, args, rows); err != nil { 730 return err 731 } 732 defer rows.Close() 733 return sql.ScanSlice(rows, v) 734 } 735 736 func (egb *EventGroupBy) sqlQuery() *sql.Selector { 737 selector := egb.sql 738 columns := make([]string, 0, len(egb.fields)+len(egb.fns)) 739 columns = append(columns, egb.fields...) 740 for _, fn := range egb.fns { 741 columns = append(columns, fn(selector, event.ValidColumn)) 742 } 743 return selector.Select(columns...).GroupBy(egb.fields...) 744 } 745 746 // EventSelect is the builder for selecting fields of Event entities. 747 type EventSelect struct { 748 *EventQuery 749 // intermediate query (i.e. traversal path). 750 sql *sql.Selector 751 } 752 753 // Scan applies the selector query and scans the result into the given value. 754 func (es *EventSelect) Scan(ctx context.Context, v interface{}) error { 755 if err := es.prepareQuery(ctx); err != nil { 756 return err 757 } 758 es.sql = es.EventQuery.sqlQuery(ctx) 759 return es.sqlScan(ctx, v) 760 } 761 762 // ScanX is like Scan, but panics if an error occurs. 763 func (es *EventSelect) ScanX(ctx context.Context, v interface{}) { 764 if err := es.Scan(ctx, v); err != nil { 765 panic(err) 766 } 767 } 768 769 // Strings returns list of strings from a selector. It is only allowed when selecting one field. 770 func (es *EventSelect) Strings(ctx context.Context) ([]string, error) { 771 if len(es.fields) > 1 { 772 return nil, errors.New("ent: EventSelect.Strings is not achievable when selecting more than 1 field") 773 } 774 var v []string 775 if err := es.Scan(ctx, &v); err != nil { 776 return nil, err 777 } 778 return v, nil 779 } 780 781 // StringsX is like Strings, but panics if an error occurs. 782 func (es *EventSelect) StringsX(ctx context.Context) []string { 783 v, err := es.Strings(ctx) 784 if err != nil { 785 panic(err) 786 } 787 return v 788 } 789 790 // String returns a single string from a selector. It is only allowed when selecting one field. 791 func (es *EventSelect) String(ctx context.Context) (_ string, err error) { 792 var v []string 793 if v, err = es.Strings(ctx); err != nil { 794 return 795 } 796 switch len(v) { 797 case 1: 798 return v[0], nil 799 case 0: 800 err = &NotFoundError{event.Label} 801 default: 802 err = fmt.Errorf("ent: EventSelect.Strings returned %d results when one was expected", len(v)) 803 } 804 return 805 } 806 807 // StringX is like String, but panics if an error occurs. 808 func (es *EventSelect) StringX(ctx context.Context) string { 809 v, err := es.String(ctx) 810 if err != nil { 811 panic(err) 812 } 813 return v 814 } 815 816 // Ints returns list of ints from a selector. It is only allowed when selecting one field. 817 func (es *EventSelect) Ints(ctx context.Context) ([]int, error) { 818 if len(es.fields) > 1 { 819 return nil, errors.New("ent: EventSelect.Ints is not achievable when selecting more than 1 field") 820 } 821 var v []int 822 if err := es.Scan(ctx, &v); err != nil { 823 return nil, err 824 } 825 return v, nil 826 } 827 828 // IntsX is like Ints, but panics if an error occurs. 829 func (es *EventSelect) IntsX(ctx context.Context) []int { 830 v, err := es.Ints(ctx) 831 if err != nil { 832 panic(err) 833 } 834 return v 835 } 836 837 // Int returns a single int from a selector. It is only allowed when selecting one field. 838 func (es *EventSelect) Int(ctx context.Context) (_ int, err error) { 839 var v []int 840 if v, err = es.Ints(ctx); err != nil { 841 return 842 } 843 switch len(v) { 844 case 1: 845 return v[0], nil 846 case 0: 847 err = &NotFoundError{event.Label} 848 default: 849 err = fmt.Errorf("ent: EventSelect.Ints returned %d results when one was expected", len(v)) 850 } 851 return 852 } 853 854 // IntX is like Int, but panics if an error occurs. 855 func (es *EventSelect) IntX(ctx context.Context) int { 856 v, err := es.Int(ctx) 857 if err != nil { 858 panic(err) 859 } 860 return v 861 } 862 863 // Float64s returns list of float64s from a selector. It is only allowed when selecting one field. 864 func (es *EventSelect) Float64s(ctx context.Context) ([]float64, error) { 865 if len(es.fields) > 1 { 866 return nil, errors.New("ent: EventSelect.Float64s is not achievable when selecting more than 1 field") 867 } 868 var v []float64 869 if err := es.Scan(ctx, &v); err != nil { 870 return nil, err 871 } 872 return v, nil 873 } 874 875 // Float64sX is like Float64s, but panics if an error occurs. 876 func (es *EventSelect) Float64sX(ctx context.Context) []float64 { 877 v, err := es.Float64s(ctx) 878 if err != nil { 879 panic(err) 880 } 881 return v 882 } 883 884 // Float64 returns a single float64 from a selector. It is only allowed when selecting one field. 885 func (es *EventSelect) Float64(ctx context.Context) (_ float64, err error) { 886 var v []float64 887 if v, err = es.Float64s(ctx); err != nil { 888 return 889 } 890 switch len(v) { 891 case 1: 892 return v[0], nil 893 case 0: 894 err = &NotFoundError{event.Label} 895 default: 896 err = fmt.Errorf("ent: EventSelect.Float64s returned %d results when one was expected", len(v)) 897 } 898 return 899 } 900 901 // Float64X is like Float64, but panics if an error occurs. 902 func (es *EventSelect) Float64X(ctx context.Context) float64 { 903 v, err := es.Float64(ctx) 904 if err != nil { 905 panic(err) 906 } 907 return v 908 } 909 910 // Bools returns list of bools from a selector. It is only allowed when selecting one field. 911 func (es *EventSelect) Bools(ctx context.Context) ([]bool, error) { 912 if len(es.fields) > 1 { 913 return nil, errors.New("ent: EventSelect.Bools is not achievable when selecting more than 1 field") 914 } 915 var v []bool 916 if err := es.Scan(ctx, &v); err != nil { 917 return nil, err 918 } 919 return v, nil 920 } 921 922 // BoolsX is like Bools, but panics if an error occurs. 923 func (es *EventSelect) BoolsX(ctx context.Context) []bool { 924 v, err := es.Bools(ctx) 925 if err != nil { 926 panic(err) 927 } 928 return v 929 } 930 931 // Bool returns a single bool from a selector. It is only allowed when selecting one field. 932 func (es *EventSelect) Bool(ctx context.Context) (_ bool, err error) { 933 var v []bool 934 if v, err = es.Bools(ctx); err != nil { 935 return 936 } 937 switch len(v) { 938 case 1: 939 return v[0], nil 940 case 0: 941 err = &NotFoundError{event.Label} 942 default: 943 err = fmt.Errorf("ent: EventSelect.Bools returned %d results when one was expected", len(v)) 944 } 945 return 946 } 947 948 // BoolX is like Bool, but panics if an error occurs. 949 func (es *EventSelect) BoolX(ctx context.Context) bool { 950 v, err := es.Bool(ctx) 951 if err != nil { 952 panic(err) 953 } 954 return v 955 } 956 957 func (es *EventSelect) sqlScan(ctx context.Context, v interface{}) error { 958 rows := &sql.Rows{} 959 query, args := es.sqlQuery().Query() 960 if err := es.driver.Query(ctx, query, args, rows); err != nil { 961 return err 962 } 963 defer rows.Close() 964 return sql.ScanSlice(rows, v) 965 } 966 967 func (es *EventSelect) sqlQuery() sql.Querier { 968 selector := es.sql 969 selector.Select(selector.Columns(es.fields...)...) 970 return selector 971 }