GraphQL API and utilities for the rpdata project
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
package resolver
import ( "context"
"git.aiterp.net/rpdata/api/internal/session" )
// LoginArgs is args
type LoginArgs struct { Username string Password string }
// Session resolves query.session
func (r *QueryResolver) Session(ctx context.Context) (*SessionResolver, error) { return &SessionResolver{S: session.FromContext(ctx)}, nil }
// Login resolves mutation.login
func (r *MutationResolver) Login(ctx context.Context, args *LoginArgs) (*SessionResolver, error) { session := session.FromContext(ctx)
err := session.Login(args.Username, args.Password) if err != nil { return nil, err }
return &SessionResolver{S: session}, nil }
// Logout resolves mutation.logout
func (r *MutationResolver) Logout(ctx context.Context) (*SessionResolver, error) { session := session.FromContext(ctx) session.Logout()
return &SessionResolver{S: session}, nil }
// SessionResolver resolves Session
type SessionResolver struct{ S *session.Session }
// User resolves Session.user
func (r *SessionResolver) User() *UserResolver { user := r.S.User() if user == nil { return nil }
return &UserResolver{U: user} }
|