From 7351756056c9225d41d3b9ce30fac25783ece4d3 Mon Sep 17 00:00:00 2001 From: root Date: Mon, 27 Apr 2026 11:46:05 +0500 Subject: [PATCH] make all books public by default (revert visibility gating) --- backend/internal/storage/store.go | 3 +- .../20260427000001_make_all_books_public.go | 42 +++++++++++++++++++ 2 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 backend/migrations/20260427000001_make_all_books_public.go diff --git a/backend/internal/storage/store.go b/backend/internal/storage/store.go index f0926ad..395377f 100644 --- a/backend/internal/storage/store.go +++ b/backend/internal/storage/store.go @@ -86,12 +86,11 @@ func (s *Store) WriteMetadata(ctx context.Context, meta domain.BookMeta) error { return fmt.Errorf("WriteMetadata: %w", err) } if err == ErrNotFound { - // New scraped book — default to admin_only visibility. postPayload := make(map[string]any, len(patchPayload)+1) for k, v := range patchPayload { postPayload[k] = v } - postPayload["visibility"] = domain.VisibilityAdminOnly + postPayload["visibility"] = domain.VisibilityPublic postErr := s.pb.post(ctx, "/api/collections/books/records", postPayload, nil) if postErr == nil { return nil diff --git a/backend/migrations/20260427000001_make_all_books_public.go b/backend/migrations/20260427000001_make_all_books_public.go new file mode 100644 index 0000000..c776a80 --- /dev/null +++ b/backend/migrations/20260427000001_make_all_books_public.go @@ -0,0 +1,42 @@ +package migrations + +import ( + "github.com/pocketbase/pocketbase/core" + m "github.com/pocketbase/pocketbase/migrations" +) + +func init() { + m.Register(func(app core.App) error { + coll, err := app.FindCollectionByNameOrId("books") + if err != nil { + return err + } + + if coll.Fields.GetByName("visibility") == nil { + coll.Fields.Add(&core.TextField{Name: "visibility"}) + if err := app.Save(coll); err != nil { + return err + } + } + + const perPage = 200 + for page := 1; ; page++ { + records, err := app.FindRecordsByFilter( + "books", `visibility="admin_only"`, "+id", perPage, (page-1)*perPage, nil, + ) + if err != nil || len(records) == 0 { + break + } + for _, rec := range records { + rec.Set("visibility", "public") + _ = app.Save(rec) + } + if len(records) < perPage { + break + } + } + return nil + }, func(app core.App) error { + return nil + }) +} \ No newline at end of file