cleanup command to collect database garbage

This commit is contained in:
Ted Unangst 2019-05-21 14:06:17 -04:00
parent a919fed6f9
commit f55e212238
3 changed files with 14 additions and 0 deletions

View File

@ -59,6 +59,12 @@ Custom emus may be provided by creating and populating the emus directory.
emus may be referenced when composing a honk via colon wrapping. How pleasant. emus may be referenced when composing a honk via colon wrapping. How pleasant.
This :example: will be replaced by emus/example.png. This :example: will be replaced by emus/example.png.
-- cleanup
One may occasionally run `honk cleanup` to free up internal space in the
database. (This does not run vacuum, so the file size will not immediately
shrink.)
-- proxy -- proxy
honk requires a TLS terminating reverse proxy be configured. It communicates honk requires a TLS terminating reverse proxy be configured. It communicates

View File

@ -1302,6 +1302,11 @@ func serve() {
} }
} }
func cleanupdb() {
db := opendatabase()
doordie(db, "delete from files where fileid not in (select fileid from donks)")
}
var stmtHonkers, stmtDubbers, stmtSaveHonker, stmtUpdateFlavor, stmtUpdateCombos *sql.Stmt var stmtHonkers, stmtDubbers, stmtSaveHonker, stmtUpdateFlavor, stmtUpdateCombos *sql.Stmt
var stmtOneXonk, stmtPublicHonks, stmtUserHonks, stmtHonksByCombo, stmtHonksByConvoy *sql.Stmt var stmtOneXonk, stmtPublicHonks, stmtUserHonks, stmtHonksByCombo, stmtHonksByConvoy *sql.Stmt
var stmtHonksForUser, stmtHonksForMe, stmtSaveDub *sql.Stmt var stmtHonksForUser, stmtHonksForMe, stmtSaveDub *sql.Stmt
@ -1403,6 +1408,8 @@ func main() {
getconfig("servername", &serverName) getconfig("servername", &serverName)
prepareStatements(db) prepareStatements(db)
switch cmd { switch cmd {
case "cleanup":
cleanupdb()
case "ping": case "ping":
if len(os.Args) < 4 { if len(os.Args) < 4 {
fmt.Printf("usage: honk ping from to\n") fmt.Printf("usage: honk ping from to\n")

View File

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