`.. peer untrack` command
This commit is contained in:
parent
f17c9eb440
commit
aabbd29310
|
@ -22,8 +22,6 @@ You can override this value by specifying a `PIGEON_PATH` ENV var.
|
||||||
|
|
||||||
|Done?|Noun |Verb | Flag / arg 1 | Flag 2 |
|
|Done?|Noun |Verb | Flag / arg 1 | Flag 2 |
|
||||||
|-----|------------|-----------|---------------|-----------|
|
|-----|------------|-----------|---------------|-----------|
|
||||||
| |peers |list | | |
|
|
||||||
| |peer |untrack | peer mhash | |
|
|
||||||
| |blob |create | file path | |
|
| |blob |create | file path | |
|
||||||
| |blob |create | pipe | |
|
| |blob |create | pipe | |
|
||||||
| |blob |find | | |
|
| |blob |find | | |
|
||||||
|
@ -36,6 +34,8 @@ You can override this value by specifying a `PIGEON_PATH` ENV var.
|
||||||
| |message |show | message mhash | |
|
| |message |show | message mhash | |
|
||||||
| |bundle |create | | |
|
| |bundle |create | | |
|
||||||
| |bundle |ingest | | |
|
| |bundle |ingest | | |
|
||||||
|
| X |peer |untrack | peer mhash | |
|
||||||
|
| X |peers |list | | |
|
||||||
| X |peer |block | peer mhash | |
|
| X |peer |block | peer mhash | |
|
||||||
| X |peer |follow | peer mhash | |
|
| X |peer |follow | peer mhash | |
|
||||||
| X |identity |show | | |
|
| X |identity |show | | |
|
||||||
|
|
|
@ -95,6 +95,17 @@ var peerFollowCmd = &cobra.Command{
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var peerUntrackedCmd = &cobra.Command{
|
||||||
|
Use: "untrack",
|
||||||
|
Short: "Stop following/blocking a peer",
|
||||||
|
Aliases: []string{"unblock", "unfollow"},
|
||||||
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
|
mHash := validateMhash(args[0])
|
||||||
|
removePeer(mHash)
|
||||||
|
fmt.Printf("Untracked %s\n", mHash)
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
// BootstrapCLI wires up all the relevant commands.
|
// BootstrapCLI wires up all the relevant commands.
|
||||||
func BootstrapCLI() {
|
func BootstrapCLI() {
|
||||||
rootCmd.AddCommand(versionCmd)
|
rootCmd.AddCommand(versionCmd)
|
||||||
|
@ -106,8 +117,8 @@ func BootstrapCLI() {
|
||||||
rootCmd.AddCommand(peerRootCmd)
|
rootCmd.AddCommand(peerRootCmd)
|
||||||
peerRootCmd.AddCommand(peerBlockCmd)
|
peerRootCmd.AddCommand(peerBlockCmd)
|
||||||
peerRootCmd.AddCommand(peerFollowCmd)
|
peerRootCmd.AddCommand(peerFollowCmd)
|
||||||
|
peerRootCmd.AddCommand(peerUntrackedCmd)
|
||||||
peerRootCmd.AddCommand(peerListCmd)
|
peerRootCmd.AddCommand(peerListCmd)
|
||||||
|
|
||||||
if err := rootCmd.Execute(); err != nil {
|
if err := rootCmd.Execute(); err != nil {
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
|
|
|
@ -20,13 +20,14 @@ type peer struct {
|
||||||
status PeerStatus
|
status PeerStatus
|
||||||
}
|
}
|
||||||
|
|
||||||
const createPeer = "INSERT INTO peers(mhash, status) VALUES(?1, ?2)"
|
const sqlCreatePeer = "INSERT INTO peers(mhash, status) VALUES(?1, ?2);"
|
||||||
const findPeerByStatus = "SELECT status FROM peers WHERE mhash=$1;"
|
const sqlFindPeerByStatus = "SELECT status FROM peers WHERE mhash=$1;"
|
||||||
const getAllPeers = "SELECT mhash, status FROM peers ORDER BY status DESC, mhash ASC;"
|
const sqlGetAllPeers = "SELECT mhash, status FROM peers ORDER BY status DESC, mhash ASC;"
|
||||||
|
const sqlRemovePeer = "DELETE FROM peers WHERE mhash=$1;"
|
||||||
|
|
||||||
func getPeerStatus(mHash string) PeerStatus {
|
func getPeerStatus(mHash string) PeerStatus {
|
||||||
var status PeerStatus
|
var status PeerStatus
|
||||||
row := getDB().QueryRow(findPeerByStatus, mHash)
|
row := getDB().QueryRow(sqlFindPeerByStatus, mHash)
|
||||||
switch err := row.Scan(&status); err {
|
switch err := row.Scan(&status); err {
|
||||||
case sql.ErrNoRows:
|
case sql.ErrNoRows:
|
||||||
return "unknown"
|
return "unknown"
|
||||||
|
@ -43,7 +44,7 @@ func addPeer(mHash string, status PeerStatus) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panicf("Failed to begin addPeer trx (0): %s", err)
|
panicf("Failed to begin addPeer trx (0): %s", err)
|
||||||
}
|
}
|
||||||
_, err2 := tx.Exec(createPeer, mHash, status)
|
_, err2 := tx.Exec(sqlCreatePeer, mHash, status)
|
||||||
if err2 != nil {
|
if err2 != nil {
|
||||||
// This .Commit() call never gets hit:
|
// This .Commit() call never gets hit:
|
||||||
err1 := tx.Rollback()
|
err1 := tx.Rollback()
|
||||||
|
@ -58,12 +59,31 @@ func addPeer(mHash string, status PeerStatus) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func removePeer(mHash string) {
|
||||||
|
tx, err := getDB().Begin()
|
||||||
|
if err != nil {
|
||||||
|
panicf("Failed to begin removePeer trx (0): %s", err)
|
||||||
|
}
|
||||||
|
_, err2 := tx.Exec(sqlRemovePeer, mHash)
|
||||||
|
if err2 != nil {
|
||||||
|
err1 := tx.Rollback()
|
||||||
|
if err1 != nil {
|
||||||
|
panicf("Failed to rollback removePeer (1): %s", err)
|
||||||
|
}
|
||||||
|
panic(fmt.Sprintf("Failure. Possible duplicate peer?: %s", err2))
|
||||||
|
}
|
||||||
|
err1 := tx.Commit()
|
||||||
|
if err1 != nil {
|
||||||
|
panicf("Failed to commit peer removal (2): %s", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func listPeers() []peer {
|
func listPeers() []peer {
|
||||||
var (
|
var (
|
||||||
status PeerStatus
|
status PeerStatus
|
||||||
mhash string
|
mhash string
|
||||||
)
|
)
|
||||||
rows, err := getDB().Query(getAllPeers)
|
rows, err := getDB().Query(sqlGetAllPeers)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panicf("showPeers query failure: %s", err)
|
panicf("showPeers query failure: %s", err)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue