| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648 |
- // Code generated by ent, DO NOT EDIT.
- package ent
- import (
- "context"
- "database/sql/driver"
- "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/Wei-Shaw/sub2api/ent/announcementread"
- "github.com/Wei-Shaw/sub2api/ent/apikey"
- "github.com/Wei-Shaw/sub2api/ent/authidentity"
- "github.com/Wei-Shaw/sub2api/ent/group"
- "github.com/Wei-Shaw/sub2api/ent/paymentorder"
- "github.com/Wei-Shaw/sub2api/ent/pendingauthsession"
- "github.com/Wei-Shaw/sub2api/ent/predicate"
- "github.com/Wei-Shaw/sub2api/ent/promocodeusage"
- "github.com/Wei-Shaw/sub2api/ent/redeemcode"
- "github.com/Wei-Shaw/sub2api/ent/usagelog"
- "github.com/Wei-Shaw/sub2api/ent/user"
- "github.com/Wei-Shaw/sub2api/ent/userallowedgroup"
- "github.com/Wei-Shaw/sub2api/ent/userattributevalue"
- "github.com/Wei-Shaw/sub2api/ent/userplatformquota"
- "github.com/Wei-Shaw/sub2api/ent/usersubscription"
- )
- // UserQuery is the builder for querying User entities.
- type UserQuery struct {
- config
- ctx *QueryContext
- order []user.OrderOption
- inters []Interceptor
- predicates []predicate.User
- withAPIKeys *APIKeyQuery
- withRedeemCodes *RedeemCodeQuery
- withSubscriptions *UserSubscriptionQuery
- withAssignedSubscriptions *UserSubscriptionQuery
- withAnnouncementReads *AnnouncementReadQuery
- withAllowedGroups *GroupQuery
- withUsageLogs *UsageLogQuery
- withAttributeValues *UserAttributeValueQuery
- withPromoCodeUsages *PromoCodeUsageQuery
- withPaymentOrders *PaymentOrderQuery
- withAuthIdentities *AuthIdentityQuery
- withPendingAuthSessions *PendingAuthSessionQuery
- withPlatformQuotas *UserPlatformQuotaQuery
- withUserAllowedGroups *UserAllowedGroupQuery
- modifiers []func(*sql.Selector)
- // intermediate query (i.e. traversal path).
- sql *sql.Selector
- path func(context.Context) (*sql.Selector, error)
- }
- // Where adds a new predicate for the UserQuery builder.
- func (_q *UserQuery) Where(ps ...predicate.User) *UserQuery {
- _q.predicates = append(_q.predicates, ps...)
- return _q
- }
- // Limit the number of records to be returned by this query.
- func (_q *UserQuery) Limit(limit int) *UserQuery {
- _q.ctx.Limit = &limit
- return _q
- }
- // Offset to start from.
- func (_q *UserQuery) Offset(offset int) *UserQuery {
- _q.ctx.Offset = &offset
- return _q
- }
- // Unique configures the query builder to filter duplicate records on query.
- // By default, unique is set to true, and can be disabled using this method.
- func (_q *UserQuery) Unique(unique bool) *UserQuery {
- _q.ctx.Unique = &unique
- return _q
- }
- // Order specifies how the records should be ordered.
- func (_q *UserQuery) Order(o ...user.OrderOption) *UserQuery {
- _q.order = append(_q.order, o...)
- return _q
- }
- // QueryAPIKeys chains the current query on the "api_keys" edge.
- func (_q *UserQuery) QueryAPIKeys() *APIKeyQuery {
- query := (&APIKeyClient{config: _q.config}).Query()
- query.path = func(ctx context.Context) (fromU *sql.Selector, err error) {
- if err := _q.prepareQuery(ctx); err != nil {
- return nil, err
- }
- selector := _q.sqlQuery(ctx)
- if err := selector.Err(); err != nil {
- return nil, err
- }
- step := sqlgraph.NewStep(
- sqlgraph.From(user.Table, user.FieldID, selector),
- sqlgraph.To(apikey.Table, apikey.FieldID),
- sqlgraph.Edge(sqlgraph.O2M, false, user.APIKeysTable, user.APIKeysColumn),
- )
- fromU = sqlgraph.SetNeighbors(_q.driver.Dialect(), step)
- return fromU, nil
- }
- return query
- }
- // QueryRedeemCodes chains the current query on the "redeem_codes" edge.
- func (_q *UserQuery) QueryRedeemCodes() *RedeemCodeQuery {
- query := (&RedeemCodeClient{config: _q.config}).Query()
- query.path = func(ctx context.Context) (fromU *sql.Selector, err error) {
- if err := _q.prepareQuery(ctx); err != nil {
- return nil, err
- }
- selector := _q.sqlQuery(ctx)
- if err := selector.Err(); err != nil {
- return nil, err
- }
- step := sqlgraph.NewStep(
- sqlgraph.From(user.Table, user.FieldID, selector),
- sqlgraph.To(redeemcode.Table, redeemcode.FieldID),
- sqlgraph.Edge(sqlgraph.O2M, false, user.RedeemCodesTable, user.RedeemCodesColumn),
- )
- fromU = sqlgraph.SetNeighbors(_q.driver.Dialect(), step)
- return fromU, nil
- }
- return query
- }
- // QuerySubscriptions chains the current query on the "subscriptions" edge.
- func (_q *UserQuery) QuerySubscriptions() *UserSubscriptionQuery {
- query := (&UserSubscriptionClient{config: _q.config}).Query()
- query.path = func(ctx context.Context) (fromU *sql.Selector, err error) {
- if err := _q.prepareQuery(ctx); err != nil {
- return nil, err
- }
- selector := _q.sqlQuery(ctx)
- if err := selector.Err(); err != nil {
- return nil, err
- }
- step := sqlgraph.NewStep(
- sqlgraph.From(user.Table, user.FieldID, selector),
- sqlgraph.To(usersubscription.Table, usersubscription.FieldID),
- sqlgraph.Edge(sqlgraph.O2M, false, user.SubscriptionsTable, user.SubscriptionsColumn),
- )
- fromU = sqlgraph.SetNeighbors(_q.driver.Dialect(), step)
- return fromU, nil
- }
- return query
- }
- // QueryAssignedSubscriptions chains the current query on the "assigned_subscriptions" edge.
- func (_q *UserQuery) QueryAssignedSubscriptions() *UserSubscriptionQuery {
- query := (&UserSubscriptionClient{config: _q.config}).Query()
- query.path = func(ctx context.Context) (fromU *sql.Selector, err error) {
- if err := _q.prepareQuery(ctx); err != nil {
- return nil, err
- }
- selector := _q.sqlQuery(ctx)
- if err := selector.Err(); err != nil {
- return nil, err
- }
- step := sqlgraph.NewStep(
- sqlgraph.From(user.Table, user.FieldID, selector),
- sqlgraph.To(usersubscription.Table, usersubscription.FieldID),
- sqlgraph.Edge(sqlgraph.O2M, false, user.AssignedSubscriptionsTable, user.AssignedSubscriptionsColumn),
- )
- fromU = sqlgraph.SetNeighbors(_q.driver.Dialect(), step)
- return fromU, nil
- }
- return query
- }
- // QueryAnnouncementReads chains the current query on the "announcement_reads" edge.
- func (_q *UserQuery) QueryAnnouncementReads() *AnnouncementReadQuery {
- query := (&AnnouncementReadClient{config: _q.config}).Query()
- query.path = func(ctx context.Context) (fromU *sql.Selector, err error) {
- if err := _q.prepareQuery(ctx); err != nil {
- return nil, err
- }
- selector := _q.sqlQuery(ctx)
- if err := selector.Err(); err != nil {
- return nil, err
- }
- step := sqlgraph.NewStep(
- sqlgraph.From(user.Table, user.FieldID, selector),
- sqlgraph.To(announcementread.Table, announcementread.FieldID),
- sqlgraph.Edge(sqlgraph.O2M, false, user.AnnouncementReadsTable, user.AnnouncementReadsColumn),
- )
- fromU = sqlgraph.SetNeighbors(_q.driver.Dialect(), step)
- return fromU, nil
- }
- return query
- }
- // QueryAllowedGroups chains the current query on the "allowed_groups" edge.
- func (_q *UserQuery) QueryAllowedGroups() *GroupQuery {
- query := (&GroupClient{config: _q.config}).Query()
- query.path = func(ctx context.Context) (fromU *sql.Selector, err error) {
- if err := _q.prepareQuery(ctx); err != nil {
- return nil, err
- }
- selector := _q.sqlQuery(ctx)
- if err := selector.Err(); err != nil {
- return nil, err
- }
- step := sqlgraph.NewStep(
- sqlgraph.From(user.Table, user.FieldID, selector),
- sqlgraph.To(group.Table, group.FieldID),
- sqlgraph.Edge(sqlgraph.M2M, false, user.AllowedGroupsTable, user.AllowedGroupsPrimaryKey...),
- )
- fromU = sqlgraph.SetNeighbors(_q.driver.Dialect(), step)
- return fromU, nil
- }
- return query
- }
- // QueryUsageLogs chains the current query on the "usage_logs" edge.
- func (_q *UserQuery) QueryUsageLogs() *UsageLogQuery {
- query := (&UsageLogClient{config: _q.config}).Query()
- query.path = func(ctx context.Context) (fromU *sql.Selector, err error) {
- if err := _q.prepareQuery(ctx); err != nil {
- return nil, err
- }
- selector := _q.sqlQuery(ctx)
- if err := selector.Err(); err != nil {
- return nil, err
- }
- step := sqlgraph.NewStep(
- sqlgraph.From(user.Table, user.FieldID, selector),
- sqlgraph.To(usagelog.Table, usagelog.FieldID),
- sqlgraph.Edge(sqlgraph.O2M, false, user.UsageLogsTable, user.UsageLogsColumn),
- )
- fromU = sqlgraph.SetNeighbors(_q.driver.Dialect(), step)
- return fromU, nil
- }
- return query
- }
- // QueryAttributeValues chains the current query on the "attribute_values" edge.
- func (_q *UserQuery) QueryAttributeValues() *UserAttributeValueQuery {
- query := (&UserAttributeValueClient{config: _q.config}).Query()
- query.path = func(ctx context.Context) (fromU *sql.Selector, err error) {
- if err := _q.prepareQuery(ctx); err != nil {
- return nil, err
- }
- selector := _q.sqlQuery(ctx)
- if err := selector.Err(); err != nil {
- return nil, err
- }
- step := sqlgraph.NewStep(
- sqlgraph.From(user.Table, user.FieldID, selector),
- sqlgraph.To(userattributevalue.Table, userattributevalue.FieldID),
- sqlgraph.Edge(sqlgraph.O2M, false, user.AttributeValuesTable, user.AttributeValuesColumn),
- )
- fromU = sqlgraph.SetNeighbors(_q.driver.Dialect(), step)
- return fromU, nil
- }
- return query
- }
- // QueryPromoCodeUsages chains the current query on the "promo_code_usages" edge.
- func (_q *UserQuery) QueryPromoCodeUsages() *PromoCodeUsageQuery {
- query := (&PromoCodeUsageClient{config: _q.config}).Query()
- query.path = func(ctx context.Context) (fromU *sql.Selector, err error) {
- if err := _q.prepareQuery(ctx); err != nil {
- return nil, err
- }
- selector := _q.sqlQuery(ctx)
- if err := selector.Err(); err != nil {
- return nil, err
- }
- step := sqlgraph.NewStep(
- sqlgraph.From(user.Table, user.FieldID, selector),
- sqlgraph.To(promocodeusage.Table, promocodeusage.FieldID),
- sqlgraph.Edge(sqlgraph.O2M, false, user.PromoCodeUsagesTable, user.PromoCodeUsagesColumn),
- )
- fromU = sqlgraph.SetNeighbors(_q.driver.Dialect(), step)
- return fromU, nil
- }
- return query
- }
- // QueryPaymentOrders chains the current query on the "payment_orders" edge.
- func (_q *UserQuery) QueryPaymentOrders() *PaymentOrderQuery {
- query := (&PaymentOrderClient{config: _q.config}).Query()
- query.path = func(ctx context.Context) (fromU *sql.Selector, err error) {
- if err := _q.prepareQuery(ctx); err != nil {
- return nil, err
- }
- selector := _q.sqlQuery(ctx)
- if err := selector.Err(); err != nil {
- return nil, err
- }
- step := sqlgraph.NewStep(
- sqlgraph.From(user.Table, user.FieldID, selector),
- sqlgraph.To(paymentorder.Table, paymentorder.FieldID),
- sqlgraph.Edge(sqlgraph.O2M, false, user.PaymentOrdersTable, user.PaymentOrdersColumn),
- )
- fromU = sqlgraph.SetNeighbors(_q.driver.Dialect(), step)
- return fromU, nil
- }
- return query
- }
- // QueryAuthIdentities chains the current query on the "auth_identities" edge.
- func (_q *UserQuery) QueryAuthIdentities() *AuthIdentityQuery {
- query := (&AuthIdentityClient{config: _q.config}).Query()
- query.path = func(ctx context.Context) (fromU *sql.Selector, err error) {
- if err := _q.prepareQuery(ctx); err != nil {
- return nil, err
- }
- selector := _q.sqlQuery(ctx)
- if err := selector.Err(); err != nil {
- return nil, err
- }
- step := sqlgraph.NewStep(
- sqlgraph.From(user.Table, user.FieldID, selector),
- sqlgraph.To(authidentity.Table, authidentity.FieldID),
- sqlgraph.Edge(sqlgraph.O2M, false, user.AuthIdentitiesTable, user.AuthIdentitiesColumn),
- )
- fromU = sqlgraph.SetNeighbors(_q.driver.Dialect(), step)
- return fromU, nil
- }
- return query
- }
- // QueryPendingAuthSessions chains the current query on the "pending_auth_sessions" edge.
- func (_q *UserQuery) QueryPendingAuthSessions() *PendingAuthSessionQuery {
- query := (&PendingAuthSessionClient{config: _q.config}).Query()
- query.path = func(ctx context.Context) (fromU *sql.Selector, err error) {
- if err := _q.prepareQuery(ctx); err != nil {
- return nil, err
- }
- selector := _q.sqlQuery(ctx)
- if err := selector.Err(); err != nil {
- return nil, err
- }
- step := sqlgraph.NewStep(
- sqlgraph.From(user.Table, user.FieldID, selector),
- sqlgraph.To(pendingauthsession.Table, pendingauthsession.FieldID),
- sqlgraph.Edge(sqlgraph.O2M, false, user.PendingAuthSessionsTable, user.PendingAuthSessionsColumn),
- )
- fromU = sqlgraph.SetNeighbors(_q.driver.Dialect(), step)
- return fromU, nil
- }
- return query
- }
- // QueryPlatformQuotas chains the current query on the "platform_quotas" edge.
- func (_q *UserQuery) QueryPlatformQuotas() *UserPlatformQuotaQuery {
- query := (&UserPlatformQuotaClient{config: _q.config}).Query()
- query.path = func(ctx context.Context) (fromU *sql.Selector, err error) {
- if err := _q.prepareQuery(ctx); err != nil {
- return nil, err
- }
- selector := _q.sqlQuery(ctx)
- if err := selector.Err(); err != nil {
- return nil, err
- }
- step := sqlgraph.NewStep(
- sqlgraph.From(user.Table, user.FieldID, selector),
- sqlgraph.To(userplatformquota.Table, userplatformquota.FieldID),
- sqlgraph.Edge(sqlgraph.O2M, false, user.PlatformQuotasTable, user.PlatformQuotasColumn),
- )
- fromU = sqlgraph.SetNeighbors(_q.driver.Dialect(), step)
- return fromU, nil
- }
- return query
- }
- // QueryUserAllowedGroups chains the current query on the "user_allowed_groups" edge.
- func (_q *UserQuery) QueryUserAllowedGroups() *UserAllowedGroupQuery {
- query := (&UserAllowedGroupClient{config: _q.config}).Query()
- query.path = func(ctx context.Context) (fromU *sql.Selector, err error) {
- if err := _q.prepareQuery(ctx); err != nil {
- return nil, err
- }
- selector := _q.sqlQuery(ctx)
- if err := selector.Err(); err != nil {
- return nil, err
- }
- step := sqlgraph.NewStep(
- sqlgraph.From(user.Table, user.FieldID, selector),
- sqlgraph.To(userallowedgroup.Table, userallowedgroup.UserColumn),
- sqlgraph.Edge(sqlgraph.O2M, true, user.UserAllowedGroupsTable, user.UserAllowedGroupsColumn),
- )
- fromU = sqlgraph.SetNeighbors(_q.driver.Dialect(), step)
- return fromU, nil
- }
- return query
- }
- // First returns the first User entity from the query.
- // Returns a *NotFoundError when no User was found.
- func (_q *UserQuery) First(ctx context.Context) (*User, 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{user.Label}
- }
- return nodes[0], nil
- }
- // FirstX is like First, but panics if an error occurs.
- func (_q *UserQuery) FirstX(ctx context.Context) *User {
- node, err := _q.First(ctx)
- if err != nil && !IsNotFound(err) {
- panic(err)
- }
- return node
- }
- // FirstID returns the first User ID from the query.
- // Returns a *NotFoundError when no User ID was found.
- func (_q *UserQuery) FirstID(ctx context.Context) (id int64, err error) {
- var ids []int64
- if ids, err = _q.Limit(1).IDs(setContextOp(ctx, _q.ctx, ent.OpQueryFirstID)); err != nil {
- return
- }
- if len(ids) == 0 {
- err = &NotFoundError{user.Label}
- return
- }
- return ids[0], nil
- }
- // FirstIDX is like FirstID, but panics if an error occurs.
- func (_q *UserQuery) FirstIDX(ctx context.Context) int64 {
- id, err := _q.FirstID(ctx)
- if err != nil && !IsNotFound(err) {
- panic(err)
- }
- return id
- }
- // Only returns a single User entity found by the query, ensuring it only returns one.
- // Returns a *NotSingularError when more than one User entity is found.
- // Returns a *NotFoundError when no User entities are found.
- func (_q *UserQuery) Only(ctx context.Context) (*User, 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{user.Label}
- default:
- return nil, &NotSingularError{user.Label}
- }
- }
- // OnlyX is like Only, but panics if an error occurs.
- func (_q *UserQuery) OnlyX(ctx context.Context) *User {
- node, err := _q.Only(ctx)
- if err != nil {
- panic(err)
- }
- return node
- }
- // OnlyID is like Only, but returns the only User ID in the query.
- // Returns a *NotSingularError when more than one User ID is found.
- // Returns a *NotFoundError when no entities are found.
- func (_q *UserQuery) OnlyID(ctx context.Context) (id int64, err error) {
- var ids []int64
- 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{user.Label}
- default:
- err = &NotSingularError{user.Label}
- }
- return
- }
- // OnlyIDX is like OnlyID, but panics if an error occurs.
- func (_q *UserQuery) OnlyIDX(ctx context.Context) int64 {
- id, err := _q.OnlyID(ctx)
- if err != nil {
- panic(err)
- }
- return id
- }
- // All executes the query and returns a list of Users.
- func (_q *UserQuery) All(ctx context.Context) ([]*User, error) {
- ctx = setContextOp(ctx, _q.ctx, ent.OpQueryAll)
- if err := _q.prepareQuery(ctx); err != nil {
- return nil, err
- }
- qr := querierAll[[]*User, *UserQuery]()
- return withInterceptors[[]*User](ctx, _q, qr, _q.inters)
- }
- // AllX is like All, but panics if an error occurs.
- func (_q *UserQuery) AllX(ctx context.Context) []*User {
- nodes, err := _q.All(ctx)
- if err != nil {
- panic(err)
- }
- return nodes
- }
- // IDs executes the query and returns a list of User IDs.
- func (_q *UserQuery) IDs(ctx context.Context) (ids []int64, err error) {
- if _q.ctx.Unique == nil && _q.path != nil {
- _q.Unique(true)
- }
- ctx = setContextOp(ctx, _q.ctx, ent.OpQueryIDs)
- if err = _q.Select(user.FieldID).Scan(ctx, &ids); err != nil {
- return nil, err
- }
- return ids, nil
- }
- // IDsX is like IDs, but panics if an error occurs.
- func (_q *UserQuery) IDsX(ctx context.Context) []int64 {
- ids, err := _q.IDs(ctx)
- if err != nil {
- panic(err)
- }
- return ids
- }
- // Count returns the count of the given query.
- func (_q *UserQuery) 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[*UserQuery](), _q.inters)
- }
- // CountX is like Count, but panics if an error occurs.
- func (_q *UserQuery) CountX(ctx context.Context) int {
- count, err := _q.Count(ctx)
- if err != nil {
- panic(err)
- }
- return count
- }
- // Exist returns true if the query has elements in the graph.
- func (_q *UserQuery) 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("ent: check existence: %w", err)
- default:
- return true, nil
- }
- }
- // ExistX is like Exist, but panics if an error occurs.
- func (_q *UserQuery) ExistX(ctx context.Context) bool {
- exist, err := _q.Exist(ctx)
- if err != nil {
- panic(err)
- }
- return exist
- }
- // Clone returns a duplicate of the UserQuery builder, including all associated steps. It can be
- // used to prepare common query builders and use them differently after the clone is made.
- func (_q *UserQuery) Clone() *UserQuery {
- if _q == nil {
- return nil
- }
- return &UserQuery{
- config: _q.config,
- ctx: _q.ctx.Clone(),
- order: append([]user.OrderOption{}, _q.order...),
- inters: append([]Interceptor{}, _q.inters...),
- predicates: append([]predicate.User{}, _q.predicates...),
- withAPIKeys: _q.withAPIKeys.Clone(),
- withRedeemCodes: _q.withRedeemCodes.Clone(),
- withSubscriptions: _q.withSubscriptions.Clone(),
- withAssignedSubscriptions: _q.withAssignedSubscriptions.Clone(),
- withAnnouncementReads: _q.withAnnouncementReads.Clone(),
- withAllowedGroups: _q.withAllowedGroups.Clone(),
- withUsageLogs: _q.withUsageLogs.Clone(),
- withAttributeValues: _q.withAttributeValues.Clone(),
- withPromoCodeUsages: _q.withPromoCodeUsages.Clone(),
- withPaymentOrders: _q.withPaymentOrders.Clone(),
- withAuthIdentities: _q.withAuthIdentities.Clone(),
- withPendingAuthSessions: _q.withPendingAuthSessions.Clone(),
- withPlatformQuotas: _q.withPlatformQuotas.Clone(),
- withUserAllowedGroups: _q.withUserAllowedGroups.Clone(),
- // clone intermediate query.
- sql: _q.sql.Clone(),
- path: _q.path,
- }
- }
- // WithAPIKeys tells the query-builder to eager-load the nodes that are connected to
- // the "api_keys" edge. The optional arguments are used to configure the query builder of the edge.
- func (_q *UserQuery) WithAPIKeys(opts ...func(*APIKeyQuery)) *UserQuery {
- query := (&APIKeyClient{config: _q.config}).Query()
- for _, opt := range opts {
- opt(query)
- }
- _q.withAPIKeys = query
- return _q
- }
- // WithRedeemCodes tells the query-builder to eager-load the nodes that are connected to
- // the "redeem_codes" edge. The optional arguments are used to configure the query builder of the edge.
- func (_q *UserQuery) WithRedeemCodes(opts ...func(*RedeemCodeQuery)) *UserQuery {
- query := (&RedeemCodeClient{config: _q.config}).Query()
- for _, opt := range opts {
- opt(query)
- }
- _q.withRedeemCodes = query
- return _q
- }
- // WithSubscriptions tells the query-builder to eager-load the nodes that are connected to
- // the "subscriptions" edge. The optional arguments are used to configure the query builder of the edge.
- func (_q *UserQuery) WithSubscriptions(opts ...func(*UserSubscriptionQuery)) *UserQuery {
- query := (&UserSubscriptionClient{config: _q.config}).Query()
- for _, opt := range opts {
- opt(query)
- }
- _q.withSubscriptions = query
- return _q
- }
- // WithAssignedSubscriptions tells the query-builder to eager-load the nodes that are connected to
- // the "assigned_subscriptions" edge. The optional arguments are used to configure the query builder of the edge.
- func (_q *UserQuery) WithAssignedSubscriptions(opts ...func(*UserSubscriptionQuery)) *UserQuery {
- query := (&UserSubscriptionClient{config: _q.config}).Query()
- for _, opt := range opts {
- opt(query)
- }
- _q.withAssignedSubscriptions = query
- return _q
- }
- // WithAnnouncementReads tells the query-builder to eager-load the nodes that are connected to
- // the "announcement_reads" edge. The optional arguments are used to configure the query builder of the edge.
- func (_q *UserQuery) WithAnnouncementReads(opts ...func(*AnnouncementReadQuery)) *UserQuery {
- query := (&AnnouncementReadClient{config: _q.config}).Query()
- for _, opt := range opts {
- opt(query)
- }
- _q.withAnnouncementReads = query
- return _q
- }
- // WithAllowedGroups tells the query-builder to eager-load the nodes that are connected to
- // the "allowed_groups" edge. The optional arguments are used to configure the query builder of the edge.
- func (_q *UserQuery) WithAllowedGroups(opts ...func(*GroupQuery)) *UserQuery {
- query := (&GroupClient{config: _q.config}).Query()
- for _, opt := range opts {
- opt(query)
- }
- _q.withAllowedGroups = query
- return _q
- }
- // WithUsageLogs tells the query-builder to eager-load the nodes that are connected to
- // the "usage_logs" edge. The optional arguments are used to configure the query builder of the edge.
- func (_q *UserQuery) WithUsageLogs(opts ...func(*UsageLogQuery)) *UserQuery {
- query := (&UsageLogClient{config: _q.config}).Query()
- for _, opt := range opts {
- opt(query)
- }
- _q.withUsageLogs = query
- return _q
- }
- // WithAttributeValues tells the query-builder to eager-load the nodes that are connected to
- // the "attribute_values" edge. The optional arguments are used to configure the query builder of the edge.
- func (_q *UserQuery) WithAttributeValues(opts ...func(*UserAttributeValueQuery)) *UserQuery {
- query := (&UserAttributeValueClient{config: _q.config}).Query()
- for _, opt := range opts {
- opt(query)
- }
- _q.withAttributeValues = query
- return _q
- }
- // WithPromoCodeUsages tells the query-builder to eager-load the nodes that are connected to
- // the "promo_code_usages" edge. The optional arguments are used to configure the query builder of the edge.
- func (_q *UserQuery) WithPromoCodeUsages(opts ...func(*PromoCodeUsageQuery)) *UserQuery {
- query := (&PromoCodeUsageClient{config: _q.config}).Query()
- for _, opt := range opts {
- opt(query)
- }
- _q.withPromoCodeUsages = query
- return _q
- }
- // WithPaymentOrders tells the query-builder to eager-load the nodes that are connected to
- // the "payment_orders" edge. The optional arguments are used to configure the query builder of the edge.
- func (_q *UserQuery) WithPaymentOrders(opts ...func(*PaymentOrderQuery)) *UserQuery {
- query := (&PaymentOrderClient{config: _q.config}).Query()
- for _, opt := range opts {
- opt(query)
- }
- _q.withPaymentOrders = query
- return _q
- }
- // WithAuthIdentities tells the query-builder to eager-load the nodes that are connected to
- // the "auth_identities" edge. The optional arguments are used to configure the query builder of the edge.
- func (_q *UserQuery) WithAuthIdentities(opts ...func(*AuthIdentityQuery)) *UserQuery {
- query := (&AuthIdentityClient{config: _q.config}).Query()
- for _, opt := range opts {
- opt(query)
- }
- _q.withAuthIdentities = query
- return _q
- }
- // WithPendingAuthSessions tells the query-builder to eager-load the nodes that are connected to
- // the "pending_auth_sessions" edge. The optional arguments are used to configure the query builder of the edge.
- func (_q *UserQuery) WithPendingAuthSessions(opts ...func(*PendingAuthSessionQuery)) *UserQuery {
- query := (&PendingAuthSessionClient{config: _q.config}).Query()
- for _, opt := range opts {
- opt(query)
- }
- _q.withPendingAuthSessions = query
- return _q
- }
- // WithPlatformQuotas tells the query-builder to eager-load the nodes that are connected to
- // the "platform_quotas" edge. The optional arguments are used to configure the query builder of the edge.
- func (_q *UserQuery) WithPlatformQuotas(opts ...func(*UserPlatformQuotaQuery)) *UserQuery {
- query := (&UserPlatformQuotaClient{config: _q.config}).Query()
- for _, opt := range opts {
- opt(query)
- }
- _q.withPlatformQuotas = query
- return _q
- }
- // WithUserAllowedGroups tells the query-builder to eager-load the nodes that are connected to
- // the "user_allowed_groups" edge. The optional arguments are used to configure the query builder of the edge.
- func (_q *UserQuery) WithUserAllowedGroups(opts ...func(*UserAllowedGroupQuery)) *UserQuery {
- query := (&UserAllowedGroupClient{config: _q.config}).Query()
- for _, opt := range opts {
- opt(query)
- }
- _q.withUserAllowedGroups = query
- return _q
- }
- // GroupBy is used to group vertices by one or more fields/columns.
- // It is often used with aggregate functions, like: count, max, mean, min, sum.
- //
- // Example:
- //
- // var v []struct {
- // CreatedAt time.Time `json:"created_at,omitempty"`
- // Count int `json:"count,omitempty"`
- // }
- //
- // client.User.Query().
- // GroupBy(user.FieldCreatedAt).
- // Aggregate(ent.Count()).
- // Scan(ctx, &v)
- func (_q *UserQuery) GroupBy(field string, fields ...string) *UserGroupBy {
- _q.ctx.Fields = append([]string{field}, fields...)
- grbuild := &UserGroupBy{build: _q}
- grbuild.flds = &_q.ctx.Fields
- grbuild.label = user.Label
- grbuild.scan = grbuild.Scan
- return grbuild
- }
- // Select allows the selection one or more fields/columns for the given query,
- // instead of selecting all fields in the entity.
- //
- // Example:
- //
- // var v []struct {
- // CreatedAt time.Time `json:"created_at,omitempty"`
- // }
- //
- // client.User.Query().
- // Select(user.FieldCreatedAt).
- // Scan(ctx, &v)
- func (_q *UserQuery) Select(fields ...string) *UserSelect {
- _q.ctx.Fields = append(_q.ctx.Fields, fields...)
- sbuild := &UserSelect{UserQuery: _q}
- sbuild.label = user.Label
- sbuild.flds, sbuild.scan = &_q.ctx.Fields, sbuild.Scan
- return sbuild
- }
- // Aggregate returns a UserSelect configured with the given aggregations.
- func (_q *UserQuery) Aggregate(fns ...AggregateFunc) *UserSelect {
- return _q.Select().Aggregate(fns...)
- }
- func (_q *UserQuery) prepareQuery(ctx context.Context) error {
- for _, inter := range _q.inters {
- if inter == nil {
- return fmt.Errorf("ent: uninitialized interceptor (forgotten import ent/runtime?)")
- }
- if trv, ok := inter.(Traverser); ok {
- if err := trv.Traverse(ctx, _q); err != nil {
- return err
- }
- }
- }
- for _, f := range _q.ctx.Fields {
- if !user.ValidColumn(f) {
- return &ValidationError{Name: f, err: fmt.Errorf("ent: 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 *UserQuery) sqlAll(ctx context.Context, hooks ...queryHook) ([]*User, error) {
- var (
- nodes = []*User{}
- _spec = _q.querySpec()
- loadedTypes = [14]bool{
- _q.withAPIKeys != nil,
- _q.withRedeemCodes != nil,
- _q.withSubscriptions != nil,
- _q.withAssignedSubscriptions != nil,
- _q.withAnnouncementReads != nil,
- _q.withAllowedGroups != nil,
- _q.withUsageLogs != nil,
- _q.withAttributeValues != nil,
- _q.withPromoCodeUsages != nil,
- _q.withPaymentOrders != nil,
- _q.withAuthIdentities != nil,
- _q.withPendingAuthSessions != nil,
- _q.withPlatformQuotas != nil,
- _q.withUserAllowedGroups != nil,
- }
- )
- _spec.ScanValues = func(columns []string) ([]any, error) {
- return (*User).scanValues(nil, columns)
- }
- _spec.Assign = func(columns []string, values []any) error {
- node := &User{config: _q.config}
- nodes = append(nodes, node)
- node.Edges.loadedTypes = loadedTypes
- 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
- }
- if query := _q.withAPIKeys; query != nil {
- if err := _q.loadAPIKeys(ctx, query, nodes,
- func(n *User) { n.Edges.APIKeys = []*APIKey{} },
- func(n *User, e *APIKey) { n.Edges.APIKeys = append(n.Edges.APIKeys, e) }); err != nil {
- return nil, err
- }
- }
- if query := _q.withRedeemCodes; query != nil {
- if err := _q.loadRedeemCodes(ctx, query, nodes,
- func(n *User) { n.Edges.RedeemCodes = []*RedeemCode{} },
- func(n *User, e *RedeemCode) { n.Edges.RedeemCodes = append(n.Edges.RedeemCodes, e) }); err != nil {
- return nil, err
- }
- }
- if query := _q.withSubscriptions; query != nil {
- if err := _q.loadSubscriptions(ctx, query, nodes,
- func(n *User) { n.Edges.Subscriptions = []*UserSubscription{} },
- func(n *User, e *UserSubscription) { n.Edges.Subscriptions = append(n.Edges.Subscriptions, e) }); err != nil {
- return nil, err
- }
- }
- if query := _q.withAssignedSubscriptions; query != nil {
- if err := _q.loadAssignedSubscriptions(ctx, query, nodes,
- func(n *User) { n.Edges.AssignedSubscriptions = []*UserSubscription{} },
- func(n *User, e *UserSubscription) {
- n.Edges.AssignedSubscriptions = append(n.Edges.AssignedSubscriptions, e)
- }); err != nil {
- return nil, err
- }
- }
- if query := _q.withAnnouncementReads; query != nil {
- if err := _q.loadAnnouncementReads(ctx, query, nodes,
- func(n *User) { n.Edges.AnnouncementReads = []*AnnouncementRead{} },
- func(n *User, e *AnnouncementRead) { n.Edges.AnnouncementReads = append(n.Edges.AnnouncementReads, e) }); err != nil {
- return nil, err
- }
- }
- if query := _q.withAllowedGroups; query != nil {
- if err := _q.loadAllowedGroups(ctx, query, nodes,
- func(n *User) { n.Edges.AllowedGroups = []*Group{} },
- func(n *User, e *Group) { n.Edges.AllowedGroups = append(n.Edges.AllowedGroups, e) }); err != nil {
- return nil, err
- }
- }
- if query := _q.withUsageLogs; query != nil {
- if err := _q.loadUsageLogs(ctx, query, nodes,
- func(n *User) { n.Edges.UsageLogs = []*UsageLog{} },
- func(n *User, e *UsageLog) { n.Edges.UsageLogs = append(n.Edges.UsageLogs, e) }); err != nil {
- return nil, err
- }
- }
- if query := _q.withAttributeValues; query != nil {
- if err := _q.loadAttributeValues(ctx, query, nodes,
- func(n *User) { n.Edges.AttributeValues = []*UserAttributeValue{} },
- func(n *User, e *UserAttributeValue) { n.Edges.AttributeValues = append(n.Edges.AttributeValues, e) }); err != nil {
- return nil, err
- }
- }
- if query := _q.withPromoCodeUsages; query != nil {
- if err := _q.loadPromoCodeUsages(ctx, query, nodes,
- func(n *User) { n.Edges.PromoCodeUsages = []*PromoCodeUsage{} },
- func(n *User, e *PromoCodeUsage) { n.Edges.PromoCodeUsages = append(n.Edges.PromoCodeUsages, e) }); err != nil {
- return nil, err
- }
- }
- if query := _q.withPaymentOrders; query != nil {
- if err := _q.loadPaymentOrders(ctx, query, nodes,
- func(n *User) { n.Edges.PaymentOrders = []*PaymentOrder{} },
- func(n *User, e *PaymentOrder) { n.Edges.PaymentOrders = append(n.Edges.PaymentOrders, e) }); err != nil {
- return nil, err
- }
- }
- if query := _q.withAuthIdentities; query != nil {
- if err := _q.loadAuthIdentities(ctx, query, nodes,
- func(n *User) { n.Edges.AuthIdentities = []*AuthIdentity{} },
- func(n *User, e *AuthIdentity) { n.Edges.AuthIdentities = append(n.Edges.AuthIdentities, e) }); err != nil {
- return nil, err
- }
- }
- if query := _q.withPendingAuthSessions; query != nil {
- if err := _q.loadPendingAuthSessions(ctx, query, nodes,
- func(n *User) { n.Edges.PendingAuthSessions = []*PendingAuthSession{} },
- func(n *User, e *PendingAuthSession) {
- n.Edges.PendingAuthSessions = append(n.Edges.PendingAuthSessions, e)
- }); err != nil {
- return nil, err
- }
- }
- if query := _q.withPlatformQuotas; query != nil {
- if err := _q.loadPlatformQuotas(ctx, query, nodes,
- func(n *User) { n.Edges.PlatformQuotas = []*UserPlatformQuota{} },
- func(n *User, e *UserPlatformQuota) { n.Edges.PlatformQuotas = append(n.Edges.PlatformQuotas, e) }); err != nil {
- return nil, err
- }
- }
- if query := _q.withUserAllowedGroups; query != nil {
- if err := _q.loadUserAllowedGroups(ctx, query, nodes,
- func(n *User) { n.Edges.UserAllowedGroups = []*UserAllowedGroup{} },
- func(n *User, e *UserAllowedGroup) { n.Edges.UserAllowedGroups = append(n.Edges.UserAllowedGroups, e) }); err != nil {
- return nil, err
- }
- }
- return nodes, nil
- }
- func (_q *UserQuery) loadAPIKeys(ctx context.Context, query *APIKeyQuery, nodes []*User, init func(*User), assign func(*User, *APIKey)) error {
- fks := make([]driver.Value, 0, len(nodes))
- nodeids := make(map[int64]*User)
- for i := range nodes {
- fks = append(fks, nodes[i].ID)
- nodeids[nodes[i].ID] = nodes[i]
- if init != nil {
- init(nodes[i])
- }
- }
- if len(query.ctx.Fields) > 0 {
- query.ctx.AppendFieldOnce(apikey.FieldUserID)
- }
- query.Where(predicate.APIKey(func(s *sql.Selector) {
- s.Where(sql.InValues(s.C(user.APIKeysColumn), fks...))
- }))
- neighbors, err := query.All(ctx)
- if err != nil {
- return err
- }
- for _, n := range neighbors {
- fk := n.UserID
- node, ok := nodeids[fk]
- if !ok {
- return fmt.Errorf(`unexpected referenced foreign-key "user_id" returned %v for node %v`, fk, n.ID)
- }
- assign(node, n)
- }
- return nil
- }
- func (_q *UserQuery) loadRedeemCodes(ctx context.Context, query *RedeemCodeQuery, nodes []*User, init func(*User), assign func(*User, *RedeemCode)) error {
- fks := make([]driver.Value, 0, len(nodes))
- nodeids := make(map[int64]*User)
- for i := range nodes {
- fks = append(fks, nodes[i].ID)
- nodeids[nodes[i].ID] = nodes[i]
- if init != nil {
- init(nodes[i])
- }
- }
- if len(query.ctx.Fields) > 0 {
- query.ctx.AppendFieldOnce(redeemcode.FieldUsedBy)
- }
- query.Where(predicate.RedeemCode(func(s *sql.Selector) {
- s.Where(sql.InValues(s.C(user.RedeemCodesColumn), fks...))
- }))
- neighbors, err := query.All(ctx)
- if err != nil {
- return err
- }
- for _, n := range neighbors {
- fk := n.UsedBy
- if fk == nil {
- return fmt.Errorf(`foreign-key "used_by" is nil for node %v`, n.ID)
- }
- node, ok := nodeids[*fk]
- if !ok {
- return fmt.Errorf(`unexpected referenced foreign-key "used_by" returned %v for node %v`, *fk, n.ID)
- }
- assign(node, n)
- }
- return nil
- }
- func (_q *UserQuery) loadSubscriptions(ctx context.Context, query *UserSubscriptionQuery, nodes []*User, init func(*User), assign func(*User, *UserSubscription)) error {
- fks := make([]driver.Value, 0, len(nodes))
- nodeids := make(map[int64]*User)
- for i := range nodes {
- fks = append(fks, nodes[i].ID)
- nodeids[nodes[i].ID] = nodes[i]
- if init != nil {
- init(nodes[i])
- }
- }
- if len(query.ctx.Fields) > 0 {
- query.ctx.AppendFieldOnce(usersubscription.FieldUserID)
- }
- query.Where(predicate.UserSubscription(func(s *sql.Selector) {
- s.Where(sql.InValues(s.C(user.SubscriptionsColumn), fks...))
- }))
- neighbors, err := query.All(ctx)
- if err != nil {
- return err
- }
- for _, n := range neighbors {
- fk := n.UserID
- node, ok := nodeids[fk]
- if !ok {
- return fmt.Errorf(`unexpected referenced foreign-key "user_id" returned %v for node %v`, fk, n.ID)
- }
- assign(node, n)
- }
- return nil
- }
- func (_q *UserQuery) loadAssignedSubscriptions(ctx context.Context, query *UserSubscriptionQuery, nodes []*User, init func(*User), assign func(*User, *UserSubscription)) error {
- fks := make([]driver.Value, 0, len(nodes))
- nodeids := make(map[int64]*User)
- for i := range nodes {
- fks = append(fks, nodes[i].ID)
- nodeids[nodes[i].ID] = nodes[i]
- if init != nil {
- init(nodes[i])
- }
- }
- if len(query.ctx.Fields) > 0 {
- query.ctx.AppendFieldOnce(usersubscription.FieldAssignedBy)
- }
- query.Where(predicate.UserSubscription(func(s *sql.Selector) {
- s.Where(sql.InValues(s.C(user.AssignedSubscriptionsColumn), fks...))
- }))
- neighbors, err := query.All(ctx)
- if err != nil {
- return err
- }
- for _, n := range neighbors {
- fk := n.AssignedBy
- if fk == nil {
- return fmt.Errorf(`foreign-key "assigned_by" is nil for node %v`, n.ID)
- }
- node, ok := nodeids[*fk]
- if !ok {
- return fmt.Errorf(`unexpected referenced foreign-key "assigned_by" returned %v for node %v`, *fk, n.ID)
- }
- assign(node, n)
- }
- return nil
- }
- func (_q *UserQuery) loadAnnouncementReads(ctx context.Context, query *AnnouncementReadQuery, nodes []*User, init func(*User), assign func(*User, *AnnouncementRead)) error {
- fks := make([]driver.Value, 0, len(nodes))
- nodeids := make(map[int64]*User)
- for i := range nodes {
- fks = append(fks, nodes[i].ID)
- nodeids[nodes[i].ID] = nodes[i]
- if init != nil {
- init(nodes[i])
- }
- }
- if len(query.ctx.Fields) > 0 {
- query.ctx.AppendFieldOnce(announcementread.FieldUserID)
- }
- query.Where(predicate.AnnouncementRead(func(s *sql.Selector) {
- s.Where(sql.InValues(s.C(user.AnnouncementReadsColumn), fks...))
- }))
- neighbors, err := query.All(ctx)
- if err != nil {
- return err
- }
- for _, n := range neighbors {
- fk := n.UserID
- node, ok := nodeids[fk]
- if !ok {
- return fmt.Errorf(`unexpected referenced foreign-key "user_id" returned %v for node %v`, fk, n.ID)
- }
- assign(node, n)
- }
- return nil
- }
- func (_q *UserQuery) loadAllowedGroups(ctx context.Context, query *GroupQuery, nodes []*User, init func(*User), assign func(*User, *Group)) error {
- edgeIDs := make([]driver.Value, len(nodes))
- byID := make(map[int64]*User)
- nids := make(map[int64]map[*User]struct{})
- for i, node := range nodes {
- edgeIDs[i] = node.ID
- byID[node.ID] = node
- if init != nil {
- init(node)
- }
- }
- query.Where(func(s *sql.Selector) {
- joinT := sql.Table(user.AllowedGroupsTable)
- s.Join(joinT).On(s.C(group.FieldID), joinT.C(user.AllowedGroupsPrimaryKey[1]))
- s.Where(sql.InValues(joinT.C(user.AllowedGroupsPrimaryKey[0]), edgeIDs...))
- columns := s.SelectedColumns()
- s.Select(joinT.C(user.AllowedGroupsPrimaryKey[0]))
- s.AppendSelect(columns...)
- s.SetDistinct(false)
- })
- if err := query.prepareQuery(ctx); err != nil {
- return err
- }
- qr := QuerierFunc(func(ctx context.Context, q Query) (Value, error) {
- return query.sqlAll(ctx, func(_ context.Context, spec *sqlgraph.QuerySpec) {
- assign := spec.Assign
- values := spec.ScanValues
- spec.ScanValues = func(columns []string) ([]any, error) {
- values, err := values(columns[1:])
- if err != nil {
- return nil, err
- }
- return append([]any{new(sql.NullInt64)}, values...), nil
- }
- spec.Assign = func(columns []string, values []any) error {
- outValue := values[0].(*sql.NullInt64).Int64
- inValue := values[1].(*sql.NullInt64).Int64
- if nids[inValue] == nil {
- nids[inValue] = map[*User]struct{}{byID[outValue]: {}}
- return assign(columns[1:], values[1:])
- }
- nids[inValue][byID[outValue]] = struct{}{}
- return nil
- }
- })
- })
- neighbors, err := withInterceptors[[]*Group](ctx, query, qr, query.inters)
- if err != nil {
- return err
- }
- for _, n := range neighbors {
- nodes, ok := nids[n.ID]
- if !ok {
- return fmt.Errorf(`unexpected "allowed_groups" node returned %v`, n.ID)
- }
- for kn := range nodes {
- assign(kn, n)
- }
- }
- return nil
- }
- func (_q *UserQuery) loadUsageLogs(ctx context.Context, query *UsageLogQuery, nodes []*User, init func(*User), assign func(*User, *UsageLog)) error {
- fks := make([]driver.Value, 0, len(nodes))
- nodeids := make(map[int64]*User)
- for i := range nodes {
- fks = append(fks, nodes[i].ID)
- nodeids[nodes[i].ID] = nodes[i]
- if init != nil {
- init(nodes[i])
- }
- }
- if len(query.ctx.Fields) > 0 {
- query.ctx.AppendFieldOnce(usagelog.FieldUserID)
- }
- query.Where(predicate.UsageLog(func(s *sql.Selector) {
- s.Where(sql.InValues(s.C(user.UsageLogsColumn), fks...))
- }))
- neighbors, err := query.All(ctx)
- if err != nil {
- return err
- }
- for _, n := range neighbors {
- fk := n.UserID
- node, ok := nodeids[fk]
- if !ok {
- return fmt.Errorf(`unexpected referenced foreign-key "user_id" returned %v for node %v`, fk, n.ID)
- }
- assign(node, n)
- }
- return nil
- }
- func (_q *UserQuery) loadAttributeValues(ctx context.Context, query *UserAttributeValueQuery, nodes []*User, init func(*User), assign func(*User, *UserAttributeValue)) error {
- fks := make([]driver.Value, 0, len(nodes))
- nodeids := make(map[int64]*User)
- for i := range nodes {
- fks = append(fks, nodes[i].ID)
- nodeids[nodes[i].ID] = nodes[i]
- if init != nil {
- init(nodes[i])
- }
- }
- if len(query.ctx.Fields) > 0 {
- query.ctx.AppendFieldOnce(userattributevalue.FieldUserID)
- }
- query.Where(predicate.UserAttributeValue(func(s *sql.Selector) {
- s.Where(sql.InValues(s.C(user.AttributeValuesColumn), fks...))
- }))
- neighbors, err := query.All(ctx)
- if err != nil {
- return err
- }
- for _, n := range neighbors {
- fk := n.UserID
- node, ok := nodeids[fk]
- if !ok {
- return fmt.Errorf(`unexpected referenced foreign-key "user_id" returned %v for node %v`, fk, n.ID)
- }
- assign(node, n)
- }
- return nil
- }
- func (_q *UserQuery) loadPromoCodeUsages(ctx context.Context, query *PromoCodeUsageQuery, nodes []*User, init func(*User), assign func(*User, *PromoCodeUsage)) error {
- fks := make([]driver.Value, 0, len(nodes))
- nodeids := make(map[int64]*User)
- for i := range nodes {
- fks = append(fks, nodes[i].ID)
- nodeids[nodes[i].ID] = nodes[i]
- if init != nil {
- init(nodes[i])
- }
- }
- if len(query.ctx.Fields) > 0 {
- query.ctx.AppendFieldOnce(promocodeusage.FieldUserID)
- }
- query.Where(predicate.PromoCodeUsage(func(s *sql.Selector) {
- s.Where(sql.InValues(s.C(user.PromoCodeUsagesColumn), fks...))
- }))
- neighbors, err := query.All(ctx)
- if err != nil {
- return err
- }
- for _, n := range neighbors {
- fk := n.UserID
- node, ok := nodeids[fk]
- if !ok {
- return fmt.Errorf(`unexpected referenced foreign-key "user_id" returned %v for node %v`, fk, n.ID)
- }
- assign(node, n)
- }
- return nil
- }
- func (_q *UserQuery) loadPaymentOrders(ctx context.Context, query *PaymentOrderQuery, nodes []*User, init func(*User), assign func(*User, *PaymentOrder)) error {
- fks := make([]driver.Value, 0, len(nodes))
- nodeids := make(map[int64]*User)
- for i := range nodes {
- fks = append(fks, nodes[i].ID)
- nodeids[nodes[i].ID] = nodes[i]
- if init != nil {
- init(nodes[i])
- }
- }
- if len(query.ctx.Fields) > 0 {
- query.ctx.AppendFieldOnce(paymentorder.FieldUserID)
- }
- query.Where(predicate.PaymentOrder(func(s *sql.Selector) {
- s.Where(sql.InValues(s.C(user.PaymentOrdersColumn), fks...))
- }))
- neighbors, err := query.All(ctx)
- if err != nil {
- return err
- }
- for _, n := range neighbors {
- fk := n.UserID
- node, ok := nodeids[fk]
- if !ok {
- return fmt.Errorf(`unexpected referenced foreign-key "user_id" returned %v for node %v`, fk, n.ID)
- }
- assign(node, n)
- }
- return nil
- }
- func (_q *UserQuery) loadAuthIdentities(ctx context.Context, query *AuthIdentityQuery, nodes []*User, init func(*User), assign func(*User, *AuthIdentity)) error {
- fks := make([]driver.Value, 0, len(nodes))
- nodeids := make(map[int64]*User)
- for i := range nodes {
- fks = append(fks, nodes[i].ID)
- nodeids[nodes[i].ID] = nodes[i]
- if init != nil {
- init(nodes[i])
- }
- }
- if len(query.ctx.Fields) > 0 {
- query.ctx.AppendFieldOnce(authidentity.FieldUserID)
- }
- query.Where(predicate.AuthIdentity(func(s *sql.Selector) {
- s.Where(sql.InValues(s.C(user.AuthIdentitiesColumn), fks...))
- }))
- neighbors, err := query.All(ctx)
- if err != nil {
- return err
- }
- for _, n := range neighbors {
- fk := n.UserID
- node, ok := nodeids[fk]
- if !ok {
- return fmt.Errorf(`unexpected referenced foreign-key "user_id" returned %v for node %v`, fk, n.ID)
- }
- assign(node, n)
- }
- return nil
- }
- func (_q *UserQuery) loadPendingAuthSessions(ctx context.Context, query *PendingAuthSessionQuery, nodes []*User, init func(*User), assign func(*User, *PendingAuthSession)) error {
- fks := make([]driver.Value, 0, len(nodes))
- nodeids := make(map[int64]*User)
- for i := range nodes {
- fks = append(fks, nodes[i].ID)
- nodeids[nodes[i].ID] = nodes[i]
- if init != nil {
- init(nodes[i])
- }
- }
- if len(query.ctx.Fields) > 0 {
- query.ctx.AppendFieldOnce(pendingauthsession.FieldTargetUserID)
- }
- query.Where(predicate.PendingAuthSession(func(s *sql.Selector) {
- s.Where(sql.InValues(s.C(user.PendingAuthSessionsColumn), fks...))
- }))
- neighbors, err := query.All(ctx)
- if err != nil {
- return err
- }
- for _, n := range neighbors {
- fk := n.TargetUserID
- if fk == nil {
- return fmt.Errorf(`foreign-key "target_user_id" is nil for node %v`, n.ID)
- }
- node, ok := nodeids[*fk]
- if !ok {
- return fmt.Errorf(`unexpected referenced foreign-key "target_user_id" returned %v for node %v`, *fk, n.ID)
- }
- assign(node, n)
- }
- return nil
- }
- func (_q *UserQuery) loadPlatformQuotas(ctx context.Context, query *UserPlatformQuotaQuery, nodes []*User, init func(*User), assign func(*User, *UserPlatformQuota)) error {
- fks := make([]driver.Value, 0, len(nodes))
- nodeids := make(map[int64]*User)
- for i := range nodes {
- fks = append(fks, nodes[i].ID)
- nodeids[nodes[i].ID] = nodes[i]
- if init != nil {
- init(nodes[i])
- }
- }
- if len(query.ctx.Fields) > 0 {
- query.ctx.AppendFieldOnce(userplatformquota.FieldUserID)
- }
- query.Where(predicate.UserPlatformQuota(func(s *sql.Selector) {
- s.Where(sql.InValues(s.C(user.PlatformQuotasColumn), fks...))
- }))
- neighbors, err := query.All(ctx)
- if err != nil {
- return err
- }
- for _, n := range neighbors {
- fk := n.UserID
- node, ok := nodeids[fk]
- if !ok {
- return fmt.Errorf(`unexpected referenced foreign-key "user_id" returned %v for node %v`, fk, n.ID)
- }
- assign(node, n)
- }
- return nil
- }
- func (_q *UserQuery) loadUserAllowedGroups(ctx context.Context, query *UserAllowedGroupQuery, nodes []*User, init func(*User), assign func(*User, *UserAllowedGroup)) error {
- fks := make([]driver.Value, 0, len(nodes))
- nodeids := make(map[int64]*User)
- for i := range nodes {
- fks = append(fks, nodes[i].ID)
- nodeids[nodes[i].ID] = nodes[i]
- if init != nil {
- init(nodes[i])
- }
- }
- if len(query.ctx.Fields) > 0 {
- query.ctx.AppendFieldOnce(userallowedgroup.FieldUserID)
- }
- query.Where(predicate.UserAllowedGroup(func(s *sql.Selector) {
- s.Where(sql.InValues(s.C(user.UserAllowedGroupsColumn), fks...))
- }))
- neighbors, err := query.All(ctx)
- if err != nil {
- return err
- }
- for _, n := range neighbors {
- fk := n.UserID
- node, ok := nodeids[fk]
- if !ok {
- return fmt.Errorf(`unexpected referenced foreign-key "user_id" returned %v for node %v`, fk, n)
- }
- assign(node, n)
- }
- return nil
- }
- func (_q *UserQuery) 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 *UserQuery) querySpec() *sqlgraph.QuerySpec {
- _spec := sqlgraph.NewQuerySpec(user.Table, user.Columns, sqlgraph.NewFieldSpec(user.FieldID, field.TypeInt64))
- _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, user.FieldID)
- for i := range fields {
- if fields[i] != user.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 *UserQuery) sqlQuery(ctx context.Context) *sql.Selector {
- builder := sql.Dialect(_q.driver.Dialect())
- t1 := builder.Table(user.Table)
- columns := _q.ctx.Fields
- if len(columns) == 0 {
- columns = user.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 {
- // limit is mandatory for offset clause. We start
- // with default value, and override it below if needed.
- selector.Offset(*offset).Limit(math.MaxInt32)
- }
- if limit := _q.ctx.Limit; limit != nil {
- selector.Limit(*limit)
- }
- return selector
- }
- // ForUpdate locks the selected rows against concurrent updates, and prevent them from being
- // updated, deleted or "selected ... for update" by other sessions, until the transaction is
- // either committed or rolled-back.
- func (_q *UserQuery) ForUpdate(opts ...sql.LockOption) *UserQuery {
- if _q.driver.Dialect() == dialect.Postgres {
- _q.Unique(false)
- }
- _q.modifiers = append(_q.modifiers, func(s *sql.Selector) {
- s.ForUpdate(opts...)
- })
- return _q
- }
- // ForShare behaves similarly to ForUpdate, except that it acquires a shared mode lock
- // on any rows that are read. Other sessions can read the rows, but cannot modify them
- // until your transaction commits.
- func (_q *UserQuery) ForShare(opts ...sql.LockOption) *UserQuery {
- if _q.driver.Dialect() == dialect.Postgres {
- _q.Unique(false)
- }
- _q.modifiers = append(_q.modifiers, func(s *sql.Selector) {
- s.ForShare(opts...)
- })
- return _q
- }
- // UserGroupBy is the group-by builder for User entities.
- type UserGroupBy struct {
- selector
- build *UserQuery
- }
- // Aggregate adds the given aggregation functions to the group-by query.
- func (_g *UserGroupBy) Aggregate(fns ...AggregateFunc) *UserGroupBy {
- _g.fns = append(_g.fns, fns...)
- return _g
- }
- // Scan applies the selector query and scans the result into the given value.
- func (_g *UserGroupBy) 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[*UserQuery, *UserGroupBy](ctx, _g.build, _g, _g.build.inters, v)
- }
- func (_g *UserGroupBy) sqlScan(ctx context.Context, root *UserQuery, 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)
- }
- // UserSelect is the builder for selecting fields of User entities.
- type UserSelect struct {
- *UserQuery
- selector
- }
- // Aggregate adds the given aggregation functions to the selector query.
- func (_s *UserSelect) Aggregate(fns ...AggregateFunc) *UserSelect {
- _s.fns = append(_s.fns, fns...)
- return _s
- }
- // Scan applies the selector query and scans the result into the given value.
- func (_s *UserSelect) 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[*UserQuery, *UserSelect](ctx, _s.UserQuery, _s, _s.inters, v)
- }
- func (_s *UserSelect) sqlScan(ctx context.Context, root *UserQuery, 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)
- }
|