# HG changeset patch # User Ted Unangst # Date 1712118938 14400 # Wed Apr 03 00:35:38 2024 -0400 # Node ID 167f6b27f3a129458972930344f021a09e244b47 # Parent f381c9b1afd02965a2431b1c70168678abc32d2f backup code needs some more bludgeoning diff --git a/backupdb.go b/backupdb.go --- a/backupdb.go +++ b/backupdb.go @@ -45,7 +45,12 @@ 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 @@ } 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 @@ 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 @@ } blob.Close() } + fmt.Printf("backup saved to %s\n", dirname) }