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} }