| |
|
|
| package intercept |
|
|
| import ( |
| "context" |
| "fmt" |
|
|
| "entgo.io/ent/dialect/sql" |
| "github.com/Wei-Shaw/sub2api/ent" |
| "github.com/Wei-Shaw/sub2api/ent/account" |
| "github.com/Wei-Shaw/sub2api/ent/accountgroup" |
| "github.com/Wei-Shaw/sub2api/ent/announcement" |
| "github.com/Wei-Shaw/sub2api/ent/announcementread" |
| "github.com/Wei-Shaw/sub2api/ent/apikey" |
| "github.com/Wei-Shaw/sub2api/ent/errorpassthroughrule" |
| "github.com/Wei-Shaw/sub2api/ent/group" |
| "github.com/Wei-Shaw/sub2api/ent/idempotencyrecord" |
| "github.com/Wei-Shaw/sub2api/ent/predicate" |
| "github.com/Wei-Shaw/sub2api/ent/promocode" |
| "github.com/Wei-Shaw/sub2api/ent/promocodeusage" |
| "github.com/Wei-Shaw/sub2api/ent/proxy" |
| "github.com/Wei-Shaw/sub2api/ent/redeemcode" |
| "github.com/Wei-Shaw/sub2api/ent/securitysecret" |
| "github.com/Wei-Shaw/sub2api/ent/setting" |
| "github.com/Wei-Shaw/sub2api/ent/usagecleanuptask" |
| "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/userattributedefinition" |
| "github.com/Wei-Shaw/sub2api/ent/userattributevalue" |
| "github.com/Wei-Shaw/sub2api/ent/usersubscription" |
| ) |
|
|
| |
| |
| |
| type Query interface { |
| |
| Type() string |
| |
| Limit(int) |
| |
| Offset(int) |
| |
| Unique(bool) |
| |
| Order(...func(*sql.Selector)) |
| |
| |
| WhereP(...func(*sql.Selector)) |
| } |
|
|
| |
| |
| |
| type Func func(context.Context, Query) error |
|
|
| |
| func (f Func) Intercept(next ent.Querier) ent.Querier { |
| return ent.QuerierFunc(func(ctx context.Context, q ent.Query) (ent.Value, error) { |
| query, err := NewQuery(q) |
| if err != nil { |
| return nil, err |
| } |
| if err := f(ctx, query); err != nil { |
| return nil, err |
| } |
| return next.Query(ctx, q) |
| }) |
| } |
|
|
| |
| |
| type TraverseFunc func(context.Context, Query) error |
|
|
| |
| func (f TraverseFunc) Intercept(next ent.Querier) ent.Querier { |
| return next |
| } |
|
|
| |
| func (f TraverseFunc) Traverse(ctx context.Context, q ent.Query) error { |
| query, err := NewQuery(q) |
| if err != nil { |
| return err |
| } |
| return f(ctx, query) |
| } |
|
|
| |
| type APIKeyFunc func(context.Context, *ent.APIKeyQuery) (ent.Value, error) |
|
|
| |
| func (f APIKeyFunc) Query(ctx context.Context, q ent.Query) (ent.Value, error) { |
| if q, ok := q.(*ent.APIKeyQuery); ok { |
| return f(ctx, q) |
| } |
| return nil, fmt.Errorf("unexpected query type %T. expect *ent.APIKeyQuery", q) |
| } |
|
|
| |
| type TraverseAPIKey func(context.Context, *ent.APIKeyQuery) error |
|
|
| |
| func (f TraverseAPIKey) Intercept(next ent.Querier) ent.Querier { |
| return next |
| } |
|
|
| |
| func (f TraverseAPIKey) Traverse(ctx context.Context, q ent.Query) error { |
| if q, ok := q.(*ent.APIKeyQuery); ok { |
| return f(ctx, q) |
| } |
| return fmt.Errorf("unexpected query type %T. expect *ent.APIKeyQuery", q) |
| } |
|
|
| |
| type AccountFunc func(context.Context, *ent.AccountQuery) (ent.Value, error) |
|
|
| |
| func (f AccountFunc) Query(ctx context.Context, q ent.Query) (ent.Value, error) { |
| if q, ok := q.(*ent.AccountQuery); ok { |
| return f(ctx, q) |
| } |
| return nil, fmt.Errorf("unexpected query type %T. expect *ent.AccountQuery", q) |
| } |
|
|
| |
| type TraverseAccount func(context.Context, *ent.AccountQuery) error |
|
|
| |
| func (f TraverseAccount) Intercept(next ent.Querier) ent.Querier { |
| return next |
| } |
|
|
| |
| func (f TraverseAccount) Traverse(ctx context.Context, q ent.Query) error { |
| if q, ok := q.(*ent.AccountQuery); ok { |
| return f(ctx, q) |
| } |
| return fmt.Errorf("unexpected query type %T. expect *ent.AccountQuery", q) |
| } |
|
|
| |
| type AccountGroupFunc func(context.Context, *ent.AccountGroupQuery) (ent.Value, error) |
|
|
| |
| func (f AccountGroupFunc) Query(ctx context.Context, q ent.Query) (ent.Value, error) { |
| if q, ok := q.(*ent.AccountGroupQuery); ok { |
| return f(ctx, q) |
| } |
| return nil, fmt.Errorf("unexpected query type %T. expect *ent.AccountGroupQuery", q) |
| } |
|
|
| |
| type TraverseAccountGroup func(context.Context, *ent.AccountGroupQuery) error |
|
|
| |
| func (f TraverseAccountGroup) Intercept(next ent.Querier) ent.Querier { |
| return next |
| } |
|
|
| |
| func (f TraverseAccountGroup) Traverse(ctx context.Context, q ent.Query) error { |
| if q, ok := q.(*ent.AccountGroupQuery); ok { |
| return f(ctx, q) |
| } |
| return fmt.Errorf("unexpected query type %T. expect *ent.AccountGroupQuery", q) |
| } |
|
|
| |
| type AnnouncementFunc func(context.Context, *ent.AnnouncementQuery) (ent.Value, error) |
|
|
| |
| func (f AnnouncementFunc) Query(ctx context.Context, q ent.Query) (ent.Value, error) { |
| if q, ok := q.(*ent.AnnouncementQuery); ok { |
| return f(ctx, q) |
| } |
| return nil, fmt.Errorf("unexpected query type %T. expect *ent.AnnouncementQuery", q) |
| } |
|
|
| |
| type TraverseAnnouncement func(context.Context, *ent.AnnouncementQuery) error |
|
|
| |
| func (f TraverseAnnouncement) Intercept(next ent.Querier) ent.Querier { |
| return next |
| } |
|
|
| |
| func (f TraverseAnnouncement) Traverse(ctx context.Context, q ent.Query) error { |
| if q, ok := q.(*ent.AnnouncementQuery); ok { |
| return f(ctx, q) |
| } |
| return fmt.Errorf("unexpected query type %T. expect *ent.AnnouncementQuery", q) |
| } |
|
|
| |
| type AnnouncementReadFunc func(context.Context, *ent.AnnouncementReadQuery) (ent.Value, error) |
|
|
| |
| func (f AnnouncementReadFunc) Query(ctx context.Context, q ent.Query) (ent.Value, error) { |
| if q, ok := q.(*ent.AnnouncementReadQuery); ok { |
| return f(ctx, q) |
| } |
| return nil, fmt.Errorf("unexpected query type %T. expect *ent.AnnouncementReadQuery", q) |
| } |
|
|
| |
| type TraverseAnnouncementRead func(context.Context, *ent.AnnouncementReadQuery) error |
|
|
| |
| func (f TraverseAnnouncementRead) Intercept(next ent.Querier) ent.Querier { |
| return next |
| } |
|
|
| |
| func (f TraverseAnnouncementRead) Traverse(ctx context.Context, q ent.Query) error { |
| if q, ok := q.(*ent.AnnouncementReadQuery); ok { |
| return f(ctx, q) |
| } |
| return fmt.Errorf("unexpected query type %T. expect *ent.AnnouncementReadQuery", q) |
| } |
|
|
| |
| type ErrorPassthroughRuleFunc func(context.Context, *ent.ErrorPassthroughRuleQuery) (ent.Value, error) |
|
|
| |
| func (f ErrorPassthroughRuleFunc) Query(ctx context.Context, q ent.Query) (ent.Value, error) { |
| if q, ok := q.(*ent.ErrorPassthroughRuleQuery); ok { |
| return f(ctx, q) |
| } |
| return nil, fmt.Errorf("unexpected query type %T. expect *ent.ErrorPassthroughRuleQuery", q) |
| } |
|
|
| |
| type TraverseErrorPassthroughRule func(context.Context, *ent.ErrorPassthroughRuleQuery) error |
|
|
| |
| func (f TraverseErrorPassthroughRule) Intercept(next ent.Querier) ent.Querier { |
| return next |
| } |
|
|
| |
| func (f TraverseErrorPassthroughRule) Traverse(ctx context.Context, q ent.Query) error { |
| if q, ok := q.(*ent.ErrorPassthroughRuleQuery); ok { |
| return f(ctx, q) |
| } |
| return fmt.Errorf("unexpected query type %T. expect *ent.ErrorPassthroughRuleQuery", q) |
| } |
|
|
| |
| type GroupFunc func(context.Context, *ent.GroupQuery) (ent.Value, error) |
|
|
| |
| func (f GroupFunc) Query(ctx context.Context, q ent.Query) (ent.Value, error) { |
| if q, ok := q.(*ent.GroupQuery); ok { |
| return f(ctx, q) |
| } |
| return nil, fmt.Errorf("unexpected query type %T. expect *ent.GroupQuery", q) |
| } |
|
|
| |
| type TraverseGroup func(context.Context, *ent.GroupQuery) error |
|
|
| |
| func (f TraverseGroup) Intercept(next ent.Querier) ent.Querier { |
| return next |
| } |
|
|
| |
| func (f TraverseGroup) Traverse(ctx context.Context, q ent.Query) error { |
| if q, ok := q.(*ent.GroupQuery); ok { |
| return f(ctx, q) |
| } |
| return fmt.Errorf("unexpected query type %T. expect *ent.GroupQuery", q) |
| } |
|
|
| |
| type IdempotencyRecordFunc func(context.Context, *ent.IdempotencyRecordQuery) (ent.Value, error) |
|
|
| |
| func (f IdempotencyRecordFunc) Query(ctx context.Context, q ent.Query) (ent.Value, error) { |
| if q, ok := q.(*ent.IdempotencyRecordQuery); ok { |
| return f(ctx, q) |
| } |
| return nil, fmt.Errorf("unexpected query type %T. expect *ent.IdempotencyRecordQuery", q) |
| } |
|
|
| |
| type TraverseIdempotencyRecord func(context.Context, *ent.IdempotencyRecordQuery) error |
|
|
| |
| func (f TraverseIdempotencyRecord) Intercept(next ent.Querier) ent.Querier { |
| return next |
| } |
|
|
| |
| func (f TraverseIdempotencyRecord) Traverse(ctx context.Context, q ent.Query) error { |
| if q, ok := q.(*ent.IdempotencyRecordQuery); ok { |
| return f(ctx, q) |
| } |
| return fmt.Errorf("unexpected query type %T. expect *ent.IdempotencyRecordQuery", q) |
| } |
|
|
| |
| type PromoCodeFunc func(context.Context, *ent.PromoCodeQuery) (ent.Value, error) |
|
|
| |
| func (f PromoCodeFunc) Query(ctx context.Context, q ent.Query) (ent.Value, error) { |
| if q, ok := q.(*ent.PromoCodeQuery); ok { |
| return f(ctx, q) |
| } |
| return nil, fmt.Errorf("unexpected query type %T. expect *ent.PromoCodeQuery", q) |
| } |
|
|
| |
| type TraversePromoCode func(context.Context, *ent.PromoCodeQuery) error |
|
|
| |
| func (f TraversePromoCode) Intercept(next ent.Querier) ent.Querier { |
| return next |
| } |
|
|
| |
| func (f TraversePromoCode) Traverse(ctx context.Context, q ent.Query) error { |
| if q, ok := q.(*ent.PromoCodeQuery); ok { |
| return f(ctx, q) |
| } |
| return fmt.Errorf("unexpected query type %T. expect *ent.PromoCodeQuery", q) |
| } |
|
|
| |
| type PromoCodeUsageFunc func(context.Context, *ent.PromoCodeUsageQuery) (ent.Value, error) |
|
|
| |
| func (f PromoCodeUsageFunc) Query(ctx context.Context, q ent.Query) (ent.Value, error) { |
| if q, ok := q.(*ent.PromoCodeUsageQuery); ok { |
| return f(ctx, q) |
| } |
| return nil, fmt.Errorf("unexpected query type %T. expect *ent.PromoCodeUsageQuery", q) |
| } |
|
|
| |
| type TraversePromoCodeUsage func(context.Context, *ent.PromoCodeUsageQuery) error |
|
|
| |
| func (f TraversePromoCodeUsage) Intercept(next ent.Querier) ent.Querier { |
| return next |
| } |
|
|
| |
| func (f TraversePromoCodeUsage) Traverse(ctx context.Context, q ent.Query) error { |
| if q, ok := q.(*ent.PromoCodeUsageQuery); ok { |
| return f(ctx, q) |
| } |
| return fmt.Errorf("unexpected query type %T. expect *ent.PromoCodeUsageQuery", q) |
| } |
|
|
| |
| type ProxyFunc func(context.Context, *ent.ProxyQuery) (ent.Value, error) |
|
|
| |
| func (f ProxyFunc) Query(ctx context.Context, q ent.Query) (ent.Value, error) { |
| if q, ok := q.(*ent.ProxyQuery); ok { |
| return f(ctx, q) |
| } |
| return nil, fmt.Errorf("unexpected query type %T. expect *ent.ProxyQuery", q) |
| } |
|
|
| |
| type TraverseProxy func(context.Context, *ent.ProxyQuery) error |
|
|
| |
| func (f TraverseProxy) Intercept(next ent.Querier) ent.Querier { |
| return next |
| } |
|
|
| |
| func (f TraverseProxy) Traverse(ctx context.Context, q ent.Query) error { |
| if q, ok := q.(*ent.ProxyQuery); ok { |
| return f(ctx, q) |
| } |
| return fmt.Errorf("unexpected query type %T. expect *ent.ProxyQuery", q) |
| } |
|
|
| |
| type RedeemCodeFunc func(context.Context, *ent.RedeemCodeQuery) (ent.Value, error) |
|
|
| |
| func (f RedeemCodeFunc) Query(ctx context.Context, q ent.Query) (ent.Value, error) { |
| if q, ok := q.(*ent.RedeemCodeQuery); ok { |
| return f(ctx, q) |
| } |
| return nil, fmt.Errorf("unexpected query type %T. expect *ent.RedeemCodeQuery", q) |
| } |
|
|
| |
| type TraverseRedeemCode func(context.Context, *ent.RedeemCodeQuery) error |
|
|
| |
| func (f TraverseRedeemCode) Intercept(next ent.Querier) ent.Querier { |
| return next |
| } |
|
|
| |
| func (f TraverseRedeemCode) Traverse(ctx context.Context, q ent.Query) error { |
| if q, ok := q.(*ent.RedeemCodeQuery); ok { |
| return f(ctx, q) |
| } |
| return fmt.Errorf("unexpected query type %T. expect *ent.RedeemCodeQuery", q) |
| } |
|
|
| |
| type SecuritySecretFunc func(context.Context, *ent.SecuritySecretQuery) (ent.Value, error) |
|
|
| |
| func (f SecuritySecretFunc) Query(ctx context.Context, q ent.Query) (ent.Value, error) { |
| if q, ok := q.(*ent.SecuritySecretQuery); ok { |
| return f(ctx, q) |
| } |
| return nil, fmt.Errorf("unexpected query type %T. expect *ent.SecuritySecretQuery", q) |
| } |
|
|
| |
| type TraverseSecuritySecret func(context.Context, *ent.SecuritySecretQuery) error |
|
|
| |
| func (f TraverseSecuritySecret) Intercept(next ent.Querier) ent.Querier { |
| return next |
| } |
|
|
| |
| func (f TraverseSecuritySecret) Traverse(ctx context.Context, q ent.Query) error { |
| if q, ok := q.(*ent.SecuritySecretQuery); ok { |
| return f(ctx, q) |
| } |
| return fmt.Errorf("unexpected query type %T. expect *ent.SecuritySecretQuery", q) |
| } |
|
|
| |
| type SettingFunc func(context.Context, *ent.SettingQuery) (ent.Value, error) |
|
|
| |
| func (f SettingFunc) Query(ctx context.Context, q ent.Query) (ent.Value, error) { |
| if q, ok := q.(*ent.SettingQuery); ok { |
| return f(ctx, q) |
| } |
| return nil, fmt.Errorf("unexpected query type %T. expect *ent.SettingQuery", q) |
| } |
|
|
| |
| type TraverseSetting func(context.Context, *ent.SettingQuery) error |
|
|
| |
| func (f TraverseSetting) Intercept(next ent.Querier) ent.Querier { |
| return next |
| } |
|
|
| |
| func (f TraverseSetting) Traverse(ctx context.Context, q ent.Query) error { |
| if q, ok := q.(*ent.SettingQuery); ok { |
| return f(ctx, q) |
| } |
| return fmt.Errorf("unexpected query type %T. expect *ent.SettingQuery", q) |
| } |
|
|
| |
| type UsageCleanupTaskFunc func(context.Context, *ent.UsageCleanupTaskQuery) (ent.Value, error) |
|
|
| |
| func (f UsageCleanupTaskFunc) Query(ctx context.Context, q ent.Query) (ent.Value, error) { |
| if q, ok := q.(*ent.UsageCleanupTaskQuery); ok { |
| return f(ctx, q) |
| } |
| return nil, fmt.Errorf("unexpected query type %T. expect *ent.UsageCleanupTaskQuery", q) |
| } |
|
|
| |
| type TraverseUsageCleanupTask func(context.Context, *ent.UsageCleanupTaskQuery) error |
|
|
| |
| func (f TraverseUsageCleanupTask) Intercept(next ent.Querier) ent.Querier { |
| return next |
| } |
|
|
| |
| func (f TraverseUsageCleanupTask) Traverse(ctx context.Context, q ent.Query) error { |
| if q, ok := q.(*ent.UsageCleanupTaskQuery); ok { |
| return f(ctx, q) |
| } |
| return fmt.Errorf("unexpected query type %T. expect *ent.UsageCleanupTaskQuery", q) |
| } |
|
|
| |
| type UsageLogFunc func(context.Context, *ent.UsageLogQuery) (ent.Value, error) |
|
|
| |
| func (f UsageLogFunc) Query(ctx context.Context, q ent.Query) (ent.Value, error) { |
| if q, ok := q.(*ent.UsageLogQuery); ok { |
| return f(ctx, q) |
| } |
| return nil, fmt.Errorf("unexpected query type %T. expect *ent.UsageLogQuery", q) |
| } |
|
|
| |
| type TraverseUsageLog func(context.Context, *ent.UsageLogQuery) error |
|
|
| |
| func (f TraverseUsageLog) Intercept(next ent.Querier) ent.Querier { |
| return next |
| } |
|
|
| |
| func (f TraverseUsageLog) Traverse(ctx context.Context, q ent.Query) error { |
| if q, ok := q.(*ent.UsageLogQuery); ok { |
| return f(ctx, q) |
| } |
| return fmt.Errorf("unexpected query type %T. expect *ent.UsageLogQuery", q) |
| } |
|
|
| |
| type UserFunc func(context.Context, *ent.UserQuery) (ent.Value, error) |
|
|
| |
| func (f UserFunc) Query(ctx context.Context, q ent.Query) (ent.Value, error) { |
| if q, ok := q.(*ent.UserQuery); ok { |
| return f(ctx, q) |
| } |
| return nil, fmt.Errorf("unexpected query type %T. expect *ent.UserQuery", q) |
| } |
|
|
| |
| type TraverseUser func(context.Context, *ent.UserQuery) error |
|
|
| |
| func (f TraverseUser) Intercept(next ent.Querier) ent.Querier { |
| return next |
| } |
|
|
| |
| func (f TraverseUser) Traverse(ctx context.Context, q ent.Query) error { |
| if q, ok := q.(*ent.UserQuery); ok { |
| return f(ctx, q) |
| } |
| return fmt.Errorf("unexpected query type %T. expect *ent.UserQuery", q) |
| } |
|
|
| |
| type UserAllowedGroupFunc func(context.Context, *ent.UserAllowedGroupQuery) (ent.Value, error) |
|
|
| |
| func (f UserAllowedGroupFunc) Query(ctx context.Context, q ent.Query) (ent.Value, error) { |
| if q, ok := q.(*ent.UserAllowedGroupQuery); ok { |
| return f(ctx, q) |
| } |
| return nil, fmt.Errorf("unexpected query type %T. expect *ent.UserAllowedGroupQuery", q) |
| } |
|
|
| |
| type TraverseUserAllowedGroup func(context.Context, *ent.UserAllowedGroupQuery) error |
|
|
| |
| func (f TraverseUserAllowedGroup) Intercept(next ent.Querier) ent.Querier { |
| return next |
| } |
|
|
| |
| func (f TraverseUserAllowedGroup) Traverse(ctx context.Context, q ent.Query) error { |
| if q, ok := q.(*ent.UserAllowedGroupQuery); ok { |
| return f(ctx, q) |
| } |
| return fmt.Errorf("unexpected query type %T. expect *ent.UserAllowedGroupQuery", q) |
| } |
|
|
| |
| type UserAttributeDefinitionFunc func(context.Context, *ent.UserAttributeDefinitionQuery) (ent.Value, error) |
|
|
| |
| func (f UserAttributeDefinitionFunc) Query(ctx context.Context, q ent.Query) (ent.Value, error) { |
| if q, ok := q.(*ent.UserAttributeDefinitionQuery); ok { |
| return f(ctx, q) |
| } |
| return nil, fmt.Errorf("unexpected query type %T. expect *ent.UserAttributeDefinitionQuery", q) |
| } |
|
|
| |
| type TraverseUserAttributeDefinition func(context.Context, *ent.UserAttributeDefinitionQuery) error |
|
|
| |
| func (f TraverseUserAttributeDefinition) Intercept(next ent.Querier) ent.Querier { |
| return next |
| } |
|
|
| |
| func (f TraverseUserAttributeDefinition) Traverse(ctx context.Context, q ent.Query) error { |
| if q, ok := q.(*ent.UserAttributeDefinitionQuery); ok { |
| return f(ctx, q) |
| } |
| return fmt.Errorf("unexpected query type %T. expect *ent.UserAttributeDefinitionQuery", q) |
| } |
|
|
| |
| type UserAttributeValueFunc func(context.Context, *ent.UserAttributeValueQuery) (ent.Value, error) |
|
|
| |
| func (f UserAttributeValueFunc) Query(ctx context.Context, q ent.Query) (ent.Value, error) { |
| if q, ok := q.(*ent.UserAttributeValueQuery); ok { |
| return f(ctx, q) |
| } |
| return nil, fmt.Errorf("unexpected query type %T. expect *ent.UserAttributeValueQuery", q) |
| } |
|
|
| |
| type TraverseUserAttributeValue func(context.Context, *ent.UserAttributeValueQuery) error |
|
|
| |
| func (f TraverseUserAttributeValue) Intercept(next ent.Querier) ent.Querier { |
| return next |
| } |
|
|
| |
| func (f TraverseUserAttributeValue) Traverse(ctx context.Context, q ent.Query) error { |
| if q, ok := q.(*ent.UserAttributeValueQuery); ok { |
| return f(ctx, q) |
| } |
| return fmt.Errorf("unexpected query type %T. expect *ent.UserAttributeValueQuery", q) |
| } |
|
|
| |
| type UserSubscriptionFunc func(context.Context, *ent.UserSubscriptionQuery) (ent.Value, error) |
|
|
| |
| func (f UserSubscriptionFunc) Query(ctx context.Context, q ent.Query) (ent.Value, error) { |
| if q, ok := q.(*ent.UserSubscriptionQuery); ok { |
| return f(ctx, q) |
| } |
| return nil, fmt.Errorf("unexpected query type %T. expect *ent.UserSubscriptionQuery", q) |
| } |
|
|
| |
| type TraverseUserSubscription func(context.Context, *ent.UserSubscriptionQuery) error |
|
|
| |
| func (f TraverseUserSubscription) Intercept(next ent.Querier) ent.Querier { |
| return next |
| } |
|
|
| |
| func (f TraverseUserSubscription) Traverse(ctx context.Context, q ent.Query) error { |
| if q, ok := q.(*ent.UserSubscriptionQuery); ok { |
| return f(ctx, q) |
| } |
| return fmt.Errorf("unexpected query type %T. expect *ent.UserSubscriptionQuery", q) |
| } |
|
|
| |
| func NewQuery(q ent.Query) (Query, error) { |
| switch q := q.(type) { |
| case *ent.APIKeyQuery: |
| return &query[*ent.APIKeyQuery, predicate.APIKey, apikey.OrderOption]{typ: ent.TypeAPIKey, tq: q}, nil |
| case *ent.AccountQuery: |
| return &query[*ent.AccountQuery, predicate.Account, account.OrderOption]{typ: ent.TypeAccount, tq: q}, nil |
| case *ent.AccountGroupQuery: |
| return &query[*ent.AccountGroupQuery, predicate.AccountGroup, accountgroup.OrderOption]{typ: ent.TypeAccountGroup, tq: q}, nil |
| case *ent.AnnouncementQuery: |
| return &query[*ent.AnnouncementQuery, predicate.Announcement, announcement.OrderOption]{typ: ent.TypeAnnouncement, tq: q}, nil |
| case *ent.AnnouncementReadQuery: |
| return &query[*ent.AnnouncementReadQuery, predicate.AnnouncementRead, announcementread.OrderOption]{typ: ent.TypeAnnouncementRead, tq: q}, nil |
| case *ent.ErrorPassthroughRuleQuery: |
| return &query[*ent.ErrorPassthroughRuleQuery, predicate.ErrorPassthroughRule, errorpassthroughrule.OrderOption]{typ: ent.TypeErrorPassthroughRule, tq: q}, nil |
| case *ent.GroupQuery: |
| return &query[*ent.GroupQuery, predicate.Group, group.OrderOption]{typ: ent.TypeGroup, tq: q}, nil |
| case *ent.IdempotencyRecordQuery: |
| return &query[*ent.IdempotencyRecordQuery, predicate.IdempotencyRecord, idempotencyrecord.OrderOption]{typ: ent.TypeIdempotencyRecord, tq: q}, nil |
| case *ent.PromoCodeQuery: |
| return &query[*ent.PromoCodeQuery, predicate.PromoCode, promocode.OrderOption]{typ: ent.TypePromoCode, tq: q}, nil |
| case *ent.PromoCodeUsageQuery: |
| return &query[*ent.PromoCodeUsageQuery, predicate.PromoCodeUsage, promocodeusage.OrderOption]{typ: ent.TypePromoCodeUsage, tq: q}, nil |
| case *ent.ProxyQuery: |
| return &query[*ent.ProxyQuery, predicate.Proxy, proxy.OrderOption]{typ: ent.TypeProxy, tq: q}, nil |
| case *ent.RedeemCodeQuery: |
| return &query[*ent.RedeemCodeQuery, predicate.RedeemCode, redeemcode.OrderOption]{typ: ent.TypeRedeemCode, tq: q}, nil |
| case *ent.SecuritySecretQuery: |
| return &query[*ent.SecuritySecretQuery, predicate.SecuritySecret, securitysecret.OrderOption]{typ: ent.TypeSecuritySecret, tq: q}, nil |
| case *ent.SettingQuery: |
| return &query[*ent.SettingQuery, predicate.Setting, setting.OrderOption]{typ: ent.TypeSetting, tq: q}, nil |
| case *ent.UsageCleanupTaskQuery: |
| return &query[*ent.UsageCleanupTaskQuery, predicate.UsageCleanupTask, usagecleanuptask.OrderOption]{typ: ent.TypeUsageCleanupTask, tq: q}, nil |
| case *ent.UsageLogQuery: |
| return &query[*ent.UsageLogQuery, predicate.UsageLog, usagelog.OrderOption]{typ: ent.TypeUsageLog, tq: q}, nil |
| case *ent.UserQuery: |
| return &query[*ent.UserQuery, predicate.User, user.OrderOption]{typ: ent.TypeUser, tq: q}, nil |
| case *ent.UserAllowedGroupQuery: |
| return &query[*ent.UserAllowedGroupQuery, predicate.UserAllowedGroup, userallowedgroup.OrderOption]{typ: ent.TypeUserAllowedGroup, tq: q}, nil |
| case *ent.UserAttributeDefinitionQuery: |
| return &query[*ent.UserAttributeDefinitionQuery, predicate.UserAttributeDefinition, userattributedefinition.OrderOption]{typ: ent.TypeUserAttributeDefinition, tq: q}, nil |
| case *ent.UserAttributeValueQuery: |
| return &query[*ent.UserAttributeValueQuery, predicate.UserAttributeValue, userattributevalue.OrderOption]{typ: ent.TypeUserAttributeValue, tq: q}, nil |
| case *ent.UserSubscriptionQuery: |
| return &query[*ent.UserSubscriptionQuery, predicate.UserSubscription, usersubscription.OrderOption]{typ: ent.TypeUserSubscription, tq: q}, nil |
| default: |
| return nil, fmt.Errorf("unknown query type %T", q) |
| } |
| } |
|
|
| type query[T any, P ~func(*sql.Selector), R ~func(*sql.Selector)] struct { |
| typ string |
| tq interface { |
| Limit(int) T |
| Offset(int) T |
| Unique(bool) T |
| Order(...R) T |
| Where(...P) T |
| } |
| } |
|
|
| func (q query[T, P, R]) Type() string { |
| return q.typ |
| } |
|
|
| func (q query[T, P, R]) Limit(limit int) { |
| q.tq.Limit(limit) |
| } |
|
|
| func (q query[T, P, R]) Offset(offset int) { |
| q.tq.Offset(offset) |
| } |
|
|
| func (q query[T, P, R]) Unique(unique bool) { |
| q.tq.Unique(unique) |
| } |
|
|
| func (q query[T, P, R]) Order(orders ...func(*sql.Selector)) { |
| rs := make([]R, len(orders)) |
| for i := range orders { |
| rs[i] = orders[i] |
| } |
| q.tq.Order(rs...) |
| } |
|
|
| func (q query[T, P, R]) WhereP(ps ...func(*sql.Selector)) { |
| p := make([]P, len(ps)) |
| for i := range ps { |
| p[i] = ps[i] |
| } |
| q.tq.Where(p...) |
| } |
|
|