add rpdata-restore command.
This commit is contained in:
+37
-13
@@ -24,6 +24,8 @@ var flagPassword = flag.String("password", "", "")
|
||||
var flagMechanism = flag.String("mechanism", "", "")
|
||||
var flagOutputFile = flag.String("outfile", "dump.zip", "The file to write to.")
|
||||
var flagIncludeKeys = flag.Bool("include-keys", false, "Whether to include the keys.")
|
||||
var flagIncludeUsers = flag.Bool("include-users", false, "Whether to include the keys.")
|
||||
var flagIncludeUnlisted = flag.Bool("include-unlisted", false, "Whether to include unlisted stuff.")
|
||||
|
||||
func main() {
|
||||
flag.Parse()
|
||||
@@ -41,6 +43,8 @@ func main() {
|
||||
Mechanism: *flagMechanism,
|
||||
}
|
||||
|
||||
blacklist := make(map[string]bool)
|
||||
|
||||
mongodb.DisableFixes = true
|
||||
|
||||
db, err := database.Init(cfg)
|
||||
@@ -105,6 +109,10 @@ func main() {
|
||||
log.Println("No changes to dump.")
|
||||
}
|
||||
for i, change := range changes {
|
||||
if !*flagIncludeUnlisted && !change.Listed {
|
||||
continue
|
||||
}
|
||||
|
||||
err := writeJsonFile(zipWriter, "change", i, change.ID, change.Date, change)
|
||||
if err != nil {
|
||||
log.Println("Failed to write change", change.ID, ":", err)
|
||||
@@ -127,6 +135,11 @@ func main() {
|
||||
log.Println("No stories to dump.")
|
||||
}
|
||||
for i, story := range stories {
|
||||
if !*flagIncludeUnlisted && !story.Listed {
|
||||
blacklist[story.ID] = true
|
||||
continue
|
||||
}
|
||||
|
||||
err := writeJsonFile(zipWriter, "story", i, story.ID, story.CreatedDate, story)
|
||||
if err != nil {
|
||||
log.Println("Failed to write story", story.ID, ":", err)
|
||||
@@ -143,6 +156,11 @@ func main() {
|
||||
log.Println("No chapters to dump.")
|
||||
}
|
||||
for i, chapter := range chapters {
|
||||
if !*flagIncludeUnlisted && blacklist[chapter.StoryID] {
|
||||
blacklist[chapter.ID] = true
|
||||
continue
|
||||
}
|
||||
|
||||
err := writeJsonFile(zipWriter, "chapter", i, chapter.ID, chapter.CreatedDate, chapter)
|
||||
if err != nil {
|
||||
log.Println("Failed to write chapter", chapter.ID, ":", err)
|
||||
@@ -159,6 +177,10 @@ func main() {
|
||||
log.Println("No comments to dump.")
|
||||
}
|
||||
for i, comment := range comments {
|
||||
if !*flagIncludeUnlisted && blacklist[comment.ChapterID] {
|
||||
continue
|
||||
}
|
||||
|
||||
err := writeJsonFile(zipWriter, "comment", i, comment.ID, comment.CreatedDate, comment)
|
||||
if err != nil {
|
||||
log.Println("Failed to write comment", comment.ID, ":", err)
|
||||
@@ -191,26 +213,28 @@ func main() {
|
||||
log.Println("No logs to dump.")
|
||||
}
|
||||
for i, logEntry := range logs {
|
||||
err := writeJsonFile(zipWriter, "post", i, logEntry.ID, logEntry.Date, logEntry)
|
||||
err := writeJsonFile(zipWriter, "log", i, logEntry.ID, logEntry.Date, logEntry)
|
||||
if err != nil {
|
||||
log.Println("Failed to write post", logEntry.ID, ":", err)
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
log.Println("Dumping users...")
|
||||
users, err := db.Users().List(ctx)
|
||||
if err != nil {
|
||||
log.Println("Failed to get users:", err)
|
||||
}
|
||||
if len(users) == 0 {
|
||||
log.Println("No users to dump.")
|
||||
}
|
||||
for i, userEntry := range users {
|
||||
err := writeJsonFile(zipWriter, "user", i, userEntry.ID, time.Now(), userEntry)
|
||||
if *flagIncludeUsers {
|
||||
log.Println("Dumping users...")
|
||||
users, err := db.Users().List(ctx)
|
||||
if err != nil {
|
||||
log.Println("Failed to write user", userEntry.ID, ":", err)
|
||||
continue
|
||||
log.Println("Failed to get users:", err)
|
||||
}
|
||||
if len(users) == 0 {
|
||||
log.Println("No users to dump.")
|
||||
}
|
||||
for i, userEntry := range users {
|
||||
err := writeJsonFile(zipWriter, "user", i, userEntry.ID, time.Now(), userEntry)
|
||||
if err != nil {
|
||||
log.Println("Failed to write user", userEntry.ID, ":", err)
|
||||
continue
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user