github.com/NpoolPlatform/chain-middleware@v0.0.0-20240228100535-eb1bcf896eb9/pkg/db/ent/fiatcurrencyhistory_query.go (about) 1 // Code generated by ent, DO NOT EDIT. 2 3 package ent 4 5 import ( 6 "context" 7 "errors" 8 "fmt" 9 "math" 10 11 "entgo.io/ent/dialect" 12 "entgo.io/ent/dialect/sql" 13 "entgo.io/ent/dialect/sql/sqlgraph" 14 "entgo.io/ent/schema/field" 15 "github.com/NpoolPlatform/chain-middleware/pkg/db/ent/fiatcurrencyhistory" 16 "github.com/NpoolPlatform/chain-middleware/pkg/db/ent/predicate" 17 ) 18 19 // FiatCurrencyHistoryQuery is the builder for querying FiatCurrencyHistory entities. 20 type FiatCurrencyHistoryQuery struct { 21 config 22 limit *int 23 offset *int 24 unique *bool 25 order []OrderFunc 26 fields []string 27 predicates []predicate.FiatCurrencyHistory 28 modifiers []func(*sql.Selector) 29 // intermediate query (i.e. traversal path). 30 sql *sql.Selector 31 path func(context.Context) (*sql.Selector, error) 32 } 33 34 // Where adds a new predicate for the FiatCurrencyHistoryQuery builder. 35 func (fchq *FiatCurrencyHistoryQuery) Where(ps ...predicate.FiatCurrencyHistory) *FiatCurrencyHistoryQuery { 36 fchq.predicates = append(fchq.predicates, ps...) 37 return fchq 38 } 39 40 // Limit adds a limit step to the query. 41 func (fchq *FiatCurrencyHistoryQuery) Limit(limit int) *FiatCurrencyHistoryQuery { 42 fchq.limit = &limit 43 return fchq 44 } 45 46 // Offset adds an offset step to the query. 47 func (fchq *FiatCurrencyHistoryQuery) Offset(offset int) *FiatCurrencyHistoryQuery { 48 fchq.offset = &offset 49 return fchq 50 } 51 52 // Unique configures the query builder to filter duplicate records on query. 53 // By default, unique is set to true, and can be disabled using this method. 54 func (fchq *FiatCurrencyHistoryQuery) Unique(unique bool) *FiatCurrencyHistoryQuery { 55 fchq.unique = &unique 56 return fchq 57 } 58 59 // Order adds an order step to the query. 60 func (fchq *FiatCurrencyHistoryQuery) Order(o ...OrderFunc) *FiatCurrencyHistoryQuery { 61 fchq.order = append(fchq.order, o...) 62 return fchq 63 } 64 65 // First returns the first FiatCurrencyHistory entity from the query. 66 // Returns a *NotFoundError when no FiatCurrencyHistory was found. 67 func (fchq *FiatCurrencyHistoryQuery) First(ctx context.Context) (*FiatCurrencyHistory, error) { 68 nodes, err := fchq.Limit(1).All(ctx) 69 if err != nil { 70 return nil, err 71 } 72 if len(nodes) == 0 { 73 return nil, &NotFoundError{fiatcurrencyhistory.Label} 74 } 75 return nodes[0], nil 76 } 77 78 // FirstX is like First, but panics if an error occurs. 79 func (fchq *FiatCurrencyHistoryQuery) FirstX(ctx context.Context) *FiatCurrencyHistory { 80 node, err := fchq.First(ctx) 81 if err != nil && !IsNotFound(err) { 82 panic(err) 83 } 84 return node 85 } 86 87 // FirstID returns the first FiatCurrencyHistory ID from the query. 88 // Returns a *NotFoundError when no FiatCurrencyHistory ID was found. 89 func (fchq *FiatCurrencyHistoryQuery) FirstID(ctx context.Context) (id uint32, err error) { 90 var ids []uint32 91 if ids, err = fchq.Limit(1).IDs(ctx); err != nil { 92 return 93 } 94 if len(ids) == 0 { 95 err = &NotFoundError{fiatcurrencyhistory.Label} 96 return 97 } 98 return ids[0], nil 99 } 100 101 // FirstIDX is like FirstID, but panics if an error occurs. 102 func (fchq *FiatCurrencyHistoryQuery) FirstIDX(ctx context.Context) uint32 { 103 id, err := fchq.FirstID(ctx) 104 if err != nil && !IsNotFound(err) { 105 panic(err) 106 } 107 return id 108 } 109 110 // Only returns a single FiatCurrencyHistory entity found by the query, ensuring it only returns one. 111 // Returns a *NotSingularError when more than one FiatCurrencyHistory entity is found. 112 // Returns a *NotFoundError when no FiatCurrencyHistory entities are found. 113 func (fchq *FiatCurrencyHistoryQuery) Only(ctx context.Context) (*FiatCurrencyHistory, error) { 114 nodes, err := fchq.Limit(2).All(ctx) 115 if err != nil { 116 return nil, err 117 } 118 switch len(nodes) { 119 case 1: 120 return nodes[0], nil 121 case 0: 122 return nil, &NotFoundError{fiatcurrencyhistory.Label} 123 default: 124 return nil, &NotSingularError{fiatcurrencyhistory.Label} 125 } 126 } 127 128 // OnlyX is like Only, but panics if an error occurs. 129 func (fchq *FiatCurrencyHistoryQuery) OnlyX(ctx context.Context) *FiatCurrencyHistory { 130 node, err := fchq.Only(ctx) 131 if err != nil { 132 panic(err) 133 } 134 return node 135 } 136 137 // OnlyID is like Only, but returns the only FiatCurrencyHistory ID in the query. 138 // Returns a *NotSingularError when more than one FiatCurrencyHistory ID is found. 139 // Returns a *NotFoundError when no entities are found. 140 func (fchq *FiatCurrencyHistoryQuery) OnlyID(ctx context.Context) (id uint32, err error) { 141 var ids []uint32 142 if ids, err = fchq.Limit(2).IDs(ctx); err != nil { 143 return 144 } 145 switch len(ids) { 146 case 1: 147 id = ids[0] 148 case 0: 149 err = &NotFoundError{fiatcurrencyhistory.Label} 150 default: 151 err = &NotSingularError{fiatcurrencyhistory.Label} 152 } 153 return 154 } 155 156 // OnlyIDX is like OnlyID, but panics if an error occurs. 157 func (fchq *FiatCurrencyHistoryQuery) OnlyIDX(ctx context.Context) uint32 { 158 id, err := fchq.OnlyID(ctx) 159 if err != nil { 160 panic(err) 161 } 162 return id 163 } 164 165 // All executes the query and returns a list of FiatCurrencyHistories. 166 func (fchq *FiatCurrencyHistoryQuery) All(ctx context.Context) ([]*FiatCurrencyHistory, error) { 167 if err := fchq.prepareQuery(ctx); err != nil { 168 return nil, err 169 } 170 return fchq.sqlAll(ctx) 171 } 172 173 // AllX is like All, but panics if an error occurs. 174 func (fchq *FiatCurrencyHistoryQuery) AllX(ctx context.Context) []*FiatCurrencyHistory { 175 nodes, err := fchq.All(ctx) 176 if err != nil { 177 panic(err) 178 } 179 return nodes 180 } 181 182 // IDs executes the query and returns a list of FiatCurrencyHistory IDs. 183 func (fchq *FiatCurrencyHistoryQuery) IDs(ctx context.Context) ([]uint32, error) { 184 var ids []uint32 185 if err := fchq.Select(fiatcurrencyhistory.FieldID).Scan(ctx, &ids); err != nil { 186 return nil, err 187 } 188 return ids, nil 189 } 190 191 // IDsX is like IDs, but panics if an error occurs. 192 func (fchq *FiatCurrencyHistoryQuery) IDsX(ctx context.Context) []uint32 { 193 ids, err := fchq.IDs(ctx) 194 if err != nil { 195 panic(err) 196 } 197 return ids 198 } 199 200 // Count returns the count of the given query. 201 func (fchq *FiatCurrencyHistoryQuery) Count(ctx context.Context) (int, error) { 202 if err := fchq.prepareQuery(ctx); err != nil { 203 return 0, err 204 } 205 return fchq.sqlCount(ctx) 206 } 207 208 // CountX is like Count, but panics if an error occurs. 209 func (fchq *FiatCurrencyHistoryQuery) CountX(ctx context.Context) int { 210 count, err := fchq.Count(ctx) 211 if err != nil { 212 panic(err) 213 } 214 return count 215 } 216 217 // Exist returns true if the query has elements in the graph. 218 func (fchq *FiatCurrencyHistoryQuery) Exist(ctx context.Context) (bool, error) { 219 if err := fchq.prepareQuery(ctx); err != nil { 220 return false, err 221 } 222 return fchq.sqlExist(ctx) 223 } 224 225 // ExistX is like Exist, but panics if an error occurs. 226 func (fchq *FiatCurrencyHistoryQuery) ExistX(ctx context.Context) bool { 227 exist, err := fchq.Exist(ctx) 228 if err != nil { 229 panic(err) 230 } 231 return exist 232 } 233 234 // Clone returns a duplicate of the FiatCurrencyHistoryQuery builder, including all associated steps. It can be 235 // used to prepare common query builders and use them differently after the clone is made. 236 func (fchq *FiatCurrencyHistoryQuery) Clone() *FiatCurrencyHistoryQuery { 237 if fchq == nil { 238 return nil 239 } 240 return &FiatCurrencyHistoryQuery{ 241 config: fchq.config, 242 limit: fchq.limit, 243 offset: fchq.offset, 244 order: append([]OrderFunc{}, fchq.order...), 245 predicates: append([]predicate.FiatCurrencyHistory{}, fchq.predicates...), 246 // clone intermediate query. 247 sql: fchq.sql.Clone(), 248 path: fchq.path, 249 unique: fchq.unique, 250 } 251 } 252 253 // GroupBy is used to group vertices by one or more fields/columns. 254 // It is often used with aggregate functions, like: count, max, mean, min, sum. 255 // 256 // Example: 257 // 258 // var v []struct { 259 // CreatedAt uint32 `json:"created_at,omitempty"` 260 // Count int `json:"count,omitempty"` 261 // } 262 // 263 // client.FiatCurrencyHistory.Query(). 264 // GroupBy(fiatcurrencyhistory.FieldCreatedAt). 265 // Aggregate(ent.Count()). 266 // Scan(ctx, &v) 267 // 268 func (fchq *FiatCurrencyHistoryQuery) GroupBy(field string, fields ...string) *FiatCurrencyHistoryGroupBy { 269 grbuild := &FiatCurrencyHistoryGroupBy{config: fchq.config} 270 grbuild.fields = append([]string{field}, fields...) 271 grbuild.path = func(ctx context.Context) (prev *sql.Selector, err error) { 272 if err := fchq.prepareQuery(ctx); err != nil { 273 return nil, err 274 } 275 return fchq.sqlQuery(ctx), nil 276 } 277 grbuild.label = fiatcurrencyhistory.Label 278 grbuild.flds, grbuild.scan = &grbuild.fields, grbuild.Scan 279 return grbuild 280 } 281 282 // Select allows the selection one or more fields/columns for the given query, 283 // instead of selecting all fields in the entity. 284 // 285 // Example: 286 // 287 // var v []struct { 288 // CreatedAt uint32 `json:"created_at,omitempty"` 289 // } 290 // 291 // client.FiatCurrencyHistory.Query(). 292 // Select(fiatcurrencyhistory.FieldCreatedAt). 293 // Scan(ctx, &v) 294 // 295 func (fchq *FiatCurrencyHistoryQuery) Select(fields ...string) *FiatCurrencyHistorySelect { 296 fchq.fields = append(fchq.fields, fields...) 297 selbuild := &FiatCurrencyHistorySelect{FiatCurrencyHistoryQuery: fchq} 298 selbuild.label = fiatcurrencyhistory.Label 299 selbuild.flds, selbuild.scan = &fchq.fields, selbuild.Scan 300 return selbuild 301 } 302 303 func (fchq *FiatCurrencyHistoryQuery) prepareQuery(ctx context.Context) error { 304 for _, f := range fchq.fields { 305 if !fiatcurrencyhistory.ValidColumn(f) { 306 return &ValidationError{Name: f, err: fmt.Errorf("ent: invalid field %q for query", f)} 307 } 308 } 309 if fchq.path != nil { 310 prev, err := fchq.path(ctx) 311 if err != nil { 312 return err 313 } 314 fchq.sql = prev 315 } 316 if fiatcurrencyhistory.Policy == nil { 317 return errors.New("ent: uninitialized fiatcurrencyhistory.Policy (forgotten import ent/runtime?)") 318 } 319 if err := fiatcurrencyhistory.Policy.EvalQuery(ctx, fchq); err != nil { 320 return err 321 } 322 return nil 323 } 324 325 func (fchq *FiatCurrencyHistoryQuery) sqlAll(ctx context.Context, hooks ...queryHook) ([]*FiatCurrencyHistory, error) { 326 var ( 327 nodes = []*FiatCurrencyHistory{} 328 _spec = fchq.querySpec() 329 ) 330 _spec.ScanValues = func(columns []string) ([]interface{}, error) { 331 return (*FiatCurrencyHistory).scanValues(nil, columns) 332 } 333 _spec.Assign = func(columns []string, values []interface{}) error { 334 node := &FiatCurrencyHistory{config: fchq.config} 335 nodes = append(nodes, node) 336 return node.assignValues(columns, values) 337 } 338 if len(fchq.modifiers) > 0 { 339 _spec.Modifiers = fchq.modifiers 340 } 341 for i := range hooks { 342 hooks[i](ctx, _spec) 343 } 344 if err := sqlgraph.QueryNodes(ctx, fchq.driver, _spec); err != nil { 345 return nil, err 346 } 347 if len(nodes) == 0 { 348 return nodes, nil 349 } 350 return nodes, nil 351 } 352 353 func (fchq *FiatCurrencyHistoryQuery) sqlCount(ctx context.Context) (int, error) { 354 _spec := fchq.querySpec() 355 if len(fchq.modifiers) > 0 { 356 _spec.Modifiers = fchq.modifiers 357 } 358 _spec.Node.Columns = fchq.fields 359 if len(fchq.fields) > 0 { 360 _spec.Unique = fchq.unique != nil && *fchq.unique 361 } 362 return sqlgraph.CountNodes(ctx, fchq.driver, _spec) 363 } 364 365 func (fchq *FiatCurrencyHistoryQuery) sqlExist(ctx context.Context) (bool, error) { 366 n, err := fchq.sqlCount(ctx) 367 if err != nil { 368 return false, fmt.Errorf("ent: check existence: %w", err) 369 } 370 return n > 0, nil 371 } 372 373 func (fchq *FiatCurrencyHistoryQuery) querySpec() *sqlgraph.QuerySpec { 374 _spec := &sqlgraph.QuerySpec{ 375 Node: &sqlgraph.NodeSpec{ 376 Table: fiatcurrencyhistory.Table, 377 Columns: fiatcurrencyhistory.Columns, 378 ID: &sqlgraph.FieldSpec{ 379 Type: field.TypeUint32, 380 Column: fiatcurrencyhistory.FieldID, 381 }, 382 }, 383 From: fchq.sql, 384 Unique: true, 385 } 386 if unique := fchq.unique; unique != nil { 387 _spec.Unique = *unique 388 } 389 if fields := fchq.fields; len(fields) > 0 { 390 _spec.Node.Columns = make([]string, 0, len(fields)) 391 _spec.Node.Columns = append(_spec.Node.Columns, fiatcurrencyhistory.FieldID) 392 for i := range fields { 393 if fields[i] != fiatcurrencyhistory.FieldID { 394 _spec.Node.Columns = append(_spec.Node.Columns, fields[i]) 395 } 396 } 397 } 398 if ps := fchq.predicates; len(ps) > 0 { 399 _spec.Predicate = func(selector *sql.Selector) { 400 for i := range ps { 401 ps[i](selector) 402 } 403 } 404 } 405 if limit := fchq.limit; limit != nil { 406 _spec.Limit = *limit 407 } 408 if offset := fchq.offset; offset != nil { 409 _spec.Offset = *offset 410 } 411 if ps := fchq.order; len(ps) > 0 { 412 _spec.Order = func(selector *sql.Selector) { 413 for i := range ps { 414 ps[i](selector) 415 } 416 } 417 } 418 return _spec 419 } 420 421 func (fchq *FiatCurrencyHistoryQuery) sqlQuery(ctx context.Context) *sql.Selector { 422 builder := sql.Dialect(fchq.driver.Dialect()) 423 t1 := builder.Table(fiatcurrencyhistory.Table) 424 columns := fchq.fields 425 if len(columns) == 0 { 426 columns = fiatcurrencyhistory.Columns 427 } 428 selector := builder.Select(t1.Columns(columns...)...).From(t1) 429 if fchq.sql != nil { 430 selector = fchq.sql 431 selector.Select(selector.Columns(columns...)...) 432 } 433 if fchq.unique != nil && *fchq.unique { 434 selector.Distinct() 435 } 436 for _, m := range fchq.modifiers { 437 m(selector) 438 } 439 for _, p := range fchq.predicates { 440 p(selector) 441 } 442 for _, p := range fchq.order { 443 p(selector) 444 } 445 if offset := fchq.offset; offset != nil { 446 // limit is mandatory for offset clause. We start 447 // with default value, and override it below if needed. 448 selector.Offset(*offset).Limit(math.MaxInt32) 449 } 450 if limit := fchq.limit; limit != nil { 451 selector.Limit(*limit) 452 } 453 return selector 454 } 455 456 // ForUpdate locks the selected rows against concurrent updates, and prevent them from being 457 // updated, deleted or "selected ... for update" by other sessions, until the transaction is 458 // either committed or rolled-back. 459 func (fchq *FiatCurrencyHistoryQuery) ForUpdate(opts ...sql.LockOption) *FiatCurrencyHistoryQuery { 460 if fchq.driver.Dialect() == dialect.Postgres { 461 fchq.Unique(false) 462 } 463 fchq.modifiers = append(fchq.modifiers, func(s *sql.Selector) { 464 s.ForUpdate(opts...) 465 }) 466 return fchq 467 } 468 469 // ForShare behaves similarly to ForUpdate, except that it acquires a shared mode lock 470 // on any rows that are read. Other sessions can read the rows, but cannot modify them 471 // until your transaction commits. 472 func (fchq *FiatCurrencyHistoryQuery) ForShare(opts ...sql.LockOption) *FiatCurrencyHistoryQuery { 473 if fchq.driver.Dialect() == dialect.Postgres { 474 fchq.Unique(false) 475 } 476 fchq.modifiers = append(fchq.modifiers, func(s *sql.Selector) { 477 s.ForShare(opts...) 478 }) 479 return fchq 480 } 481 482 // Modify adds a query modifier for attaching custom logic to queries. 483 func (fchq *FiatCurrencyHistoryQuery) Modify(modifiers ...func(s *sql.Selector)) *FiatCurrencyHistorySelect { 484 fchq.modifiers = append(fchq.modifiers, modifiers...) 485 return fchq.Select() 486 } 487 488 // FiatCurrencyHistoryGroupBy is the group-by builder for FiatCurrencyHistory entities. 489 type FiatCurrencyHistoryGroupBy struct { 490 config 491 selector 492 fields []string 493 fns []AggregateFunc 494 // intermediate query (i.e. traversal path). 495 sql *sql.Selector 496 path func(context.Context) (*sql.Selector, error) 497 } 498 499 // Aggregate adds the given aggregation functions to the group-by query. 500 func (fchgb *FiatCurrencyHistoryGroupBy) Aggregate(fns ...AggregateFunc) *FiatCurrencyHistoryGroupBy { 501 fchgb.fns = append(fchgb.fns, fns...) 502 return fchgb 503 } 504 505 // Scan applies the group-by query and scans the result into the given value. 506 func (fchgb *FiatCurrencyHistoryGroupBy) Scan(ctx context.Context, v interface{}) error { 507 query, err := fchgb.path(ctx) 508 if err != nil { 509 return err 510 } 511 fchgb.sql = query 512 return fchgb.sqlScan(ctx, v) 513 } 514 515 func (fchgb *FiatCurrencyHistoryGroupBy) sqlScan(ctx context.Context, v interface{}) error { 516 for _, f := range fchgb.fields { 517 if !fiatcurrencyhistory.ValidColumn(f) { 518 return &ValidationError{Name: f, err: fmt.Errorf("invalid field %q for group-by", f)} 519 } 520 } 521 selector := fchgb.sqlQuery() 522 if err := selector.Err(); err != nil { 523 return err 524 } 525 rows := &sql.Rows{} 526 query, args := selector.Query() 527 if err := fchgb.driver.Query(ctx, query, args, rows); err != nil { 528 return err 529 } 530 defer rows.Close() 531 return sql.ScanSlice(rows, v) 532 } 533 534 func (fchgb *FiatCurrencyHistoryGroupBy) sqlQuery() *sql.Selector { 535 selector := fchgb.sql.Select() 536 aggregation := make([]string, 0, len(fchgb.fns)) 537 for _, fn := range fchgb.fns { 538 aggregation = append(aggregation, fn(selector)) 539 } 540 // If no columns were selected in a custom aggregation function, the default 541 // selection is the fields used for "group-by", and the aggregation functions. 542 if len(selector.SelectedColumns()) == 0 { 543 columns := make([]string, 0, len(fchgb.fields)+len(fchgb.fns)) 544 for _, f := range fchgb.fields { 545 columns = append(columns, selector.C(f)) 546 } 547 columns = append(columns, aggregation...) 548 selector.Select(columns...) 549 } 550 return selector.GroupBy(selector.Columns(fchgb.fields...)...) 551 } 552 553 // FiatCurrencyHistorySelect is the builder for selecting fields of FiatCurrencyHistory entities. 554 type FiatCurrencyHistorySelect struct { 555 *FiatCurrencyHistoryQuery 556 selector 557 // intermediate query (i.e. traversal path). 558 sql *sql.Selector 559 } 560 561 // Scan applies the selector query and scans the result into the given value. 562 func (fchs *FiatCurrencyHistorySelect) Scan(ctx context.Context, v interface{}) error { 563 if err := fchs.prepareQuery(ctx); err != nil { 564 return err 565 } 566 fchs.sql = fchs.FiatCurrencyHistoryQuery.sqlQuery(ctx) 567 return fchs.sqlScan(ctx, v) 568 } 569 570 func (fchs *FiatCurrencyHistorySelect) sqlScan(ctx context.Context, v interface{}) error { 571 rows := &sql.Rows{} 572 query, args := fchs.sql.Query() 573 if err := fchs.driver.Query(ctx, query, args, rows); err != nil { 574 return err 575 } 576 defer rows.Close() 577 return sql.ScanSlice(rows, v) 578 } 579 580 // Modify adds a query modifier for attaching custom logic to queries. 581 func (fchs *FiatCurrencyHistorySelect) Modify(modifiers ...func(s *sql.Selector)) *FiatCurrencyHistorySelect { 582 fchs.modifiers = append(fchs.modifiers, modifiers...) 583 return fchs 584 }