From b79c894575b4153eb2a6598a7749b1026e286f2b Mon Sep 17 00:00:00 2001 From: Bill Thiede Date: Sat, 29 Mar 2014 22:39:00 -0700 Subject: [PATCH] Simple util to print original email based on hash. --- cmd/dumporiginal/dumporiginal.go | 59 ++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 cmd/dumporiginal/dumporiginal.go diff --git a/cmd/dumporiginal/dumporiginal.go b/cmd/dumporiginal/dumporiginal.go new file mode 100644 index 0000000..2be048c --- /dev/null +++ b/cmd/dumporiginal/dumporiginal.go @@ -0,0 +1,59 @@ +package main + +import ( + "database/sql" + "flag" + "fmt" + "os" + + "github.com/golang/glog" + _ "github.com/lib/pq" +) + +func fetchMessage(db *sql.DB, hash string) error { + rows, err := db.Query(` +SELECT + blob +FROM + original +WHERE + hash = $1 +`, hash) + if err != nil { + return err + } + var b []byte + + for rows.Next() { + if err := rows.Scan(&b); err != nil { + return err + } + fmt.Println(string(b)) + } + if err := rows.Err(); err != nil { + return err + } + return nil +} + +func main() { + defer glog.Flush() + flag.Parse() + + // TODO(wathiede): make a set of flags. + db, err := sql.Open("postgres", "user=gomail dbname=gomail sslmode=disable") + if err != nil { + glog.Fatal(err) + } + + if flag.NArg() == 0 { + fmt.Println("Must specify message hashes to print") + os.Exit(1) + } + + for _, hash := range flag.Args() { + if err := fetchMessage(db, hash); err != nil { + glog.Fatal(err) + } + } +}