-- Route tipi sözlüğü (OFİS RoutingType benzeri): operasyon / önbellek profili / render grubu.
-- routes.type ile mantıksal eşleşme; uygulama kodunda whitelist: frontend/lib/route-types-registry.ts
-- idempotent

CREATE TABLE IF NOT EXISTS route_types (
  type_key VARCHAR(32) NOT NULL,
  label_tr VARCHAR(128) NULL DEFAULT NULL,
  cache_profile VARCHAR(32) NOT NULL DEFAULT 'default',
  renderer_hint VARCHAR(64) NOT NULL DEFAULT 'unknown',
  description TEXT NULL,
  is_active TINYINT(1) NOT NULL DEFAULT 1,
  created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (type_key),
  KEY idx_route_types_active (is_active)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- cache_profile: frontend/lib/cache-policy.ts ile uyumlu mantıksal anahtar (sayısal TTL kodda kalır).
-- renderer_hint: güvenli sabit — dinamik class/component yükleme YOK; catch-all içinde dal seçimi için dokümantasyon.

INSERT INTO route_types (type_key, label_tr, cache_profile, renderer_hint, description)
VALUES
  ('listing', 'Ürün listesi (kökn)', 'listing', 'catalog_listing', 'Kategori filtresi + ürün grid (/listing).'),
  ('product_search', 'Ürün arama kökü', 'product_search', 'catalog_listing', 'Panelden atanabilir arama URL''si; listing ile aynı grid.'),
  ('product', 'Ürün detay', 'product', 'product_detail', 'Tek ürün sayfası.'),
  ('category', 'Kategori koleksiyonu', 'category', 'category_listing', 'Slug ile kategori ürün listesi.'),
  ('page', 'CMS sayfası', 'page', 'cms_page', 'site_pages gövdesi / bloklar.')
ON DUPLICATE KEY UPDATE
  label_tr = VALUES(label_tr),
  cache_profile = VALUES(cache_profile),
  renderer_hint = VALUES(renderer_hint),
  description = VALUES(description),
  is_active = VALUES(is_active);
