-- ============================================================
-- setup.sql — إعداد قاعدة البيانات الكاملة
-- شغّله مرة واحدة في phpMyAdmin
-- ============================================================

-- 1. تأكد من الـ encoding
ALTER DATABASE goldapi_dashboard
  CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

USE goldapi_dashboard;

-- 2. جدول الإعدادات
CREATE TABLE IF NOT EXISTS settings (
  id INT AUTO_INCREMENT PRIMARY KEY,
  setting_key VARCHAR(100) NOT NULL UNIQUE,
  setting_value TEXT,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

INSERT INTO settings (setting_key, setting_value) VALUES
  ('api_key',''),('api_url',''),('currency','SAR'),
  ('refresh_interval','60'),('margin_pct','0'),('margin_fixed','0'),
  ('show_usd','1'),('show_change','1'),('auto_refresh','1'),('sound','0')
ON DUPLICATE KEY UPDATE setting_key = setting_key;

-- 3. جدول سبائك الهوامش
CREATE TABLE IF NOT EXISTS item_margins (
  id INT AUTO_INCREMENT PRIMARY KEY,
  item_id VARCHAR(20) NOT NULL UNIQUE,
  item_name VARCHAR(200),
  weight DECIMAL(10,4),
  margin_pct DECIMAL(8,4) DEFAULT 0,
  margin_fixed DECIMAL(10,4) DEFAULT 0,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

INSERT INTO item_margins (item_id, item_name, weight) VALUES
('i1','سبيكة ذهب 1 جرام',1),('i2','سبيكة الذهب 2.5 جرام',2.5),
('i3','سبيكة الذهب 5 جرام',5),('i4','جنية الذهب 8 جرام عيار 24',8),
('i5','سبيكة الذهب 10 جرام',10),('i6','سبيكة الذهب 20 جرام',20),
('i7','سبيكة نصف أونصة 15.55 جرام',15.55),('i8','سبيكة الذهب 31.1 جرام',31.1),
('i9','سبيكة الذهب 50 جرام',50),('i10','سبيكة الذهب 100 جرام',100),
('i11','سبيكة الذهب تولة 11.66 جرام',11.66),('i12','سبيكة الذهب 1 كيلو',1000),
('i13','سبيكة الذهب نصف كيلو',500),('i14','10 تولة 116.6 جرام',116.6),
('i15','5 تولة 58.3 جرام',58.3)
ON DUPLICATE KEY UPDATE item_id = item_id;

-- 4. جدول المستخدمين
CREATE TABLE IF NOT EXISTS users (
  id INT AUTO_INCREMENT PRIMARY KEY,
  username VARCHAR(50) NOT NULL UNIQUE,
  password_hash VARCHAR(255) NOT NULL,
  full_name VARCHAR(100),
  role ENUM('admin','viewer','custom') DEFAULT 'viewer',
  is_active TINYINT(1) DEFAULT 1,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  last_login TIMESTAMP NULL
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- admin افتراضي — كلمة المرور: Admin@1234
INSERT INTO users (username, password_hash, full_name, role) VALUES
('admin','$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi','المدير العام','admin')
ON DUPLICATE KEY UPDATE username = username;

-- 5. جدول صلاحيات المستخدمين
CREATE TABLE IF NOT EXISTS user_permissions (
  id INT AUTO_INCREMENT PRIMARY KEY,
  user_id INT NOT NULL,
  permission VARCHAR(50) NOT NULL,
  FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
  UNIQUE KEY unique_perm (user_id, permission)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 6. جدول الجلسات
CREATE TABLE IF NOT EXISTS sessions (
  id INT AUTO_INCREMENT PRIMARY KEY,
  user_id INT NOT NULL,
  token VARCHAR(64) NOT NULL UNIQUE,
  expires_at DATETIME NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 7. جدول البلدان
CREATE TABLE IF NOT EXISTS brands (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(100) NOT NULL,
  flag VARCHAR(10) NOT NULL DEFAULT '🏳',
  currency VARCHAR(10) NOT NULL DEFAULT 'SAR',
  purity DECIMAL(6,4) NOT NULL DEFAULT 0.9999,
  margin_pct DECIMAL(8,4) DEFAULT 0,
  margin_fixed DECIMAL(10,4) DEFAULT 0,
  sort_order INT DEFAULT 0,
  is_active TINYINT(1) DEFAULT 1,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

INSERT INTO brands (name, flag, currency, purity, sort_order) VALUES
('سويسري','🇨🇭','SAR',0.9999,1),
('سعودي', '🇸🇦','SAR',0.9166,2),
('إماراتي','🇦🇪','AED',0.9999,3),
('هندي',  '🇮🇳','SAR',0.9166,4)
ON DUPLICATE KEY UPDATE name = name;

-- 8. جدول سبائك البلدان
CREATE TABLE IF NOT EXISTS brand_items (
  id INT AUTO_INCREMENT PRIMARY KEY,
  brand_id INT NOT NULL,
  item_id VARCHAR(20) NOT NULL,
  margin_pct DECIMAL(8,4) DEFAULT 0,
  margin_fixed DECIMAL(10,4) DEFAULT 0,
  is_visible TINYINT(1) DEFAULT 1,
  FOREIGN KEY (brand_id) REFERENCES brands(id) ON DELETE CASCADE,
  UNIQUE KEY unique_brand_item (brand_id, item_id)
) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- ✅ انتهى الإعداد
