repos / pico

pico services - prose.sh, pastes.sh, imgs.sh, feeds.sh, pgs.sh
git clone https://github.com/picosh/pico.git

pico / cmd / scripts / shasum
Eric Bower · 08 Apr 24

shasum.go

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