Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AccountQueryHandler ¶
type AccountQueryHandler = accountgraphql.AccountQueryHandler[*exmodels.Account, *exmodels.AccountPayload, *exmodels.AccountCreateInput, *exmodels.AccountUpdateInput, *exmodels.AccountListFilter, *exmodels.AccountListOrder]
type EmailPasswordLoginHandler ¶
type EmailPasswordLoginHandler interface {
Login(ctx context.Context, email, password string, accountID ...uint64) (*gqlmodels.SessionToken, error)
}
EmailPasswordLoginHandler handles the login(email, password, accountID) mutation.
type ExampleAccountQueryResolver ¶
type ExampleAccountQueryResolver = accountgraphql.QueryResolver[ *domain.User, *domain.Account, *exmodels.Account, *exmodels.AccountPayload, *exmodels.AccountCreateInput, *exmodels.AccountUpdateInput, *exmodels.AccountListFilter, *exmodels.AccountListOrder, *exmodels.User, *exmodels.UserCreateInput, *exmodels.UserUpdateInput, ]
ExampleAccountQueryResolver is account QueryResolver wired to example GraphQL models.
func NewExampleAccountQueryResolver ¶
func NewExampleAccountQueryResolver(cfg ExampleAccountQueryResolverConfig) *ExampleAccountQueryResolver
NewExampleAccountQueryResolver wires account resolvers with extended GraphQL models.
type ExampleAccountQueryResolverConfig ¶
type ExampleAccountQueryResolverConfig = accountgraphql.QueryResolverConfig[ *domain.User, *domain.Account, *exmodels.Account, *exmodels.AccountPayload, *exmodels.AccountCreateInput, *exmodels.AccountUpdateInput, *exmodels.AccountListFilter, *exmodels.AccountListOrder, *exmodels.User, *exmodels.UserCreateInput, *exmodels.UserUpdateInput, ]
ExampleAccountQueryResolverConfig wires extended account GraphQL models.
type Option ¶
type Option func(*OptionsConfig)
Option is a functional option applied to OptionsConfig.
func WithUserAccountResolvers ¶
func WithUserAccountResolvers[TUser user.Model, TAccount account.Model]( provider *jwt.Provider, user UserQueryResolver, auth *accountgraphql.AuthResolver[TUser, TAccount], accounts AccountQueryHandler, members accountgraphql.MemberQueryHandler, ) Option
WithUserAccountResolvers sets all four custom resolvers in one call. auth must be the concrete *AuthResolver so that the email+password login handler can be wired automatically via accountlogin.New(auth).
Example:
graphql.WithUserAccountResolvers[*domain.User, *domain.Account](
wiring.NewExampleUserQueryResolver(deps.UserModule),
accountgraphql.NewAuthResolver(jwtProvider, login, deps.AccountRepo, deps.AccountUC, rbacrepo.New()),
wiring.NewExampleAccountQueryResolver(cfg),
wiring.NewExampleMemberQueryResolver(deps.AccountUC, deps.MemberUC, ...),
)
func WithUserLoginHandler ¶
func WithUserLoginHandler[TUser user.Model, TAccount account.Model]( provider *jwt.Provider, userLogin accountlogin.LoginPasswordAuth[TUser], sessionRepo account.SessionRepository[TUser, TAccount], ) Option
WithUserLoginHandler sets the email+password login handler for the example/api GraphQL handler. auth must be the concrete *AuthResolver so that the email+password login handler can be wired automatically via accountlogin.New(auth).
type OptionsConfig ¶
type OptionsConfig struct {
UserHandler UserQueryResolver
AuthHandler accountgraphql.AuthQueryHandler
LoginHandler accountgraphql.AccountLoginHandler
AccountHandler AccountQueryHandler
MemberHandler accountgraphql.MemberQueryHandler
}
OptionsConfig carries all resolver overrides for the example/api GraphQL handler. Instantiate with concrete user/account types at the entry point (e.g. main.go).
func Apply ¶
func Apply(opts []Option, cfg *OptionsConfig) *OptionsConfig
Apply runs all options against cfg and returns it.
type UserQueryResolver ¶
type UserQueryResolver interface {
usergraphql.UserBaseQueryResolver[
*domain.User,
*exmodels.User,
*exmodels.UserCreateInput,
*exmodels.UserUpdateInput,
*exmodels.UserPayload,
*exmodels.UserListFilter,
*exmodels.UserListOrder,
]
usergraphql.UserEmailQueryResolver[
*domain.User,
*exmodels.User,
*exmodels.UserPayload,
]
// usergraphql.UserUsernameQueryResolver[
// *domain.User,
// *exmodels.User,
// *exmodels.UserCreateInput,
// *exmodels.UserPayload,
// ]
usergraphql.UserPasswordQueryResolver[
*domain.User,
*exmodels.User,
*exmodels.UserCreateInput,
*exmodels.UserPayload,
]
usergraphql.UserPasswordResetQueryResolver[
*domain.User,
*exmodels.User,
*exmodels.UserPayload,
]
}
func NewExampleUserQueryResolver ¶
func NewExampleUserQueryResolver(module userstack.Module[*domain.User]) UserQueryResolver
NewExampleUserQueryResolver wires a full user resolver from a userstack Module.
func NewUserQueryResolver ¶
func NewUserQueryResolver( core user.Usecase[*domain.User], emailUsecase user.EmailUsecase[*domain.User], passwordUsecase user.PasswordUsecase[*domain.User], ) UserQueryResolver