← 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;
`