generated from datumforge/go-template
-
Notifications
You must be signed in to change notification settings - Fork 5
/
organization.resolvers.go
154 lines (114 loc) · 4.24 KB
/
organization.resolvers.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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
package graphapi
// This file will be automatically regenerated based on the schema, any resolver implementations
// will be copied through when generating and any unknown code will be moved to the end.
// Code generated by github.com/99designs/gqlgen
import (
"context"
"errors"
"github.com/datumforge/datum/internal/ent/generated"
"github.com/datumforge/datum/internal/ent/generated/privacy"
_ "github.com/datumforge/datum/internal/ent/generated/runtime"
"github.com/datumforge/datum/internal/ent/privacy/viewer"
)
// CreateOrganization is the resolver for the createOrganization field.
func (r *mutationResolver) CreateOrganization(ctx context.Context, input generated.CreateOrganizationInput) (*OrganizationCreatePayload, error) {
org, err := withTransactionalMutation(ctx).Organization.Create().SetInput(input).Save(ctx)
if err != nil {
if generated.IsValidationError(err) {
validationError := err.(*generated.ValidationError)
r.logger.Debugw("validation error", "field", validationError.Name, "error", validationError.Error())
return nil, validationError
}
if generated.IsConstraintError(err) {
constraintError := err.(*generated.ConstraintError)
r.logger.Debugw("constraint error", "error", constraintError.Error())
return nil, constraintError
}
if errors.Is(err, privacy.Deny) {
return nil, newPermissionDeniedError(ActionCreate, "organization")
}
r.logger.Errorw("failed to create organization", "error", err)
return nil, err
}
// setup view context
v := viewer.UserViewer{
OrgID: org.ID,
}
ctx = viewer.NewContext(ctx, v)
return &OrganizationCreatePayload{Organization: org}, nil
}
// UpdateOrganization is the resolver for the updateOrganization field.
func (r *mutationResolver) UpdateOrganization(ctx context.Context, id string, input generated.UpdateOrganizationInput) (*OrganizationUpdatePayload, error) {
// setup view context
v := viewer.UserViewer{
OrgID: id,
}
ctx = viewer.NewContext(ctx, v)
org, err := withTransactionalMutation(ctx).Organization.Get(ctx, id)
if err != nil {
if generated.IsNotFound(err) {
return nil, err
}
if errors.Is(err, privacy.Deny) {
r.logger.Errorw("failed to get organization on update", "error", err)
return nil, newPermissionDeniedError(ActionGet, "organization")
}
r.logger.Errorw("failed to get organization", "error", err)
return nil, ErrInternalServerError
}
org, err = org.Update().SetInput(input).Save(ctx)
if err != nil {
if generated.IsValidationError(err) {
return nil, err
}
if errors.Is(err, privacy.Deny) {
r.logger.Errorw("failed to update organization", "error", err)
return nil, newPermissionDeniedError(ActionUpdate, "organization")
}
r.logger.Errorw("failed to update organization", "error", err)
return nil, ErrInternalServerError
}
return &OrganizationUpdatePayload{Organization: org}, nil
}
// DeleteOrganization is the resolver for the deleteOrganization field.
func (r *mutationResolver) DeleteOrganization(ctx context.Context, id string) (*OrganizationDeletePayload, error) {
// setup view context
v := viewer.UserViewer{
OrgID: id,
}
ctx = viewer.NewContext(ctx, v)
if err := withTransactionalMutation(ctx).Organization.DeleteOneID(id).Exec(ctx); err != nil {
if generated.IsNotFound(err) {
return nil, err
}
if errors.Is(err, privacy.Deny) {
return nil, newPermissionDeniedError(ActionDelete, "organization")
}
r.logger.Errorw("failed to delete organization", "error", err)
return nil, err
}
if err := generated.OrganizationEdgeCleanup(ctx, id); err != nil {
return nil, newCascadeDeleteError(err)
}
return &OrganizationDeletePayload{DeletedID: id}, nil
}
// Organization is the resolver for the organization field.
func (r *queryResolver) Organization(ctx context.Context, id string) (*generated.Organization, error) {
// setup view context
v := viewer.UserViewer{
OrgID: id,
}
ctx = viewer.NewContext(ctx, v)
org, err := withTransactionalMutation(ctx).Organization.Get(ctx, id)
if err != nil {
r.logger.Errorw("failed to get organization", "error", err)
if generated.IsNotFound(err) {
return nil, err
}
if errors.Is(err, privacy.Deny) {
return nil, newPermissionDeniedError(ActionGet, "organization")
}
return nil, ErrInternalServerError
}
return org, nil
}