-
Notifications
You must be signed in to change notification settings - Fork 0
/
approve_application_mutation.go
66 lines (50 loc) · 1.57 KB
/
approve_application_mutation.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package community_api_go
import (
"context"
"errors"
"github.com/214alphadev/community-api-go/scalars"
am "github.com/214alphadev/community-authentication-middleware"
)
type approveApplicationResponse struct {
error error
application *application
}
func (r approveApplicationResponse) Error() *string {
switch r.error {
case nil:
return nil
default:
e := r.error.Error()
return &e
}
}
func (r approveApplicationResponse) Application() *application {
return r.application
}
func (r *rootResolver) ApproveApplication(ctx context.Context, args struct{ ApplicationID scalars.UUIDV4 }) (applyForVerificationResponse, error) {
reviewer := am.GetAuthenticateMember(ctx)
switch reviewer {
case nil:
return applyForVerificationResponse{error: errors.New("Unauthenticated")}, nil
default:
err := r.community.ApproveApplication(args.ApplicationID.UUID, *reviewer)
switch err {
case errors.New("InsufficientPermissions"):
return applyForVerificationResponse{error: err}, nil
case errors.New("ApplicationDoesNotExist"):
return applyForVerificationResponse{error: err}, nil
case errors.New("AlreadyReviewed"):
return applyForVerificationResponse{error: err}, nil
default:
application, err := r.community.GetApplication(args.ApplicationID.UUID)
if err != nil {
return applyForVerificationResponse{}, err
}
gqlApplication, err := newApplicationTypeFromEntity(r.community, application)
if err != nil {
return applyForVerificationResponse{}, err
}
return applyForVerificationResponse{application: &gqlApplication}, nil
}
}
}