simplify cleanup command

This commit is contained in:
Ted Unangst 2019-07-15 20:49:01 -04:00
parent a5aa1dbdcb
commit 4aba1ba5fd
4 changed files with 20 additions and 29 deletions

View File

@ -27,9 +27,9 @@ A list of available emus and memes appears in the funzone.
One should occasionally run `honk cleanup` to free up internal space in the
database. This deletes honks older than 30 days, but not those posted by a
user.
user. `honk cleanup [days]` may be used to adjust the timeframe.
One may also run `honk reduce [honker]` to delete honks older than 3 days.
One may also run `honk cleanup [honker]` to delete honks older than 3 days.
This is useful to reduce the space requirements from following image bots.
(Neither command runs vacuum, so the file size will not immediately shrink.)

33
honk.go
View File

@ -1507,19 +1507,19 @@ func serve() {
}
}
func cleanupdb(days int) {
db := opendatabase()
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)
doordie(db, "delete from files where fileid not in (select fileid from donks)")
}
func reducedb(honker string) {
func cleanupdb(arg string) {
db := opendatabase()
days, err := strconv.Atoi(arg)
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)
} 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)
}
doordie(db, "delete from files where fileid not in (select fileid from donks)")
}
@ -1589,7 +1589,6 @@ func ElaborateUnitTests() {
}
func main() {
var err error
cmd := "run"
if len(os.Args) > 1 {
cmd = os.Args[1]
@ -1614,19 +1613,11 @@ func main() {
case "adduser":
adduser()
case "cleanup":
days := 30
arg := "30"
if len(os.Args) > 2 {
days, err = strconv.Atoi(os.Args[2])
if err != nil {
log.Fatal(err)
arg = os.Args[2]
}
}
cleanupdb(days)
case "reduce":
if len(os.Args) < 3 {
log.Fatal("need a honker name")
}
reducedb(os.Args[2])
cleanupdb(arg)
case "ping":
if len(os.Args) < 4 {
fmt.Printf("usage: honk ping from to\n")

View File

@ -112,6 +112,6 @@ func upgradedb() {
default:
log.Fatalf("can't upgrade unknown version %d", dbversion)
}
cleanupdb(30)
cleanupdb("30")
os.Exit(0)
}