Skip to content

Commit

Permalink
Added AdminRecordTransaction
Browse files Browse the repository at this point in the history
  • Loading branch information
icellan committed Jun 15, 2022
1 parent ae0c8c2 commit 6b9f368
Show file tree
Hide file tree
Showing 5 changed files with 182 additions and 2 deletions.
33 changes: 33 additions & 0 deletions actions/admin/record.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package admin

import (
"net/http"

"github.com/BuxOrg/bux"
"github.com/julienschmidt/httprouter"
apirouter "github.com/mrz1836/go-api-router"
)

// transactionRecord will save and complete a transaction directly, without any checks
func (a *Action) transactionRecord(w http.ResponseWriter, req *http.Request, _ httprouter.Params) {

// Parse the params
params := apirouter.GetParams(req)

// Set the metadata
opts := make([]bux.ModelOps, 0)

// Record a new transaction (get the hex from parameters)
transaction, err := a.Services.Bux.RecordRawTransaction(
req.Context(),
params.GetString("hex"),
opts...,
)
if err != nil {
apirouter.ReturnResponse(w, req, http.StatusUnprocessableEntity, err.Error())
return
}

// Return response
apirouter.ReturnResponse(w, req, http.StatusCreated, bux.DisplayModels(transaction))
}
1 change: 1 addition & 0 deletions actions/admin/routes.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ func RegisterRoutes(router *apirouter.Router, appConfig *config.AppConfig, servi
router.HTTPRouter.POST("/"+config.CurrentMajorVersion+"/admin/paymails/count", action.Request(router, require.Wrap(action.paymailAddressesCount)))
router.HTTPRouter.POST("/"+config.CurrentMajorVersion+"/admin/transactions/search", action.Request(router, require.Wrap(action.transactionsSearch)))
router.HTTPRouter.POST("/"+config.CurrentMajorVersion+"/admin/transactions/count", action.Request(router, require.Wrap(action.transactionsCount)))
router.HTTPRouter.POST("/"+config.CurrentMajorVersion+"/admin/transactions/record", action.Request(router, require.Wrap(action.transactionRecord)))
router.HTTPRouter.POST("/"+config.CurrentMajorVersion+"/admin/utxos/search", action.Request(router, require.Wrap(action.utxosSearch)))
router.HTTPRouter.POST("/"+config.CurrentMajorVersion+"/admin/utxos/count", action.Request(router, require.Wrap(action.utxosCount)))
router.HTTPRouter.POST("/"+config.CurrentMajorVersion+"/admin/xpubs/search", action.Request(router, require.Wrap(action.xpubsSearch)))
Expand Down
3 changes: 3 additions & 0 deletions graph/admin.graphqls
Original file line number Diff line number Diff line change
Expand Up @@ -107,4 +107,7 @@ extend type Mutation {
admin_paymail_delete (
address: String!
): Boolean!
admin_transaction(
hex: String!,
): Transaction
}
23 changes: 23 additions & 0 deletions graph/admin.resolvers.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ package graph

import (
"context"
"errors"

"github.com/BuxOrg/bux"
"github.com/BuxOrg/bux/datastore"
Expand Down Expand Up @@ -59,6 +60,28 @@ func (r *mutationResolver) AdminPaymailDelete(ctx context.Context, address strin
return true, nil
}

func (r *mutationResolver) AdminTransaction(ctx context.Context, hex string) (*bux.Transaction, error) {
// including admin check
c, err := GetConfigFromContextAdmin(ctx)
if err != nil {
return nil, err
}

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

var transaction *bux.Transaction
transaction, err = c.Services.Bux.RecordRawTransaction(
ctx, hex, opts...,
)
if err != nil {
if !errors.Is(err, datastore.ErrDuplicateKey) {
return nil, err
}
}

return bux.DisplayModels(transaction).(*bux.Transaction), nil
}

func (r *queryResolver) AdminGetStatus(ctx context.Context) (*bool, error) {
// including admin check
_, err := GetConfigFromContextAdmin(ctx)
Expand Down
124 changes: 122 additions & 2 deletions graph/generated/generated.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 6b9f368

Please sign in to comment.