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