main pico / cmd / scripts / shasum / shasum.go
Antonio Mika  ·  2026-10-10
 1package main
 2
 3import (
 4	"log/slog"
 5	"os"
 6
 7	"github.com/picosh/pico/pkg/db/postgres"
 8	"github.com/picosh/pico/pkg/shared"
 9)
10
11func main() {
12	logger := slog.Default()
13	picoDb := postgres.NewDB(os.Getenv("DATABASE_URL"), logger)
14
15	logger.Info("fetching all posts")
16	posts, err := picoDb.FindPosts()
17	if err != nil {
18		panic(err)
19	}
20
21	empty := 0
22	diff := 0
23	for _, post := range posts {
24		nextShasum := shared.Shasum([]byte(post.Text))
25		if post.Shasum == "" {
26			empty += 1
27		} else if post.Shasum != nextShasum {
28			diff += 1
29		}
30		post.Shasum = nextShasum
31
32		_, err := picoDb.UpdatePost(post)
33		if err != nil {
34			panic(err)
35		}
36	}
37
38	logger.Info("empty, diff", "empty", empty, "diff", diff)
39}