ensure deletion of old stuff such that we don't have a huge database.

This commit is contained in:
fiatjaf 2021-11-08 18:15:27 -03:00
parent c1c3d29723
commit 6359ad8776
4 changed files with 20 additions and 4 deletions

11
cleanup.go Normal file
View File

@ -0,0 +1,11 @@
package main
import "time"
// every hour, delete all very old events
func cleanupRoutine() {
for {
time.Sleep(60 * time.Minute)
db.Exec(`DELETE FROM event WHERE created_at < $1`, time.Now().AddDate(0, -3, 0))
}
}

View File

@ -191,8 +191,6 @@ func saveEvent(body []byte) error {
case event.KindSetMetadata:
// delete past set_metadata events from this user
db.Exec(`DELETE FROM event WHERE pubkey = $1 AND kind = 0`, evt.PubKey)
case event.KindTextNote:
// do nothing
case event.KindRecommendServer:
// delete past recommend_server events equal to this one
db.Exec(`DELETE FROM event WHERE pubkey = $1 AND kind = 2 AND content = $2`,
@ -200,6 +198,13 @@ func saveEvent(body []byte) error {
case event.KindContactList:
// delete past contact lists from this same pubkey
db.Exec(`DELETE FROM event WHERE pubkey = $1 AND kind = 3`, evt.PubKey)
default:
// delete all but the 10 most recent ones
db.Exec(`DELETE FROM event WHERE pubkey = $1 AND kind = $2 AND created_at < (
SELECT created_at FROM event WHERE pubkey = $1
ORDER BY created_at DESC OFFSET 10 LIMIT 1
)`,
evt.PubKey, evt.Kind)
}
// insert

View File

@ -39,6 +39,8 @@ func main() {
}
db.Mapper = reflectx.NewMapperFunc("json", sqlx.NameMapper)
go cleanupRoutine()
// NIP01
router.Path("/").Methods("GET").HandlerFunc(handleWebsocket)

View File

@ -1,5 +1,3 @@
// +build !lite
package main
import (