You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
2.0 KiB
66 lines
2.0 KiB
package main |
|
|
|
import ( |
|
"fmt" |
|
|
|
"git.kiefte.eu/lapingvino/infodump/message" |
|
) |
|
|
|
// A menu for the several parts of Sync: |
|
// saving messages to the local database |
|
// reading messages from the local database |
|
// reading messages from the network |
|
// writing messages to the network |
|
func SyncMenu() { |
|
// Present the user with a menu |
|
Menu([]MenuElements{ |
|
{"Save Messages to Database", SaveMessagesToDatabase}, |
|
{"Read Messages from Database", ReadMessagesFromDatabase}, |
|
{"Read Messages from Network", ReadMessagesFromNetwork}, |
|
{"Write Messages to Network", WriteMessagesToNetwork}, |
|
{"Back", func() {}}, |
|
}) |
|
} |
|
|
|
// Implementing the Sync Menu options |
|
// SaveMessagesToDatabase, ReadMessagesFromDatabase, ReadMessagesFromNetwork and WriteMessagesToNetwork |
|
|
|
// SaveMessagesToDatabase saves the messages in LocalMessages to the database |
|
func SaveMessagesToDatabase() { |
|
// Update the database with the messages in LocalMessages |
|
db := GetDatabase() |
|
// Put the messages in the database |
|
LocalMessages.Each(func(m *message.Message) { |
|
_, err := db.Exec("INSERT INTO messages(hash, message, nonce, timestamp) VALUES(?,?,?,?)", m.Stamp(), m.Message, m.Nonce, m.Timestamp) |
|
if err != nil { |
|
fmt.Println(err) |
|
} else { |
|
fmt.Println("Message", m.Stamp(), "saved to database") |
|
} |
|
}) |
|
} |
|
|
|
// ReadMessagesFromDatabase reads the messages from the database and adds them to LocalMessages |
|
func ReadMessagesFromDatabase() { |
|
// Get the messages from the database |
|
messages := GetMessagesFromDatabase(GetDatabase()) |
|
// Add the messages to LocalMessages |
|
LocalMessages.AddMany(messages) |
|
} |
|
|
|
// ReadMessagesFromNetwork reads the messages from the IPFS network and adds them to LocalMessages |
|
func ReadMessagesFromNetwork() { |
|
// Get the messages from the IPFS network |
|
// TODO: Implement this |
|
} |
|
|
|
// WriteMessagesToNetwork writes the messages in LocalMessages to the IPFS network |
|
func WriteMessagesToNetwork() { |
|
// Add the messages to the IPFS network |
|
cid, err := LocalMessages.AddToIPFS() |
|
if err != nil { |
|
fmt.Println(err) |
|
} else { |
|
fmt.Println("Messages synced to IPFS: ", cid) |
|
} |
|
}
|
|
|