diff options
Diffstat (limited to 'graphql')
-rw-r--r-- | graphql/resolvers/identity.go | 36 | ||||
-rw-r--r-- | graphql/resolvers/root.go | 4 |
2 files changed, 40 insertions, 0 deletions
diff --git a/graphql/resolvers/identity.go b/graphql/resolvers/identity.go new file mode 100644 index 00000000..cc68197f --- /dev/null +++ b/graphql/resolvers/identity.go @@ -0,0 +1,36 @@ +package resolvers + +import ( + "context" + + "github.com/MichaelMure/git-bug/identity" +) + +type identityResolver struct{} + +func (identityResolver) Name(ctx context.Context, obj *identity.Interface) (*string, error) { + return nilIfEmpty((*obj).Name()) +} + +func (identityResolver) Email(ctx context.Context, obj *identity.Interface) (*string, error) { + return nilIfEmpty((*obj).Email()) +} + +func (identityResolver) Login(ctx context.Context, obj *identity.Interface) (*string, error) { + return nilIfEmpty((*obj).Login()) +} + +func (identityResolver) DisplayName(ctx context.Context, obj *identity.Interface) (string, error) { + return (*obj).DisplayName(), nil +} + +func (identityResolver) AvatarURL(ctx context.Context, obj *identity.Interface) (*string, error) { + return nilIfEmpty((*obj).AvatarUrl()) +} + +func nilIfEmpty(s string) (*string, error) { + if s == "" { + return nil, nil + } + return &s, nil +} diff --git a/graphql/resolvers/root.go b/graphql/resolvers/root.go index 9b3a730b..cfdfe346 100644 --- a/graphql/resolvers/root.go +++ b/graphql/resolvers/root.go @@ -32,6 +32,10 @@ func (RootResolver) Bug() graph.BugResolver { return &bugResolver{} } +func (r RootResolver) Identity() graph.IdentityResolver { + return &identityResolver{} +} + func (RootResolver) CommentHistoryStep() graph.CommentHistoryStepResolver { return &commentHistoryStepResolver{} } |