TODO: Finish messageExists(mhash) helper

This commit is contained in:
Netscape Navigator 2020-11-08 09:39:17 -06:00
parent df61290c12
commit f3580b8c8c
6 changed files with 35 additions and 23 deletions

View File

@ -53,13 +53,7 @@ func fileExists(filename string) bool {
func blobExists(mhash string) bool {
p1, fname := pathAndFilename(mhash)
p2 := path.Join(p1, fname)
result := fileExists(p2)
if result {
fmt.Printf("$$$$$ GOT IT %s\n", p2)
} else {
fmt.Printf("$$$$$ NOPE %s\n", p2)
}
return result
return fileExists(p2)
}
func addBlob(mhash string, data []byte) string {

View File

@ -19,3 +19,9 @@ func encodePeerMhash(pubKey []byte) string {
func encodeBlobMhash(sha256 []byte) string {
return BlobSigil + B32Encode(sha256[:])
}
func encodeMessageMhash(b32signature string) string {
sigData := B32Decode(b32signature)
shaData := getSha256(sigData)
return MessageSigil + B32Encode(shaData)
}

View File

@ -7,15 +7,23 @@ import (
"path/filepath"
)
const insertMessageQuery = "INSERT INTO messages(author, depth, kind, lipmaa, prev, signature) VALUES(?1, ?2, ?3, ?4, ?5, ?6)"
const insertMessageQuery = "INSERT INTO messages(author, depth, kind, lipmaa, prev, signature, mhash) VALUES(?1, ?2, ?3, ?4, ?5, ?6, $7)"
const insertBodyItemQuery = "INSERT INTO body_items(parent, key, value, rank) VALUES(?1, ?2, ?3, ?4)"
func ingestOneMessage(msg pigeonMessage, blobIndex map[string]bool) {
if getPeerStatus(msg.author) == following {
tx, err1 := getDB().Begin()
check(err1, "ingestOneMessage: Can't open DB: %s", err1)
results, err2 := tx.Exec(insertMessageQuery, msg.author, msg.depth, msg.kind, msg.lipmaa, msg.prev, msg.signature)
rollbackCheck(tx, err2, "Failed to save message %s", msg.signature)
mhash := encodeMessageMhash(msg.signature)
results, err2 := tx.Exec(insertMessageQuery,
msg.author,
msg.depth,
msg.kind,
msg.lipmaa,
msg.prev,
msg.signature,
mhash)
rollbackCheck(tx, err2, "Failed to save message %s. %s", msg.signature, err2)
parent, err3 := results.LastInsertId()
rollbackCheck(tx, err3, "Failed to get last ID for message %s", msg.signature)
@ -50,7 +58,6 @@ func ingestBlobs(p string, blobIndex map[string]bool) {
mhash, data := getMhashForFile(blobPath)
if blobIndex[mhash] {
fmt.Printf("Ingesting %s\n", mhash)
addBlob(mhash, data)
blobIndex[mhash] = false
} else {

View File

@ -25,15 +25,14 @@ func TestImportBundle(t *testing.T) {
}
}
t.Fatal("Next step: uncomment code below")
// messages := []string{
// "TEXT.RGKRHC0APNN9FCJTVBN1NR1ZYQ9ZY34PYYASSMJ6016S30ZTWHR0",
// "TEXT.V52B1GH1XS8K1QKJG3AK127XYA23E82J0A2ZQTJ08TF8NZN2A1Y0",
// "TEXT.Z3QS1HPX756E22XWKXAXH7NTSTJGY0AHEM9KQNATTC6HHCACZGN0",
// }
// for _, mhash := range messages {
// if !messageExists(mhash) {
// t.Fatalf("Can't find message: %s", mhash)
// }
// }
messages := []string{
"TEXT.RGKRHC0APNN9FCJTVBN1NR1ZYQ9ZY34PYYASSMJ6016S30ZTWHR0",
"TEXT.V52B1GH1XS8K1QKJG3AK127XYA23E82J0A2ZQTJ08TF8NZN2A1Y0",
"TEXT.Z3QS1HPX756E22XWKXAXH7NTSTJGY0AHEM9KQNATTC6HHCACZGN0",
}
for _, mhash := range messages {
if !messageExists(mhash) {
t.Fatalf("Can't find message: %s", mhash)
}
}
}

5
project/message.go Normal file
View File

@ -0,0 +1,5 @@
package main
func messageExists(mhash string) bool {
return false
}

View File

@ -36,7 +36,8 @@ var migrations = []migration{
kind string NOT NULL,
lipmaa string NOT NULL,
prev string NOT NULL,
signature string NOT NULL
signature string NOT NULL,
mhash string NOT NULL
);
`,
down: `DROP TABLE IF EXISTS messages`,