| |
|
|
| package db |
|
|
| import ( |
| "context" |
| "fmt" |
| "math" |
|
|
| "entgo.io/ent" |
| "entgo.io/ent/dialect" |
| "entgo.io/ent/dialect/sql" |
| "entgo.io/ent/dialect/sql/sqlgraph" |
| "entgo.io/ent/schema/field" |
| "github.com/openmeterio/openmeter/pkg/framework/entutils/testutils/ent2/db/example2" |
| "github.com/openmeterio/openmeter/pkg/framework/entutils/testutils/ent2/db/predicate" |
| ) |
|
|
| |
| type Example2Query struct { |
| config |
| ctx *QueryContext |
| order []example2.OrderOption |
| inters []Interceptor |
| predicates []predicate.Example2 |
| modifiers []func(*sql.Selector) |
| |
| sql *sql.Selector |
| path func(context.Context) (*sql.Selector, error) |
| } |
|
|
| |
| func (_q *Example2Query) Where(ps ...predicate.Example2) *Example2Query { |
| _q.predicates = append(_q.predicates, ps...) |
| return _q |
| } |
|
|
| |
| func (_q *Example2Query) Limit(limit int) *Example2Query { |
| _q.ctx.Limit = &limit |
| return _q |
| } |
|
|
| |
| func (_q *Example2Query) Offset(offset int) *Example2Query { |
| _q.ctx.Offset = &offset |
| return _q |
| } |
|
|
| |
| |
| func (_q *Example2Query) Unique(unique bool) *Example2Query { |
| _q.ctx.Unique = &unique |
| return _q |
| } |
|
|
| |
| func (_q *Example2Query) Order(o ...example2.OrderOption) *Example2Query { |
| _q.order = append(_q.order, o...) |
| return _q |
| } |
|
|
| |
| |
| func (_q *Example2Query) First(ctx context.Context) (*Example2, error) { |
| nodes, err := _q.Limit(1).All(setContextOp(ctx, _q.ctx, ent.OpQueryFirst)) |
| if err != nil { |
| return nil, err |
| } |
| if len(nodes) == 0 { |
| return nil, &NotFoundError{example2.Label} |
| } |
| return nodes[0], nil |
| } |
|
|
| |
| func (_q *Example2Query) FirstX(ctx context.Context) *Example2 { |
| node, err := _q.First(ctx) |
| if err != nil && !IsNotFound(err) { |
| panic(err) |
| } |
| return node |
| } |
|
|
| |
| |
| func (_q *Example2Query) FirstID(ctx context.Context) (id string, err error) { |
| var ids []string |
| if ids, err = _q.Limit(1).IDs(setContextOp(ctx, _q.ctx, ent.OpQueryFirstID)); err != nil { |
| return |
| } |
| if len(ids) == 0 { |
| err = &NotFoundError{example2.Label} |
| return |
| } |
| return ids[0], nil |
| } |
|
|
| |
| func (_q *Example2Query) FirstIDX(ctx context.Context) string { |
| id, err := _q.FirstID(ctx) |
| if err != nil && !IsNotFound(err) { |
| panic(err) |
| } |
| return id |
| } |
|
|
| |
| |
| |
| func (_q *Example2Query) Only(ctx context.Context) (*Example2, error) { |
| nodes, err := _q.Limit(2).All(setContextOp(ctx, _q.ctx, ent.OpQueryOnly)) |
| if err != nil { |
| return nil, err |
| } |
| switch len(nodes) { |
| case 1: |
| return nodes[0], nil |
| case 0: |
| return nil, &NotFoundError{example2.Label} |
| default: |
| return nil, &NotSingularError{example2.Label} |
| } |
| } |
|
|
| |
| func (_q *Example2Query) OnlyX(ctx context.Context) *Example2 { |
| node, err := _q.Only(ctx) |
| if err != nil { |
| panic(err) |
| } |
| return node |
| } |
|
|
| |
| |
| |
| func (_q *Example2Query) OnlyID(ctx context.Context) (id string, err error) { |
| var ids []string |
| if ids, err = _q.Limit(2).IDs(setContextOp(ctx, _q.ctx, ent.OpQueryOnlyID)); err != nil { |
| return |
| } |
| switch len(ids) { |
| case 1: |
| id = ids[0] |
| case 0: |
| err = &NotFoundError{example2.Label} |
| default: |
| err = &NotSingularError{example2.Label} |
| } |
| return |
| } |
|
|
| |
| func (_q *Example2Query) OnlyIDX(ctx context.Context) string { |
| id, err := _q.OnlyID(ctx) |
| if err != nil { |
| panic(err) |
| } |
| return id |
| } |
|
|
| |
| func (_q *Example2Query) All(ctx context.Context) ([]*Example2, error) { |
| ctx = setContextOp(ctx, _q.ctx, ent.OpQueryAll) |
| if err := _q.prepareQuery(ctx); err != nil { |
| return nil, err |
| } |
| qr := querierAll[[]*Example2, *Example2Query]() |
| return withInterceptors[[]*Example2](ctx, _q, qr, _q.inters) |
| } |
|
|
| |
| func (_q *Example2Query) AllX(ctx context.Context) []*Example2 { |
| nodes, err := _q.All(ctx) |
| if err != nil { |
| panic(err) |
| } |
| return nodes |
| } |
|
|
| |
| func (_q *Example2Query) IDs(ctx context.Context) (ids []string, err error) { |
| if _q.ctx.Unique == nil && _q.path != nil { |
| _q.Unique(true) |
| } |
| ctx = setContextOp(ctx, _q.ctx, ent.OpQueryIDs) |
| if err = _q.Select(example2.FieldID).Scan(ctx, &ids); err != nil { |
| return nil, err |
| } |
| return ids, nil |
| } |
|
|
| |
| func (_q *Example2Query) IDsX(ctx context.Context) []string { |
| ids, err := _q.IDs(ctx) |
| if err != nil { |
| panic(err) |
| } |
| return ids |
| } |
|
|
| |
| func (_q *Example2Query) Count(ctx context.Context) (int, error) { |
| ctx = setContextOp(ctx, _q.ctx, ent.OpQueryCount) |
| if err := _q.prepareQuery(ctx); err != nil { |
| return 0, err |
| } |
| return withInterceptors[int](ctx, _q, querierCount[*Example2Query](), _q.inters) |
| } |
|
|
| |
| func (_q *Example2Query) CountX(ctx context.Context) int { |
| count, err := _q.Count(ctx) |
| if err != nil { |
| panic(err) |
| } |
| return count |
| } |
|
|
| |
| func (_q *Example2Query) Exist(ctx context.Context) (bool, error) { |
| ctx = setContextOp(ctx, _q.ctx, ent.OpQueryExist) |
| switch _, err := _q.FirstID(ctx); { |
| case IsNotFound(err): |
| return false, nil |
| case err != nil: |
| return false, fmt.Errorf("db: check existence: %w", err) |
| default: |
| return true, nil |
| } |
| } |
|
|
| |
| func (_q *Example2Query) ExistX(ctx context.Context) bool { |
| exist, err := _q.Exist(ctx) |
| if err != nil { |
| panic(err) |
| } |
| return exist |
| } |
|
|
| |
| |
| func (_q *Example2Query) Clone() *Example2Query { |
| if _q == nil { |
| return nil |
| } |
| return &Example2Query{ |
| config: _q.config, |
| ctx: _q.ctx.Clone(), |
| order: append([]example2.OrderOption{}, _q.order...), |
| inters: append([]Interceptor{}, _q.inters...), |
| predicates: append([]predicate.Example2{}, _q.predicates...), |
| |
| sql: _q.sql.Clone(), |
| path: _q.path, |
| } |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| func (_q *Example2Query) GroupBy(field string, fields ...string) *Example2GroupBy { |
| _q.ctx.Fields = append([]string{field}, fields...) |
| grbuild := &Example2GroupBy{build: _q} |
| grbuild.flds = &_q.ctx.Fields |
| grbuild.label = example2.Label |
| grbuild.scan = grbuild.Scan |
| return grbuild |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| func (_q *Example2Query) Select(fields ...string) *Example2Select { |
| _q.ctx.Fields = append(_q.ctx.Fields, fields...) |
| sbuild := &Example2Select{Example2Query: _q} |
| sbuild.label = example2.Label |
| sbuild.flds, sbuild.scan = &_q.ctx.Fields, sbuild.Scan |
| return sbuild |
| } |
|
|
| |
| func (_q *Example2Query) Aggregate(fns ...AggregateFunc) *Example2Select { |
| return _q.Select().Aggregate(fns...) |
| } |
|
|
| func (_q *Example2Query) prepareQuery(ctx context.Context) error { |
| for _, inter := range _q.inters { |
| if inter == nil { |
| return fmt.Errorf("db: uninitialized interceptor (forgotten import db/runtime?)") |
| } |
| if trv, ok := inter.(Traverser); ok { |
| if err := trv.Traverse(ctx, _q); err != nil { |
| return err |
| } |
| } |
| } |
| for _, f := range _q.ctx.Fields { |
| if !example2.ValidColumn(f) { |
| return &ValidationError{Name: f, err: fmt.Errorf("db: invalid field %q for query", f)} |
| } |
| } |
| if _q.path != nil { |
| prev, err := _q.path(ctx) |
| if err != nil { |
| return err |
| } |
| _q.sql = prev |
| } |
| return nil |
| } |
|
|
| func (_q *Example2Query) sqlAll(ctx context.Context, hooks ...queryHook) ([]*Example2, error) { |
| var ( |
| nodes = []*Example2{} |
| _spec = _q.querySpec() |
| ) |
| _spec.ScanValues = func(columns []string) ([]any, error) { |
| return (*Example2).scanValues(nil, columns) |
| } |
| _spec.Assign = func(columns []string, values []any) error { |
| node := &Example2{config: _q.config} |
| nodes = append(nodes, node) |
| return node.assignValues(columns, values) |
| } |
| if len(_q.modifiers) > 0 { |
| _spec.Modifiers = _q.modifiers |
| } |
| for i := range hooks { |
| hooks[i](ctx, _spec) |
| } |
| if err := sqlgraph.QueryNodes(ctx, _q.driver, _spec); err != nil { |
| return nil, err |
| } |
| if len(nodes) == 0 { |
| return nodes, nil |
| } |
| return nodes, nil |
| } |
|
|
| func (_q *Example2Query) sqlCount(ctx context.Context) (int, error) { |
| _spec := _q.querySpec() |
| if len(_q.modifiers) > 0 { |
| _spec.Modifiers = _q.modifiers |
| } |
| _spec.Node.Columns = _q.ctx.Fields |
| if len(_q.ctx.Fields) > 0 { |
| _spec.Unique = _q.ctx.Unique != nil && *_q.ctx.Unique |
| } |
| return sqlgraph.CountNodes(ctx, _q.driver, _spec) |
| } |
|
|
| func (_q *Example2Query) querySpec() *sqlgraph.QuerySpec { |
| _spec := sqlgraph.NewQuerySpec(example2.Table, example2.Columns, sqlgraph.NewFieldSpec(example2.FieldID, field.TypeString)) |
| _spec.From = _q.sql |
| if unique := _q.ctx.Unique; unique != nil { |
| _spec.Unique = *unique |
| } else if _q.path != nil { |
| _spec.Unique = true |
| } |
| if fields := _q.ctx.Fields; len(fields) > 0 { |
| _spec.Node.Columns = make([]string, 0, len(fields)) |
| _spec.Node.Columns = append(_spec.Node.Columns, example2.FieldID) |
| for i := range fields { |
| if fields[i] != example2.FieldID { |
| _spec.Node.Columns = append(_spec.Node.Columns, fields[i]) |
| } |
| } |
| } |
| if ps := _q.predicates; len(ps) > 0 { |
| _spec.Predicate = func(selector *sql.Selector) { |
| for i := range ps { |
| ps[i](selector) |
| } |
| } |
| } |
| if limit := _q.ctx.Limit; limit != nil { |
| _spec.Limit = *limit |
| } |
| if offset := _q.ctx.Offset; offset != nil { |
| _spec.Offset = *offset |
| } |
| if ps := _q.order; len(ps) > 0 { |
| _spec.Order = func(selector *sql.Selector) { |
| for i := range ps { |
| ps[i](selector) |
| } |
| } |
| } |
| return _spec |
| } |
|
|
| func (_q *Example2Query) sqlQuery(ctx context.Context) *sql.Selector { |
| builder := sql.Dialect(_q.driver.Dialect()) |
| t1 := builder.Table(example2.Table) |
| columns := _q.ctx.Fields |
| if len(columns) == 0 { |
| columns = example2.Columns |
| } |
| selector := builder.Select(t1.Columns(columns...)...).From(t1) |
| if _q.sql != nil { |
| selector = _q.sql |
| selector.Select(selector.Columns(columns...)...) |
| } |
| if _q.ctx.Unique != nil && *_q.ctx.Unique { |
| selector.Distinct() |
| } |
| for _, m := range _q.modifiers { |
| m(selector) |
| } |
| for _, p := range _q.predicates { |
| p(selector) |
| } |
| for _, p := range _q.order { |
| p(selector) |
| } |
| if offset := _q.ctx.Offset; offset != nil { |
| |
| |
| selector.Offset(*offset).Limit(math.MaxInt32) |
| } |
| if limit := _q.ctx.Limit; limit != nil { |
| selector.Limit(*limit) |
| } |
| return selector |
| } |
|
|
| |
| |
| |
| func (_q *Example2Query) ForUpdate(opts ...sql.LockOption) *Example2Query { |
| if _q.driver.Dialect() == dialect.Postgres { |
| _q.Unique(false) |
| } |
| _q.modifiers = append(_q.modifiers, func(s *sql.Selector) { |
| s.ForUpdate(opts...) |
| }) |
| return _q |
| } |
|
|
| |
| |
| |
| func (_q *Example2Query) ForShare(opts ...sql.LockOption) *Example2Query { |
| if _q.driver.Dialect() == dialect.Postgres { |
| _q.Unique(false) |
| } |
| _q.modifiers = append(_q.modifiers, func(s *sql.Selector) { |
| s.ForShare(opts...) |
| }) |
| return _q |
| } |
|
|
| |
| type Example2GroupBy struct { |
| selector |
| build *Example2Query |
| } |
|
|
| |
| func (_g *Example2GroupBy) Aggregate(fns ...AggregateFunc) *Example2GroupBy { |
| _g.fns = append(_g.fns, fns...) |
| return _g |
| } |
|
|
| |
| func (_g *Example2GroupBy) Scan(ctx context.Context, v any) error { |
| ctx = setContextOp(ctx, _g.build.ctx, ent.OpQueryGroupBy) |
| if err := _g.build.prepareQuery(ctx); err != nil { |
| return err |
| } |
| return scanWithInterceptors[*Example2Query, *Example2GroupBy](ctx, _g.build, _g, _g.build.inters, v) |
| } |
|
|
| func (_g *Example2GroupBy) sqlScan(ctx context.Context, root *Example2Query, v any) error { |
| selector := root.sqlQuery(ctx).Select() |
| aggregation := make([]string, 0, len(_g.fns)) |
| for _, fn := range _g.fns { |
| aggregation = append(aggregation, fn(selector)) |
| } |
| if len(selector.SelectedColumns()) == 0 { |
| columns := make([]string, 0, len(*_g.flds)+len(_g.fns)) |
| for _, f := range *_g.flds { |
| columns = append(columns, selector.C(f)) |
| } |
| columns = append(columns, aggregation...) |
| selector.Select(columns...) |
| } |
| selector.GroupBy(selector.Columns(*_g.flds...)...) |
| if err := selector.Err(); err != nil { |
| return err |
| } |
| rows := &sql.Rows{} |
| query, args := selector.Query() |
| if err := _g.build.driver.Query(ctx, query, args, rows); err != nil { |
| return err |
| } |
| defer rows.Close() |
| return sql.ScanSlice(rows, v) |
| } |
|
|
| |
| type Example2Select struct { |
| *Example2Query |
| selector |
| } |
|
|
| |
| func (_s *Example2Select) Aggregate(fns ...AggregateFunc) *Example2Select { |
| _s.fns = append(_s.fns, fns...) |
| return _s |
| } |
|
|
| |
| func (_s *Example2Select) Scan(ctx context.Context, v any) error { |
| ctx = setContextOp(ctx, _s.ctx, ent.OpQuerySelect) |
| if err := _s.prepareQuery(ctx); err != nil { |
| return err |
| } |
| return scanWithInterceptors[*Example2Query, *Example2Select](ctx, _s.Example2Query, _s, _s.inters, v) |
| } |
|
|
| func (_s *Example2Select) sqlScan(ctx context.Context, root *Example2Query, v any) error { |
| selector := root.sqlQuery(ctx) |
| aggregation := make([]string, 0, len(_s.fns)) |
| for _, fn := range _s.fns { |
| aggregation = append(aggregation, fn(selector)) |
| } |
| switch n := len(*_s.selector.flds); { |
| case n == 0 && len(aggregation) > 0: |
| selector.Select(aggregation...) |
| case n != 0 && len(aggregation) > 0: |
| selector.AppendSelect(aggregation...) |
| } |
| rows := &sql.Rows{} |
| query, args := selector.Query() |
| if err := _s.driver.Query(ctx, query, args, rows); err != nil { |
| return err |
| } |
| defer rows.Close() |
| return sql.ScanSlice(rows, v) |
| } |
|
|