this repo has no description

feat(mostliked): trim posts table

+31
+19
cmd/mostliked/mostliked.go
··· 75 75 return draft, nil 76 76 } 77 77 78 + func trimPostsTable(ctx context.Context, queries *mostliked.Queries) { 79 + ticker := time.NewTicker(1 * time.Minute) 80 + defer ticker.Stop() 81 + 82 + for { 83 + select { 84 + case <-ticker.C: 85 + log.Println("trimming posts") 86 + if err := queries.TrimPosts(ctx); err != nil { 87 + log.Println("error trimming posts") 88 + } 89 + } 90 + } 91 + } 92 + 78 93 func processEvents(events <-chan []byte) { 79 94 ctx := context.Background() 80 95 ··· 85 100 if _, err := db.ExecContext(ctx, ddl); err != nil { 86 101 log.Fatal("couldn't create tables") 87 102 } 103 + defer db.Close() 104 + 88 105 queries := mostliked.New(db) 89 106 90 107 drafts := ccache.New(ccache.Configure[DraftPost]().MaxSize(50_000).GetsPerPromote(1)) ··· 102 119 FromLanguages(languages...). 103 120 WithPreloadedLanguageModels(). 104 121 Build() 122 + 123 + go trimPostsTable(ctx, queries) 105 124 106 125 for evt := range events { 107 126 var like appbsky.FeedLike
+3
cmd/mostliked/query.sql
··· 6 6 7 7 -- name: UpdateLikes :exec 8 8 update posts set likes = likes + 1 where uri = ?; 9 + 10 + -- name: TrimPosts :exec 11 + delete from posts where create_ts < unixepoch('now', '-24 hours');
+9
pkg/mostliked/query.sql.go
··· 38 38 return err 39 39 } 40 40 41 + const trimPosts = `-- name: TrimPosts :exec 42 + delete from posts where create_ts < unixepoch('now', '-24 hours') 43 + ` 44 + 45 + func (q *Queries) TrimPosts(ctx context.Context) error { 46 + _, err := q.db.ExecContext(ctx, trimPosts) 47 + return err 48 + } 49 + 41 50 const updateLikes = `-- name: UpdateLikes :exec 42 51 update posts set likes = likes + 1 where uri = ? 43 52 `