feat: add author-username search to feed/gists/projects listings and partial-index migration

Extend `database.text_search_clause` with an `author_field` parameter that resolves username matches to user UIDs, enabling author-username search across the three public listings (`/feed`, `/gists`, `/projects`). Update the corresponding API docs and README route descriptions to reflect the new search scope. Add six partial indexes (`idx_comments_target_live`, `idx_votes_target_live`, `idx_reactions_target_live`, `idx_gists_live_created`, `idx_projects_live_created`, `idx_attachments_user_created_live`) to optimize filtered queries on non-deleted rows. Introduce a hot-settings cache (`_hot_settings`) with a 2-second TTL for `maintenance_mode`, `rate_limit_per_minute`, and `rate_limit_window_seconds`, plus a periodic rate-limit store sweep (`_sweep_rate_limit_store`) to evict stale IP entries every 60 seconds. Add `GZipMiddleware` to the FastAPI app for response compression.
This commit is contained in:
2026-06-19 22:24:51 +00:00
parent d10f1af118
commit e393722600
22 changed files with 269 additions and 52 deletions
+3 -3
View File
@@ -112,7 +112,7 @@ ACTIONS: tuple[Action, ...] = (
params=(
query("tab", "Feed tab to view."),
query("topic", "Filter by topic."),
query("search", "Search post title and content."),
query("search", "Search post title, content, and author username."),
query("before", "Pagination cursor."),
),
),
@@ -222,7 +222,7 @@ ACTIONS: tuple[Action, ...] = (
requires_auth=False,
params=(
query("tab", "Projects tab."),
query("search", "Search query."),
query("search", "Search project title, description, and author username."),
query("user_uid", "Filter by owner uid."),
query("project_type", "Filter by project type."),
query("before", "Pagination cursor."),
@@ -1107,7 +1107,7 @@ ACTIONS: tuple[Action, ...] = (
params=(
query("language", "Filter by language."),
query("user_uid", "Filter by owner uid."),
query("search", "Search gist title and description."),
query("search", "Search gist title, description, and author username."),
query("before", "Pagination cursor."),
),
),