Skip to content

Commit

Permalink
First admin endpoints
Browse files Browse the repository at this point in the history
  • Loading branch information
icellan committed May 2, 2022
1 parent f90f55c commit 96eeef0
Show file tree
Hide file tree
Showing 6 changed files with 2,274 additions and 860 deletions.
2 changes: 2 additions & 0 deletions gqlgen.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,8 @@ resolver:
models:
AccessKey:
model: github.com/BuxOrg/bux.AccessKey
AdminStats:
model: github.com/BuxOrg/bux.AdminStats
ChangeStrategy:
model: github.com/BuxOrg/bux.ChangeStrategy
Destination:
Expand Down
41 changes: 39 additions & 2 deletions graph/admin.graphqls
Original file line number Diff line number Diff line change
@@ -1,12 +1,49 @@
# GraphQL schema example
#
# https://gqlgen.com/getting-started/

type AdminStats {
id: String
}

extend type Query {
admin_get_status: Boolean
admin_get_stats: AdminStats
admin_paymail_get (
address: String!
): PaymailAddress
admin_paymail_list (
metadata: Metadata
conditions: Map
params: QueryParams
): [PaymailAddress]
admin_paymail_count (
metadata: Metadata
conditions: Map
): Int64
admin_paymail_get_by_xpub_id (
xpub_id: String!
): [PaymailAddress]
admin_xpub_list (
metadata: Metadata
conditions: Map
params: QueryParams
): [Xpub]
admin_xpub_count (
metadata: Metadata
conditions: Map
): Int64
}

extend type Mutation {
paymail_create(
admin_paymail_create (
xpub: String!
address: String!
public_name: String
avatar: String
metadata: Metadata
): PaymailAddress
paymail_delete(
admin_paymail_delete (
address: String!
): Boolean!
}
131 changes: 128 additions & 3 deletions graph/admin.resolvers.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,18 @@ package graph

import (
"context"
"fmt"

"github.com/BuxOrg/bux"
"github.com/BuxOrg/bux-server/graph/generated"
"github.com/BuxOrg/bux/datastore"
)

func (r *mutationResolver) PaymailCreate(ctx context.Context, address string, publicName *string, avatar *string, metadata bux.Metadata) (*bux.PaymailAddress, error) {
func (r *adminStatsResolver) ID(ctx context.Context, obj *bux.AdminStats) (*string, error) {
panic(fmt.Errorf("not implemented"))
}

func (r *mutationResolver) AdminPaymailCreate(ctx context.Context, xpub string, address string, publicName *string, avatar *string, metadata bux.Metadata) (*bux.PaymailAddress, error) {
// including admin check
c, err := GetConfigFromContextAdmin(ctx)
if err != nil {
Expand All @@ -32,15 +39,15 @@ func (r *mutationResolver) PaymailCreate(ctx context.Context, address string, pu
}

var paymailAddress *bux.PaymailAddress
paymailAddress, err = c.Services.Bux.NewPaymailAddress(ctx, c.XPub, address, usePublicName, useAvatar, opts...)
paymailAddress, err = c.Services.Bux.NewPaymailAddress(ctx, xpub, address, usePublicName, useAvatar, opts...)
if err != nil {
return nil, err
}

return paymailAddress, nil
}

func (r *mutationResolver) PaymailDelete(ctx context.Context, address string) (bool, error) {
func (r *mutationResolver) AdminPaymailDelete(ctx context.Context, address string) (bool, error) {
// including admin check
c, err := GetConfigFromContextAdmin(ctx)
if err != nil {
Expand All @@ -57,3 +64,121 @@ func (r *mutationResolver) PaymailDelete(ctx context.Context, address string) (b

return true, nil
}

func (r *queryResolver) AdminGetStatus(ctx context.Context) (*bool, error) {
// including admin check
_, err := GetConfigFromContextAdmin(ctx)
if err != nil {
return nil, err
}

success := true
return &success, nil
}

func (r *queryResolver) AdminGetStats(ctx context.Context) (*bux.AdminStats, error) {
panic(fmt.Errorf("not implemented"))
}

func (r *queryResolver) AdminPaymailGet(ctx context.Context, address string) (*bux.PaymailAddress, error) {
// including admin check
c, err := GetConfigFromContextAdmin(ctx)
if err != nil {
return nil, err
}

opts := c.Services.Bux.DefaultModelOptions()

var paymailAddress *bux.PaymailAddress
paymailAddress, err = c.Services.Bux.GetPaymailAddress(ctx, address, opts...)
if err != nil {
return nil, err
}

return paymailAddress, nil
}

func (r *queryResolver) AdminPaymailList(ctx context.Context, metadata bux.Metadata, conditions map[string]interface{}, params *datastore.QueryParams) ([]*bux.PaymailAddress, error) {
// including admin check
c, err := GetConfigFromContextAdmin(ctx)
if err != nil {
return nil, err
}

var paymailAddresses []*bux.PaymailAddress
paymailAddresses, err = c.Services.Bux.GetPaymailAddresses(ctx, &metadata, &conditions, nil)
if err != nil {
return nil, err
}

return paymailAddresses, nil
}

func (r *queryResolver) AdminPaymailCount(ctx context.Context, metadata bux.Metadata, conditions map[string]interface{}) (*int64, error) {
// including admin check
c, err := GetConfigFromContextAdmin(ctx)
if err != nil {
return nil, err
}

var count int64
count, err = c.Services.Bux.GetPaymailAddressesCount(ctx, &metadata, &conditions)
if err != nil {
return nil, err
}

return &count, nil
}

func (r *queryResolver) AdminPaymailGetByXpubID(ctx context.Context, xpubID string) ([]*bux.PaymailAddress, error) {
// including admin check
c, err := GetConfigFromContextAdmin(ctx)
if err != nil {
return nil, err
}

var paymailAddresses []*bux.PaymailAddress
paymailAddresses, err = c.Services.Bux.GetPaymailAddressesByXPubID(ctx, xpubID, nil, nil, nil)
if err != nil {
return nil, err
}

return paymailAddresses, nil
}

func (r *queryResolver) AdminXpubList(ctx context.Context, metadata bux.Metadata, conditions map[string]interface{}, params *datastore.QueryParams) ([]*bux.Xpub, error) {
// including admin check
c, err := GetConfigFromContextAdmin(ctx)
if err != nil {
return nil, err
}

var xPubs []*bux.Xpub
xPubs, err = c.Services.Bux.GetXPubs(ctx, &metadata, &conditions, params)
if err != nil {
return nil, err
}

return xPubs, nil
}

func (r *queryResolver) AdminXpubCount(ctx context.Context, metadata bux.Metadata, conditions map[string]interface{}) (*int64, error) {
// including admin check
c, err := GetConfigFromContextAdmin(ctx)
if err != nil {
return nil, err
}

var count int64
count, err = c.Services.Bux.GetXPubsCount(ctx, &metadata, &conditions)
if err != nil {
return nil, err
}

return &count, nil
}

// AdminStats returns generated.AdminStatsResolver implementation.
func (r *Resolver) AdminStats() generated.AdminStatsResolver { return &adminStatsResolver{r} }

type adminStatsResolver struct{ *Resolver }
Loading

0 comments on commit 96eeef0

Please sign in to comment.