internal Tx endpoint successfully fetching internal tx data

This commit is contained in:
Dustin Brickwood 2018-08-13 12:05:31 -04:00
parent 32f7862540
commit 68f829f12a
6 changed files with 70 additions and 59 deletions

View file

@ -372,7 +372,7 @@ func InsertTx(sqldb *sql.DB, txData stypes.ShyftTxEntryPretty) {
//InsertInternalTx writes internal tx to Postgres Db
func InsertInternalTx(sqldb *sql.DB, i stypes.InteralWrite) {
var returnValue string
sqlStatement := `INSERT INTO internaltxs(type, txhash, from_addr, to_addr, amount, gas, gasUsed, time, input, output) VALUES(($1), ($2), ($3), ($4), ($5), ($6), ($7), ($8), ($9), ($10)) RETURNING txHash`
sqlStatement := `INSERT INTO internaltxs(action, txhash, from_addr, to_addr, amount, gas, gasUsed, time, input, output) VALUES(($1), ($2), ($3), ($4), ($5), ($6), ($7), ($8), ($9), ($10)) RETURNING txHash`
qerr := sqldb.QueryRow(sqlStatement, i.Action, strings.ToLower(i.Hash), strings.ToLower(i.From), strings.ToLower(i.To), i.Value, i.Gas, i.GasUsed, i.Time, i.Input, i.Output).Scan(&returnValue)
if qerr != nil {
fmt.Println(qerr)

View file

@ -429,31 +429,43 @@ func SGetAllInternalTransactions(sqldb *sql.DB) string {
//GetInternalTransaction fn returns single tx
func SGetInternalTransaction(sqldb *sql.DB, txHash string) string {
var arr stypes.InternalArray
var internaltx string
sqlStatement := `SELECT * FROM internaltxs WHERE txhash=$1;`
row := sqldb.QueryRow(sqlStatement, txHash)
var txhash, action, to_addr, from_addr, amount, input, output string
var id int
var gas, gasUsed uint64
var age string
row.Scan(
&id, &txhash, &action, &to_addr, &from_addr, &amount, &gas, &gasUsed, &age, &input, &output,
)
internaltx := stypes.InteralWrite{
ID: id,
Hash: txhash,
Action: action,
To: to_addr,
From: from_addr,
Value: amount,
Gas: gas,
GasUsed: gasUsed,
Time: age,
Input: input,
Output: output,
rows, err := sqldb.Query(sqlStatement, txHash)
if err != nil {
fmt.Println("err")
}
json, _ := json.Marshal(internaltx)
defer rows.Close()
return string(json)
for rows.Next() {
var txhash, action, to_addr, from_addr, amount, input, output string
var id int
var gas, gasUsed uint64
var age string
err = rows.Scan(
&id, &txhash, &action, &to_addr, &from_addr, &amount, &gas, &gasUsed, &age, &input, &output,
)
arr.InternalEntry = append(arr.InternalEntry, stypes.InteralWrite{
ID: id,
Hash: txhash,
Action: action,
To: to_addr,
From: from_addr,
Value: amount,
Gas: gas,
GasUsed: gasUsed,
Time: age,
Input: input,
Output: output,
})
tx, _ := json.Marshal(arr.InternalEntry)
newtx := string(tx)
internaltx = newtx
}
return internaltx
}

View file

@ -2,7 +2,6 @@ package eth
import (
"context"
"fmt"
"github.com/ShyftNetwork/go-empyrean/common"
"github.com/ShyftNetwork/go-empyrean/params"

View file

@ -1,5 +1,4 @@
\connect
shyftdb;
\connect shyftdb;
DROP TABLE internalTxs;
DROP TABLE txs;
DROP TABLE blocks;

View file

@ -195,36 +195,37 @@ func GetRecentBlock(w http.ResponseWriter, r *http.Request) {
}
//GetInternalTransactions gets internal txs
func GetInternalTransactions(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
address := vars["address"]
func GetInternalTransactionsByHash(w http.ResponseWriter, r *http.Request) {
sqldb, err := core.DBConnection()
// mostRecentBlock := core.SGetRecentBlock(sqldb)
// if err != nil {
// http.Error(w, err.Error(), 500)
// return
// }
vars := mux.Vars(r)
txHash := vars["txHash"]
internalTxs := core.SGetInternalTransaction(sqldb, txHash)
if err != nil {
http.Error(w, err.Error(), 500)
return
}
w.Header().Set("Content-Type", "application/json; charset=UTF-8")
w.WriteHeader(http.StatusOK)
fmt.Fprintln(w, "Get InternalTransactions", address)
fmt.Fprintln(w, internalTxs)
}
//GetInternalTransactionsHash gets internal txs hash
func GetInternalTransactionsHash(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
transactionHash := vars["transaction_hash"]
func GetInternalTransactions(w http.ResponseWriter, r *http.Request) {
sqldb, err := core.DBConnection()
//mostRecentBlock := core.SGetRecentBlock(sqldb)
// if err != nil {
// http.Error(w, err.Error(), 500)
// return
// }
internalTxs := core.SGetAllInternalTransactions(sqldb)
if err != nil {
http.Error(w, err.Error(), 500)
return
}
w.Header().Set("Content-Type", "application/json; charset=UTF-8")
w.WriteHeader(http.StatusOK)
fmt.Fprintln(w, "Get Internal Transaction Hash", transactionHash)
fmt.Fprintln(w, internalTxs)
}
func BroadcastTx(w http.ResponseWriter, r *http.Request) {

View file

@ -58,34 +58,34 @@ var routes = Routes{
GetTransaction,
},
Route{
Name: "GetRecentBlock",
Method: "GET",
Pattern: "/api/get_recent_block",
Name: "GetRecentBlock",
Method: "GET",
Pattern: "/api/get_recent_block",
HandlerFunc: GetRecentBlock,
},
Route{
Name: "GetAllTransactionsFromBlock",
Method: "GET",
Pattern: "/api/get_all_transactions_from_block/{blockNumber}",
Name: "GetAllTransactionsFromBlock",
Method: "GET",
Pattern: "/api/get_all_transactions_from_block/{blockNumber}",
HandlerFunc: GetAllTransactionsFromBlock,
},
Route{
Name: "GetAllBlocksMinedByAddress",
Method: "GET",
Pattern: "/api/get_blocks_mined/{coinbase}",
Name: "GetAllBlocksMinedByAddress",
Method: "GET",
Pattern: "/api/get_blocks_mined/{coinbase}",
HandlerFunc: GetAllBlocksMinedByAddress,
},
Route{
"GetInternalTransactions",
"GET",
"/api/get_internal_transactions/{address}",
"/api/get_internal_transactions/",
GetInternalTransactions,
},
Route{
"GetInternalTransactionsHash",
"GetInternalTransactionsByHash",
"GET",
"/api/get_internal_transactions_hash/{transactions_hash}",
GetInternalTransactionsHash,
"/api/get_internal_transactions/{txHash}",
GetInternalTransactionsByHash,
},
Route{
"BroadcastTx",