add missing deletes to the db cleanup

This commit is contained in:
Ted Unangst 2019-09-30 16:43:51 -04:00
parent 5c5676b14f
commit af6e825442
2 changed files with 66 additions and 8 deletions

View File

@ -368,20 +368,68 @@ func updatehonk(h *Honk) {
func cleanupdb(arg string) {
db := opendatabase()
days, err := strconv.Atoi(arg)
var sqlargs []interface{}
var where string
if err != nil {
honker := arg
expdate := time.Now().UTC().Add(-3 * 24 * time.Hour).Format(dbtimeformat)
doordie(db, "delete from donks where honkid in (select honkid from honks where dt < ? and whofore = 0 and honker = ?)", expdate, honker)
doordie(db, "delete from honks where dt < ? and whofore = 0 and honker = ?", expdate, honker)
where = "dt < ? and whofore = 0 and honker = ?"
sqlargs = append(sqlargs, expdate)
sqlargs = append(sqlargs, honker)
} else {
expdate := time.Now().UTC().Add(-time.Duration(days) * 24 * time.Hour).Format(dbtimeformat)
doordie(db, "delete from donks where honkid in (select honkid from honks where dt < ? and whofore = 0 and convoy not in (select convoy from honks where whofore = 2 or whofore = 3))", expdate)
doordie(db, "delete from honks where dt < ? and whofore = 0 and convoy not in (select convoy from honks where whofore = 2 or whofore = 3)", expdate)
where = "dt < ? and whofore = 0 and convoy not in (select convoy from honks where whofore = 2 or whofore = 3)"
sqlargs = append(sqlargs, expdate)
}
doordie(db, "delete from honks where " + where, sqlargs...)
doordie(db, "delete from donks where honkid not in (select honkid from honks)")
doordie(db, "delete from onts where honkid not in (select honkid from honks)")
doordie(db, "delete from places where honkid not in (select honkid from honks)")
doordie(db, "delete from filemeta where fileid not in (select fileid from donks)")
for _, u := range allusers() {
doordie(db, "delete from zonkers where userid = ? and wherefore = 'zonvoy' and zonkerid < (select zonkerid from zonkers where userid = ? and wherefore = 'zonvoy' order by zonkerid desc limit 1 offset 200)", u.UserID, u.UserID)
}
filexids := make(map[string]bool)
blobdb := openblobdb()
rows, err := blobdb.Query("select xid from filedata")
if err != nil {
log.Fatal(err)
}
for rows.Next() {
var xid string
err = rows.Scan(&xid)
if err != nil {
log.Fatal(err)
}
filexids[xid] = true
}
rows.Close()
rows, err = db.Query("select xid from filemeta")
for rows.Next() {
var xid string
err = rows.Scan(&xid)
if err != nil {
log.Fatal(err)
}
delete(filexids, xid)
}
rows.Close()
tx, err := blobdb.Begin()
if err != nil {
log.Fatal(err)
}
for xid, _ := range filexids {
_, err = tx.Exec("delete from filedata where xid = ?", xid)
if err != nil {
log.Fatal(err)
}
}
err = tx.Commit()
if err != nil {
log.Fatal(err)
}
}
var stmtHonkers, stmtDubbers, stmtSaveHonker, stmtUpdateFlavor, stmtUpdateCombos *sql.Stmt
@ -440,10 +488,7 @@ func prepareStatements(db *sql.DB) {
stmtSaveDonk = preparetodie(db, "insert into donks (honkid, fileid) values (?, ?)")
stmtDeleteDonks = preparetodie(db, "delete from donks where honkid = ?")
stmtSaveFile = preparetodie(db, "insert into filemeta (xid, name, description, url, media, local) values (?, ?, ?, ?, ?, ?)")
blobdb, err := sql.Open("sqlite3", blobdbname)
if err != nil {
log.Fatal(err)
}
blobdb := openblobdb()
stmtSaveFileData = preparetodie(blobdb, "insert into filedata (xid, media, content) values (?, ?, ?)")
stmtGetFileData = preparetodie(blobdb, "select media, content from filedata where xid = ?")
stmtFindXonk = preparetodie(db, "select honkid from honks where userid = ? and xid = ?")

13
util.go
View File

@ -287,6 +287,19 @@ func opendatabase() *sql.DB {
return db
}
func openblobdb() *sql.DB {
var err error
_, err = os.Stat(blobdbname)
if err != nil {
log.Fatalf("unable to open database: %s", err)
}
db, err := sql.Open("sqlite3", blobdbname)
if err != nil {
log.Fatalf("unable to open database: %s", err)
}
return db
}
func getconfig(key string, value interface{}) error {
m, ok := value.(*map[string]bool)
if ok {