わいえむねっと

Contents
Categories
Calendar
2026/08
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Monthly Archives
~2000/01
Recent Entries
RSS1.0
Templates
Information
Processed: 0.080 sec
Chashed: -
2026/08/13 Thu
コードブロックがある時にスマホからの表示がおかしかったのをずっと放置してたけど修正。

TweetVault②

アクセス改善

バックエンドへのアクセスが localhost になっていたのをポートフォワードで捻じ曲げていたけど、ポートフォワードなしで動くようにする。

frontend/src/lib/api.ts に下記コードがあり、.env に NEXT_PUBLIC_API_URL を定義してやればいいのねと思ったけどダメ。

const API_BASE_URL = (process.env.NEXT_PUBLIC_API_URL || 'http://localhost:8080') + '/api';

それならと、この定義を直接書き換えてみたけどダメ。は?

調べてみると、frontend/.next/server/app/page.js で API_BASE_URL が設定されていた。
で、そこの元はどこだと探すと docker-compose.yml。

  frontend:
    environment:
      - NEXT_PUBLIC_API_URL=http://localhost:8080

ここを仮想環境のアドレスに書き換えて解決。


データ反映の改善

タグを付与した後、しばらくしないと反映されないのをどうにかする。

調べた感じ、
  • DBには即時反映されている
  • APIを直接叩いてみると、単体取得では即時反映されているのに、ページ取得では即時反映されていない

なんでページ取得だと即時反映されないんだと思いながらDBの構造眺めてたらマテリアライズドビューが。
マテリアライズドビュー経由かどうかの差異だなこれ。

以下の対処で解決。
  • マテリアライズドビューと同じ内容のビューを別名で定義
  • 取得先が通常のビューからになるよう向き先を変更

backend/internal/models/materialized_view.go
@@ -31,3 +31,3 @@
 func (BookmarkView) TableName() string {
-    return "bookmark_views"
+    return "bookmark_views_normal"
 }


未整理ブックマークの表示

タグを付与していないデータだけを表示したい。
ダミーのタグを作成し、絞り込み条件でそのタグを指定された場合はタグのないデータを抽出するよう対応。

backend/internal/services/bookmark_service.go
@@ -202,3 +202,5 @@
     // Apply tag filter if provided
-    if tag != "" {
+    if tag == "untagged" {
+        query = query.Where("tags_json::jsonb = ?", "[]")
+    } else if tag != "" {
         query = query.Where("tags_json::jsonb @> ?", fmt.Sprintf(`[{"name":"%s"}]`, tag))