-- Admin rolü hatası düzeltme scripti
-- Bu scripti çalıştırmadan önce mevcut admins kaydını silin veya güncelleyin

-- 1. Önce admin_roles tablosunu kontrol et ve oluştur (yoksa)
CREATE TABLE IF NOT EXISTS `admin_roles` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `role_name` varchar(50) NOT NULL COMMENT 'superadmin, admin, moderator, viewer',
  `role_description` text DEFAULT 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 (`id`),
  UNIQUE KEY `role_name` (`role_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_turkish_ci;

-- 2. Admin rollerini ekle (IGNORE kullanarak varsa tekrar ekleme)
INSERT IGNORE INTO `admin_roles` (`id`, `role_name`, `role_description`) VALUES
(1, 'superadmin', 'Sistem yöneticisi - Tüm yetkilere sahip'),
(2, 'admin', 'Yönetici - Çoğu yetkiye sahip'),
(3, 'moderator', 'Moderatör - Sınırlı yetkilere sahip'),
(4, 'viewer', 'Ziyaretçi - Sadece görüntüleme yetkisi');

-- 3. Mevcut admin kullanıcısını güncelle (varsa)
UPDATE `admins` SET `role_id` = 1 WHERE `username` = 'admin';

-- 4. Eğer admin kullanıcısı yoksa ekle
INSERT IGNORE INTO `admins` (`username`, `email`, `password`, `full_name`, `role_id`) VALUES 
('admin', 'admin@eticaret.com', 'admin', 'Site Yöneticisi', 1);

-- 5. Foreign key kısıtlamasını kontrol et ve oluştur (yoksa)
-- Önce mevcut foreign key'i kaldır (varsa)
ALTER TABLE `admins` DROP FOREIGN KEY IF EXISTS `fk_admin_role`;

-- İndeksi kaldır (varsa)
ALTER TABLE `admins` DROP INDEX IF EXISTS `fk_admin_role`;

-- Yeni foreign key oluştur
ALTER TABLE `admins` 
ADD KEY `fk_admin_role` (`role_id`),
ADD CONSTRAINT `fk_admin_role` FOREIGN KEY (`role_id`) REFERENCES `admin_roles` (`id`) ON DELETE SET NULL;