- commit
- 954b9b8
- parent
- 894e7de
- author
- Eric Bower
- date
- 2025-01-25 21:58:40 -0500 EST
chore(pgs): cleanup deprecated buckets
3 files changed,
+78,
-9
1@@ -0,0 +1,77 @@
2+package main
3+
4+import (
5+ "context"
6+ "net/url"
7+
8+ "github.com/minio/minio-go/v7"
9+ "github.com/minio/minio-go/v7/pkg/credentials"
10+ "github.com/picosh/pico/db/postgres"
11+ "github.com/picosh/pico/prose"
12+ "github.com/picosh/pico/shared"
13+)
14+
15+func bail(err error) {
16+ if err != nil {
17+ panic(err)
18+ }
19+}
20+
21+func main() {
22+ cfg := prose.NewConfigSite()
23+ logger := cfg.Logger
24+ picoDb := postgres.NewDB(cfg.DbURL, logger)
25+ endpoint, err := url.Parse(cfg.MinioURL)
26+ bail(err)
27+ ssl := endpoint.Scheme == "https"
28+ mClient, err := minio.New(endpoint.Host, &minio.Options{
29+ Creds: credentials.NewStaticV4(cfg.MinioUser, cfg.MinioPass, ""),
30+ Secure: ssl,
31+ })
32+ bail(err)
33+
34+ users, err := picoDb.FindUsers()
35+ bail(err)
36+ ctx := context.TODO()
37+
38+ for _, user := range users {
39+ logger.Info("deleting old buckets", "user", user.Name)
40+ bucketName := shared.GetImgsBucketName(user.ID)
41+
42+ exists, err := mClient.BucketExists(ctx, bucketName)
43+ if err != nil {
44+ logger.Error("bucket exists", "err", err)
45+ }
46+
47+ if !exists {
48+ continue
49+ }
50+
51+ objectsCh := make(chan minio.ObjectInfo)
52+ go func() {
53+ defer close(objectsCh)
54+ opts := minio.ListObjectsOptions{Prefix: "", Recursive: true}
55+ for object := range mClient.ListObjects(ctx, bucketName, opts) {
56+ logger.Info("object", "name", object.Key)
57+ if object.Err != nil {
58+ logger.Error("list objects", "err", err)
59+ }
60+ objectsCh <- object
61+ }
62+ }()
63+
64+ errorCh := mClient.RemoveObjects(ctx, bucketName, objectsCh, minio.RemoveObjectsOptions{})
65+
66+ for e := range errorCh {
67+ logger.Error("remove obj", "err", e)
68+ }
69+
70+ logger.Info("removing bucket", "user", user.Name, "bucket", bucketName)
71+ err = mClient.RemoveBucket(ctx, bucketName)
72+ if err != nil {
73+ logger.Error("remove bucket", "err", err)
74+ }
75+
76+ logger.Info("Success!", "user", user.Name)
77+ }
78+}
+0,
-8
1@@ -30,10 +30,6 @@ services:
2 - .env.prod
3 volumes:
4 - ./data/minio-data:/data
5- deploy:
6- resources:
7- limits:
8- cpus: '0.3'
9 pipemgr:
10 env_file:
11 - .env.prod
12@@ -45,10 +41,6 @@ services:
13 volumes:
14 - ./data/imgs-storage/data:/storage/imgs
15 - ./data/pgs-storage/data:/storage/pgs
16- deploy:
17- resources:
18- limits:
19- cpus: '0.3'
20 pastes-caddy:
21 image: ghcr.io/picosh/pico/caddy:latest
22 restart: always
+1,
-1
1@@ -214,7 +214,7 @@ func (c *Cmd) stats(cfgMaxSize uint64) error {
2 storageMax := ff.Data.StorageMax
3
4 bucketName := shared.GetAssetBucketName(c.User.ID)
5- bucket, err := c.Store.UpsertBucket(bucketName)
6+ bucket, err := c.Store.GetBucket(bucketName)
7 if err != nil {
8 return err
9 }