From 0fc470a8d588cac1a51cc4b3e1a2237dc56041c9 Mon Sep 17 00:00:00 2001 From: grm Date: Fri, 18 Sep 2026 14:32:22 +0300 Subject: Special pages: a gallery page of the blog's images MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A page's kind says what it shows between its intro and outro: posts, as before, or something special. The first special kind is a gallery — every image in the files library as a masonry wall (CSS columns, no script), newest first, each linked to its full-size file. The page form lists the library's images with a Hide tick per picture; exclusions are stored (page_hidden_files) rather than inclusions so a new upload shows up without editing the page, and the design's own pictures — logo, favicon, header and background image — are never shown. Special pages keep the page chrome (menu, announcements, home, ordering) but hold no posts: the post forms skip them and a forced page id is refused. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01Sd8UPWrvyYCLj97JexNw3A --- internal/db/migrations/blog/00013_page_kind.sql | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 internal/db/migrations/blog/00013_page_kind.sql (limited to 'internal/db') diff --git a/internal/db/migrations/blog/00013_page_kind.sql b/internal/db/migrations/blog/00013_page_kind.sql new file mode 100644 index 0000000..072d53d --- /dev/null +++ b/internal/db/migrations/blog/00013_page_kind.sql @@ -0,0 +1,16 @@ +-- +goose Up +-- Special pages: a page's kind says what it shows instead of posts. The +-- first special kind is a gallery of the library's images; the images a +-- gallery leaves out are rows here, so a deleted file drops out by itself. +ALTER TABLE pages ADD COLUMN kind text NOT NULL DEFAULT 'posts' + CHECK (kind IN ('posts', 'gallery')); + +CREATE TABLE page_hidden_files ( + page_id bigint NOT NULL REFERENCES pages(id) ON DELETE CASCADE, + file_id uuid NOT NULL REFERENCES files(id) ON DELETE CASCADE, + PRIMARY KEY (page_id, file_id) +); + +-- +goose Down +DROP TABLE page_hidden_files; +ALTER TABLE pages DROP COLUMN kind; -- cgit v1.2.3