167f6b27f3a1 — Ted Unangst a month ago
backup code needs some more bludgeoning
1 files changed, 22 insertions(+), 8 deletions(-)

M backupdb.go
M backupdb.go +22 -8
@@ 45,7 45,12 @@ func svalbard(dirname string) {
 		elog.Fatalf("can't create directory: %s", dirname)
 	}
 	now := time.Now().Unix()
-	backupdbname := fmt.Sprintf("%s/honk-%d.db", dirname, now)
+	dirname = fmt.Sprintf("%s/honk-%d", dirname, now)
+	err = os.Mkdir(dirname, 0700)
+	if err != nil {
+		elog.Fatalf("can't create directory: %s", dirname)
+	}
+	backupdbname := fmt.Sprintf("%s/honk.db", dirname)
 	backup, err := sql.Open("sqlite3", backupdbname)
 	if err != nil {
 		elog.Fatalf("can't open backup database")

          
@@ 154,18 159,26 @@ func svalbard(dirname string) {
 	}
 	filexids := make(map[string]bool)
 	for f := range fileids {
-		rows = qordie(orig, "select fileid, xid, name, description, url, media, local from filemeta where fileid = ?", f)
+		rows = qordie(orig, "select fileid, xid, name, description, url, media, local, meta from filemeta where fileid = ?", f)
 		for rows.Next() {
 			var fileid int64
-			var xid, name, description, url, media string
+			var xid, name, description, url, media, meta string
 			var local int64
-			scanordie(rows, &fileid, &xid, &name, &description, &url, &media, &local)
+			scanordie(rows, &fileid, &xid, &name, &description, &url, &media, &local, &meta)
 			filexids[xid] = true
-			doordie(tx, "insert into filemeta (fileid, xid, name, description, url, media, local) values (?, ?, ?, ?, ?, ?, ?)", fileid, xid, name, description, url, media, local)
+			doordie(tx, "insert into filemeta (fileid, xid, name, description, url, media, local, meta) values (?, ?, ?, ?, ?, ?, ?, ?)", fileid, xid, name, description, url, media, local, meta)
 		}
 		rows.Close()
 	}
-
+	for xid := range filexids {
+		rows = qordie(orig, "select media, hash from filehashes where xid = ?", xid)
+		for rows.Next() {
+			var media, hash string
+			scanordie(rows, &media, &hash)
+			doordie(tx, "insert into filehashes (xid, media, hash) values (?, ?, ?)", xid, media, hash)
+		}
+		rows.Close()
+	}
 	rows = qordie(orig, "select key, value from config")
 	for rows.Next() {
 		var key string

          
@@ 184,11 197,11 @@ func svalbard(dirname string) {
 	var blob *sql.DB
 	var filesavepath string
 	if storeTheFilesInTheFileSystem {
-		filesavepath = fmt.Sprintf("%s/attachments-%d", dirname, now)
+		filesavepath = fmt.Sprintf("%s/attachments", dirname)
 		os.Mkdir(filesavepath, 0700)
 		filesavepath += "/"
 	} else {
-		backupblobname := fmt.Sprintf("%s/blob-%d.db", dirname, now)
+		backupblobname := fmt.Sprintf("%s/blob.db", dirname)
 		blob, err = sql.Open("sqlite3", backupblobname)
 		if err != nil {
 			elog.Fatalf("can't open backup blob database")

          
@@ 238,4 251,5 @@ func svalbard(dirname string) {
 		}
 		blob.Close()
 	}
+	fmt.Printf("backup saved to %s\n", dirname)
 }