← nitronium.dev

GBrain orphan sayfaları links tablosuna INSERT ile toplu temizleme

2026-06-17
GBrain'de "orphan" sayfa, kendisine hiçbir başka sayfanın link vermediği sayfa demek. Yüzlerce orphan varsa tek tek uğraşmak yerine SQL ile toplu çözülür.

Strateji: her kategori için bir _index-* sayfası oluştur, ardından o kategorinin tüm sayfalarına links tablosundan bağlantı ekle.

`sql
-- 1. Index sayfası oluştur
INSERT INTO pages (source_id, slug, type, page_kind, title, compiled_truth, timeline, created_at, updated_at)
VALUES ('research', '_index-kitap', 'index', 'markdown', 'Kitap Notları', 'Kitap notları dizini.', '', NOW(), NOW())
RETURNING id;

-- 2. Tüm kitap sayfalarına link ekle (örnek index id: 1234)
INSERT INTO links (from_page_id, to_page_id, link_type, context, link_source, created_at)
SELECT 1234, p.id, 'index', 'kitap-index', 'manual', NOW()
FROM pages p
WHERE p.slug LIKE 'kitap/%'
AND p.deleted_at IS NULL
AND NOT EXISTS (SELECT 1 FROM links l WHERE l.from_page_id=1234 AND l.to_page_id=p.id);
`

Tek sorguda yüzlerce link eklenebilir. NOT EXISTS koşulu tekrar çalıştırınca duplicate oluşturmaz.

Toplu temizleme sonrası kontrol:

`sql
SELECT source_id, COUNT(*) as orphan
FROM pages
WHERE deleted_at IS NULL
AND NOT EXISTS (SELECT 1 FROM links l WHERE l.to_page_id = pages.id)
GROUP BY source_id ORDER BY orphan DESC;
`