-- https://www.phpmyadmin.net/
--
-- مضيف: localhost:3306
-- وقت الجيل: 24 أكتوبر 2025 الساعة 18:01
-- إصدار الخادم: 11.4.8-MariaDB-cll-lve-log
-- نسخة PHP: 8.3.26

START TRANSACTION;



--
-- قاعدة بيانات: `supehgku_test0`
--

DELIMITER $$
--
-- الإجراءات
--
CREATE DEFINER=`root`@`localhost` PROCEDURE `cleanup_expired_bans` ()   BEGIN
    DELETE FROM `limit_bans` 
    WHERE `banned_until` < NOW();
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `reset_expired_counters` ()   BEGIN
    UPDATE `limit_counters` 
    SET `day_used` = 0,
        `day_reset_at` = DATE_ADD(CURDATE(), INTERVAL 1 DAY)
    WHERE `day_reset_at` < NOW();
    
    UPDATE `limit_counters` 
    SET `week_used` = 0,
        `week_reset_at` = DATE_ADD(
            DATE_ADD(CURDATE(), INTERVAL (7 - WEEKDAY(CURDATE())) DAY),
            INTERVAL 1 WEEK
        )
    WHERE `week_reset_at` < NOW();
    
    UPDATE `limit_counters` 
    SET `month_used` = 0,
        `month_reset_at` = DATE_ADD(
            LAST_DAY(CURDATE()),
            INTERVAL 1 DAY
        )
    WHERE `month_reset_at` < NOW();
END$$

DELIMITER ;

-- --------------------------------------------------------

--
-- بنية الجدول `account_groups`
--

CREATE TABLE `account_groups` (
  `id` int(11) NOT NULL,
  `group_name` varchar(64) NOT NULL,
  `description` text DEFAULT NULL,
  `is_default` tinyint(1) DEFAULT 0 COMMENT 'المجموعة الافتراضية',
  `active` tinyint(1) DEFAULT 1,
  `locked` tinyint(1) NOT NULL DEFAULT 0 COMMENT 'قفل المجموعة يمنع rename/delete',
  `priority` int(11) DEFAULT 0 COMMENT 'أولوية البحث',
  `created_at` timestamp NULL DEFAULT current_timestamp(),
  `group_name_lower` varchar(64) GENERATED ALWAYS AS (lcase(`group_name`)) STORED
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='مجموعات الحسابات لتنظيم الوصول';

--
-- إرجاع أو استيراد بيانات الجدول `account_groups`
--

INSERT INTO `account_groups` (`id`, `group_name`, `description`, `is_default`, `active`, `locked`, `priority`, `created_at`) VALUES
(1, 'default', 'المجموعة العامة - تحتوي جميع الحسابات', 1, 1, 0, 0, '2025-10-22 19:51:06'),
(5, 'vippro', NULL, 0, 1, 0, 0, '2025-10-22 23:03:15'),
(6, 'vip', NULL, 0, 1, 0, 0, '2025-10-22 23:03:51');

-- --------------------------------------------------------

--
-- Stand-in structure for view `active_bans`
-- (See below for the actual view)
--
CREATE TABLE `active_bans` (
`id` bigint(20)
,`user_id` bigint(20)
,`account_id` int(11)
,`banned_until` timestamp
,`reason` varchar(255)
,`created_at` timestamp
,`account_name` varchar(64)
,`hours_remaining` bigint(21)
);

-- --------------------------------------------------------

--
-- بنية الجدول `bot_groups`
--

CREATE TABLE `bot_groups` (
  `bot_id` int(11) NOT NULL,
  `group_id` int(11) NOT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='ربط البوتات بالمجموعات';

--
-- إرجاع أو استيراد بيانات الجدول `bot_groups`
--

INSERT INTO `bot_groups` (`bot_id`, `group_id`, `created_at`) VALUES
(27, 1, '2025-10-23 20:27:41'),
(28, 1, '2025-10-24 16:48:05'),
(28, 6, '2025-10-24 16:53:13'),
(29, 1, '2025-10-24 17:02:33'),
(29, 6, '2025-10-24 17:07:38');

-- --------------------------------------------------------

--
-- بنية الجدول `broadcast_jobs`
--

CREATE TABLE `broadcast_jobs` (
  `id` bigint(20) NOT NULL,
  `job_key` varchar(64) NOT NULL COMMENT 'Hash فريد لمنع التكرار',
  `initiator_user_id` bigint(20) NOT NULL COMMENT 'المالك الذي بدأ البث',
  `target_type` enum('label','all') NOT NULL,
  `target_label` varchar(64) DEFAULT NULL COMMENT 'اسم البوت إن كان label',
  `message_text` text NOT NULL,
  `media_type` enum('text','photo','video') DEFAULT 'text',
  `media_id` varchar(255) DEFAULT NULL,
  `status` enum('pending','running','completed','failed') DEFAULT 'pending',
  `total_recipients` int(11) DEFAULT 0,
  `sent_count` int(11) DEFAULT 0,
  `fail_count` int(11) DEFAULT 0,
  `scheduled_at` timestamp NULL DEFAULT NULL COMMENT 'للجدولة المستقبلية',
  `started_at` timestamp NULL DEFAULT NULL,
  `completed_at` timestamp NULL DEFAULT NULL,
  `error_message` text DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='جدول مهام البث الآمن';

-- --------------------------------------------------------

--
-- Stand-in structure for view `current_usage`
-- (See below for the actual view)
--
CREATE TABLE `current_usage` (
`id` bigint(20)
,`user_id` bigint(20)
,`account_id` int(11)
,`day_used` int(11)
,`week_used` int(11)
,`month_used` int(11)
,`day_reset_at` timestamp
,`week_reset_at` timestamp
,`month_reset_at` timestamp
,`updated_at` timestamp
,`account_name` varchar(64)
,`current_day_used` int(11)
,`current_week_used` int(11)
,`current_month_used` int(11)
);

-- --------------------------------------------------------

--
-- بنية الجدول `group_accounts`
--

CREATE TABLE `group_accounts` (
  `group_id` int(11) NOT NULL,
  `account_id` int(11) NOT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='ربط الحسابات بالمجموعات';

--
-- إرجاع أو استيراد بيانات الجدول `group_accounts`
--

INSERT INTO `group_accounts` (`group_id`, `account_id`, `created_at`) VALUES
(1, 106, '2025-10-23 20:25:43'),
(6, 42, '2025-10-24 16:41:26'),
(6, 102, '2025-10-23 00:14:05'),
(6, 104, '2025-10-24 16:40:55'),
(6, 105, '2025-10-24 16:42:18'),
(6, 107, '2025-10-24 16:41:47');

-- --------------------------------------------------------

--
-- بنية الجدول `limits_bot`
--

CREATE TABLE `limits_bot` (
  `bot_label` varchar(64) NOT NULL,
  `mode` enum('daily','weekly','monthly') NOT NULL,
  `per_day` int(11) NOT NULL,
  `weekly_cap` int(11) DEFAULT NULL,
  `monthly_cap` int(11) DEFAULT NULL,
  `ban_days` int(11) DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='حدود خاصة لكل بوت (تتجاوز الحدود العامة)';

-- --------------------------------------------------------

--
-- بنية الجدول `limits_global`
--

CREATE TABLE `limits_global` (
  `id` int(11) NOT NULL,
  `mode` enum('daily','weekly','monthly') NOT NULL DEFAULT 'daily' COMMENT 'الوضع: يومي/أسبوعي/شهري',
  `per_day` int(11) NOT NULL DEFAULT 2 COMMENT 'الحد اليومي (عدد الأكواد المسموح بها في اليوم)',
  `weekly_cap` int(11) DEFAULT NULL COMMENT 'السقف الأسبوعي (للوضع weekly فقط)',
  `monthly_cap` int(11) DEFAULT NULL COMMENT 'السقف الشهري (للوضع monthly فقط)',
  `ban_days` int(11) DEFAULT NULL COMMENT 'عدد أيام الحظر بعد التجاوز (NULL = لا حظر)',
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='الحدود العامة الافتراضية لجميع البوتات';

--
-- إرجاع أو استيراد بيانات الجدول `limits_global`
--

INSERT INTO `limits_global` (`id`, `mode`, `per_day`, `weekly_cap`, `monthly_cap`, `ban_days`, `updated_at`) VALUES
(1, 'weekly', 1, 2, NULL, 1000, '2025-10-24 17:09:59');

-- --------------------------------------------------------

--
-- بنية الجدول `limits_override`
--

CREATE TABLE `limits_override` (
  `account_id` int(11) NOT NULL,
  `mode` enum('daily','weekly','monthly') NOT NULL,
  `per_day` int(11) NOT NULL,
  `cap` int(11) DEFAULT NULL COMMENT 'السقف (أسبوعي أو شهري حسب الوضع)',
  `ban_days` int(11) DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='تجاوز الحدود لحساب محدد (أعلى أولوية)';

-- --------------------------------------------------------

--
-- بنية الجدول `limit_bans`
--

CREATE TABLE `limit_bans` (
  `id` bigint(20) NOT NULL,
  `user_id` bigint(20) NOT NULL COMMENT 'معرف المستخدم المحظور',
  `account_id` int(11) NOT NULL COMMENT 'معرف الحساب',
  `banned_until` timestamp NOT NULL COMMENT 'الحظر ساري حتى هذا الوقت',
  `reason` varchar(255) DEFAULT NULL COMMENT 'سبب الحظر (weekly_exceeded, monthly_exceeded, manual)',
  `created_at` timestamp NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='سجل الحظر المؤقت';

--
-- إرجاع أو استيراد بيانات الجدول `limit_bans`
--

INSERT INTO `limit_bans` (`id`, `user_id`, `account_id`, `banned_until`, `reason`, `created_at`) VALUES
(1, 5458195623, 102, '2025-10-31 17:45:42', 'weekly_exceeded', '2025-10-24 13:45:42'),
(3, 5458195623, 107, '2028-07-20 21:10:07', 'weekly_exceeded', '2025-10-24 17:10:07'),
(4, 5458195623, 105, '2028-07-20 21:10:17', 'weekly_exceeded', '2025-10-24 17:10:17');

-- --------------------------------------------------------

--
-- بنية الجدول `limit_counters`
--

CREATE TABLE `limit_counters` (
  `id` bigint(20) NOT NULL,
  `user_id` bigint(20) NOT NULL COMMENT 'معرف المستخدم في Telegram',
  `account_id` int(11) NOT NULL COMMENT 'معرف الحساب من steam_accounts',
  `day_used` int(11) DEFAULT 0 COMMENT 'عدد الأكواد المستخدمة اليوم',
  `week_used` int(11) DEFAULT 0 COMMENT 'عدد الأكواد المستخدمة هذا الأسبوع',
  `month_used` int(11) DEFAULT 0 COMMENT 'عدد الأكواد المستخدمة هذا الشهر',
  `day_reset_at` timestamp NULL DEFAULT NULL COMMENT 'موعد إعادة تعيين العداد اليومي',
  `week_reset_at` timestamp NULL DEFAULT NULL COMMENT 'موعد إعادة تعيين العداد الأسبوعي',
  `month_reset_at` timestamp NULL DEFAULT NULL COMMENT 'موعد إعادة تعيين العداد الشهري',
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='عدادات الاستخدام لكل مستخدم × حساب';

--
-- إرجاع أو استيراد بيانات الجدول `limit_counters`
--

INSERT INTO `limit_counters` (`id`, `user_id`, `account_id`, `day_used`, `week_used`, `month_used`, `day_reset_at`, `week_reset_at`, `month_reset_at`, `updated_at`) VALUES
(1, 5458195623, 102, 0, 0, 0, '2025-10-25 04:00:00', '2025-10-27 04:00:00', '2025-11-01 04:00:00', '2025-10-24 16:28:45'),
(2, 5458195623, 104, 4, 4, 0, '2025-10-25 04:00:00', '2025-10-27 04:00:00', '2025-11-01 04:00:00', '2025-10-24 17:07:46'),
(5, 5458195623, 105, 4, 4, 0, '2025-10-25 04:00:00', '2025-10-27 04:00:00', '2025-11-01 04:00:00', '2025-10-24 17:07:51'),
(6, 5458195623, 107, 6, 6, 0, '2025-10-25 04:00:00', '2025-10-27 04:00:00', '2025-11-01 04:00:00', '2025-10-24 17:08:15'),
(7, 5458195623, 42, 10, 10, 0, '2025-10-25 04:00:00', '2025-10-27 04:00:00', '2025-11-01 04:00:00', '2025-10-24 16:56:29'),
(8, 5458195623, 106, 1, 1, 0, '2025-10-25 04:00:00', '2025-10-27 04:00:00', '2025-11-01 04:00:00', '2025-10-24 16:38:53'),
(9, 6914878734, 105, 1, 1, 0, '2025-10-25 04:00:00', '2025-10-27 04:00:00', '2025-11-01 04:00:00', '2025-10-24 17:32:49');

-- --------------------------------------------------------

--
-- بنية الجدول `limit_messages`
--

CREATE TABLE `limit_messages` (
  `event` varchar(32) NOT NULL,
  `text` text NOT NULL,
  `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='رسائل الأحداث القابلة للتخصيص';

--
-- إرجاع أو استيراد بيانات الجدول `limit_messages`
--

INSERT INTO `limit_messages` (`event`, `text`, `updated_at`) VALUES
('on_banned', '🚫 تم حظرك من الحساب {account} لمدة {ban_days} أيام.\n\n📅 الحظر ينتهي في: {banned_until}\n\nالسبب: تجاوزت الحد المسموح.', '2025-10-24 12:54:02'),
('on_daily_near', '⚠️ تنبيه: اقتربت من حدك اليومي!\n\n📊 الاستخدام: {day_used}/{per_day}\n💎 المتبقي: {remaining} طلبات\n🔄 إعادة التعيين: {reset_time}', '2025-10-24 12:54:02'),
('on_limit_hit', '⏳ لقد استهلكت حدك اليومي ({day_used}/{per_day}) للحساب {account}.\n\n🔄 إعادة التعيين: {reset_time}\n\n💡 تواصل مع المالك لزيادة حدودك.', '2025-10-24 12:54:02'),
('on_monthly_near', '⚠️ تنبيه: اقتربت من الحد الشهري!\n\n📊 الاستخدام: {month_used}/{monthly_cap}\n💎 المتبقي: {remaining} طلبات\n🔄 إعادة التعيين: بداية الشهر القادم', '2025-10-24 12:54:02'),
('on_share_warning', '⚠️ تحذير: هذا هو الطلب الرابع هذا الأسبوع!\n\n🔒 لا تشارك الحساب {account} مع آخرين.\n\n📊 الاستخدام الأسبوعي: {week_used}/{weekly_cap}\n⛔️ الحد الأقصى: {weekly_cap} طلبات/أسبوع\n🚫 التجاوز يؤدي للحظر لمدة {ban_days} أيام.', '2025-10-24 12:54:02'),
('on_unbanned', '✅ <b>تم إلغاء الحظر</b>\n\nيمكنك الآن استخدام حساب <code>{account}</code> مرة أخرى.\n\n⚠️ يُرجى الالتزام بالحدود لتجنب الحظر مجدداً.', '2025-10-23 22:44:50'),
('on_weekly_near', '⚠️ تنبيه: اقتربت من الحد الأسبوعي!\n\n📊 الاستخدام: {week_used}/{weekly_cap}\n💎 المتبقي: {remaining} طلبات\n🔄 إعادة التعيين: {reset_time}', '2025-10-24 12:54:02');

--
-- القوادح `steam_accounts`
--
DELIMITER $$
END
$$
DELIMITER ;

--
-- القوادح `sub_bots`
--
DELIMITER $$
END
$$
DELIMITER ;

-- --------------------------------------------------------

--
-- بنية الجدول `system_logs`
--

CREATE TABLE `system_logs` (
  `id` bigint(20) NOT NULL,
  `log_level` enum('INFO','WARNING','ERROR','CRITICAL') DEFAULT 'INFO',
  `component` varchar(64) NOT NULL COMMENT 'control_bot, sub_bot, broadcast',
  `message` text NOT NULL,
  `context` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'بيانات إضافية' CHECK (json_valid(`context`)),
  `user_id` bigint(20) DEFAULT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='سجلات النظام للتدقيق';

-- --------------------------------------------------------

--
-- بنية الجدول `vouchers`
--

CREATE TABLE `vouchers` (
  `id` bigint(20) NOT NULL,
  `code` varchar(32) NOT NULL,
  `voucher_type` enum('users','days','unlimited') DEFAULT 'users',
  `amount` int(11) NOT NULL COMMENT 'عدد المستخدمين أو الأيام',
  `target_label` varchar(64) DEFAULT NULL COMMENT 'اسم البوت المحدد أو NULL للكل',
  `max_uses` int(11) DEFAULT 1 COMMENT 'عدد مرات الاستخدام المسموح',
  `current_uses` int(11) DEFAULT 0 COMMENT 'عدد الاستخدامات الحالية',
  `expires_at` timestamp NULL DEFAULT NULL COMMENT 'تاريخ انتهاء الصلاحية',
  `created_by_user_id` bigint(20) NOT NULL,
  `created_at` timestamp NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='قسائم لزيادة حدود المستخدمين أو الأيام';

--
-- إرجاع أو استيراد بيانات الجدول `vouchers`
--

INSERT INTO `vouchers` (`id`, `code`, `voucher_type`, `amount`, `target_label`, `max_uses`, `current_uses`, `expires_at`, `created_by_user_id`, `created_at`) VALUES
(1, 'V7CDC741AB9', 'users', 200, NULL, 5, 5, NULL, 5458195623, '2025-10-22 22:53:04'),
(2, 'VC8B023B368', 'users', 200, NULL, 1, 1, NULL, 5458195623, '2025-10-22 22:55:28'),
(3, 'V41F5ED6080', 'users', 200, NULL, 1, 1, NULL, 5458195623, '2025-10-22 22:58:18'),
(4, 'VDA3EEA5221', 'users', 200, NULL, 1, 0, NULL, 5458195623, '2025-10-22 22:59:04'),
(5, 'V0A744D4400', 'users', 100000, NULL, 1, 1, NULL, 5458195623, '2025-10-23 21:27:09'),
(6, 'V3D412A162D', 'users', 100000, NULL, 1, 1, NULL, 5458195623, '2025-10-24 17:36:20'),
(7, 'V0BD6CE01F0', 'users', 55, '3', 1, 1, NULL, 5458195623, '2025-10-24 17:37:08'),
(8, 'VEAD32AF223', 'users', 55, NULL, 3, 3, NULL, 5458195623, '2025-10-24 17:38:18');

-- --------------------------------------------------------

--
-- بنية الجدول `voucher_usage`
--

CREATE TABLE `voucher_usage` (
  `id` bigint(20) NOT NULL,
  `voucher_code` varchar(64) NOT NULL,
  `bot_id` int(11) DEFAULT NULL,
  `used_at` datetime NOT NULL DEFAULT current_timestamp()
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='تتبع استخدام القسائم من قبل البوتات';

--
-- إرجاع أو استيراد بيانات الجدول `voucher_usage`
--

INSERT INTO `voucher_usage` (`id`, `voucher_code`, `bot_id`, `used_at`) VALUES
(1, 'V7CDC741AB9', 27, '2025-10-22 18:53:28'),
(2, 'V7CDC741AB9', 27, '2025-10-22 18:54:33'),
(3, 'V7CDC741AB9', 27, '2025-10-22 18:54:43'),
(4, 'V7CDC741AB9', 27, '2025-10-22 18:55:12'),
(5, 'V7CDC741AB9', 27, '2025-10-22 18:55:13'),
(6, 'VC8B023B368', 27, '2025-10-22 18:55:46'),
(7, 'V41F5ED6080', 27, '2025-10-22 18:58:26'),
(8, 'V0A744D4400', 27, '2025-10-23 17:27:24'),
(9, 'V3D412A162D', 27, '2025-10-24 13:36:37'),
(10, 'V0BD6CE01F0', 27, '2025-10-24 13:37:24'),
(11, 'VEAD32AF223', 27, '2025-10-24 13:38:30'),
(12, 'VEAD32AF223', 27, '2025-10-24 13:38:33'),
(13, 'VEAD32AF223', 27, '2025-10-24 13:38:35');

--
-- Indexes for dumped tables
--

--
-- فهارس للجدول `account_groups`
--
ALTER TABLE `account_groups`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `group_name` (`group_name`),
  ADD UNIQUE KEY `idx_unique_group_name_lower` (`group_name_lower`),
  ADD KEY `idx_default` (`is_default`),
  ADD KEY `idx_priority` (`priority`),
  ADD KEY `idx_active` (`active`);

--
-- فهارس للجدول `bot_groups`
--
ALTER TABLE `bot_groups`
  ADD PRIMARY KEY (`bot_id`,`group_id`),
  ADD KEY `group_id` (`group_id`);

--
-- فهارس للجدول `broadcast_jobs`
--
ALTER TABLE `broadcast_jobs`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `job_key` (`job_key`),
  ADD KEY `idx_status` (`status`,`scheduled_at`),
  ADD KEY `idx_initiator` (`initiator_user_id`),
  ADD KEY `idx_job_key` (`job_key`);

--
-- فهارس للجدول `group_accounts`
--
ALTER TABLE `group_accounts`
  ADD PRIMARY KEY (`group_id`,`account_id`),
  ADD KEY `account_id` (`account_id`);

--
-- فهارس للجدول `limits_bot`
--
ALTER TABLE `limits_bot`
  ADD PRIMARY KEY (`bot_label`),
  ADD KEY `idx_mode` (`mode`);

--
-- فهارس للجدول `limits_global`
--
ALTER TABLE `limits_global`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_mode` (`mode`);

--
-- فهارس للجدول `limits_override`
--
ALTER TABLE `limits_override`
  ADD PRIMARY KEY (`account_id`),
  ADD KEY `idx_mode` (`mode`);

--
-- فهارس للجدول `limit_bans`
--
ALTER TABLE `limit_bans`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `unique_ban` (`user_id`,`account_id`),
  ADD KEY `idx_user` (`user_id`),
  ADD KEY `idx_account` (`account_id`),
  ADD KEY `idx_until` (`banned_until`),
  ADD KEY `idx_active_bans` (`banned_until`,`user_id`);

--
-- فهارس للجدول `limit_counters`
--
ALTER TABLE `limit_counters`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `unique_user_account` (`user_id`,`account_id`),
  ADD KEY `idx_user` (`user_id`),
  ADD KEY `idx_account` (`account_id`),
  ADD KEY `idx_day_reset` (`day_reset_at`),
  ADD KEY `idx_week_reset` (`week_reset_at`),
  ADD KEY `idx_month_reset` (`month_reset_at`),
  ADD KEY `idx_user_account_day` (`user_id`,`account_id`,`day_used`);

--
-- فهارس للجدول `limit_messages`
--
ALTER TABLE `limit_messages`
  ADD PRIMARY KEY (`event`);

--
-- فهارس للجدول `system_logs`
--
ALTER TABLE `system_logs`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_level_time` (`log_level`,`created_at`),
  ADD KEY `idx_component` (`component`),
  ADD KEY `idx_user` (`user_id`),
  ADD KEY `idx_component_time` (`component`,`created_at`),
  ADD KEY `idx_user_time` (`user_id`,`created_at`);

--
-- فهارس للجدول `vouchers`
--
ALTER TABLE `vouchers`
  ADD PRIMARY KEY (`id`),
  ADD UNIQUE KEY `code` (`code`),
  ADD KEY `idx_code` (`code`),
  ADD KEY `idx_type` (`voucher_type`),
  ADD KEY `idx_active` (`current_uses`,`max_uses`),
  ADD KEY `idx_creator` (`created_by_user_id`);

--
-- فهارس للجدول `voucher_usage`
--
ALTER TABLE `voucher_usage`
  ADD PRIMARY KEY (`id`),
  ADD KEY `idx_voucher_code` (`voucher_code`),
  ADD KEY `idx_bot_id` (`bot_id`),
  ADD KEY `idx_used_at` (`used_at`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `account_groups`
--
ALTER TABLE `account_groups`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9;

--
-- AUTO_INCREMENT for table `broadcast_jobs`
--
ALTER TABLE `broadcast_jobs`
  MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `limits_global`
--
ALTER TABLE `limits_global`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

--
-- AUTO_INCREMENT for table `limit_bans`
--
ALTER TABLE `limit_bans`
  MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT for table `limit_counters`
--
ALTER TABLE `limit_counters`
  MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10;

--
-- AUTO_INCREMENT for table `system_logs`
--
ALTER TABLE `system_logs`
  MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT for table `vouchers`
--
ALTER TABLE `vouchers`
  MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=9;

--
-- AUTO_INCREMENT for table `voucher_usage`
--
ALTER TABLE `voucher_usage`
  MODIFY `id` bigint(20) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=16;

-- --------------------------------------------------------

--
-- Structure for view `active_bans`
--

-- --------------------------------------------------------

--
-- Structure for view `current_usage`
--

--
-- قيود الجداول `bot_groups`
--
ALTER TABLE `bot_groups`
  ADD CONSTRAINT `bot_groups_ibfk_1` FOREIGN KEY (`bot_id`) REFERENCES `sub_bots` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `bot_groups_ibfk_2` FOREIGN KEY (`group_id`) REFERENCES `account_groups` (`id`) ON DELETE CASCADE;

--
-- قيود الجداول `group_accounts`
--
ALTER TABLE `group_accounts`
  ADD CONSTRAINT `group_accounts_ibfk_1` FOREIGN KEY (`group_id`) REFERENCES `account_groups` (`id`) ON DELETE CASCADE,
  ADD CONSTRAINT `group_accounts_ibfk_2` FOREIGN KEY (`account_id`) REFERENCES `steam_accounts` (`id`) ON DELETE CASCADE;

--
-- قيود الجداول `limits_bot`
--
ALTER TABLE `limits_bot`
  ADD CONSTRAINT `limits_bot_ibfk_1` FOREIGN KEY (`bot_label`) REFERENCES `sub_bots` (`label`) ON DELETE CASCADE ON UPDATE CASCADE;

--
-- قيود الجداول `limits_override`
--
ALTER TABLE `limits_override`
  ADD CONSTRAINT `limits_override_ibfk_1` FOREIGN KEY (`account_id`) REFERENCES `steam_accounts` (`id`) ON DELETE CASCADE;

--
-- قيود الجداول `limit_bans`
--
ALTER TABLE `limit_bans`
  ADD CONSTRAINT `limit_bans_ibfk_1` FOREIGN KEY (`account_id`) REFERENCES `steam_accounts` (`id`) ON DELETE CASCADE;

--
-- قيود الجداول `limit_counters`
--
ALTER TABLE `limit_counters`
  ADD CONSTRAINT `limit_counters_ibfk_1` FOREIGN KEY (`account_id`) REFERENCES `steam_accounts` (`id`) ON DELETE CASCADE;

--
-- قيود الجداول `voucher_usage`
--
ALTER TABLE `voucher_usage`
  ADD CONSTRAINT `voucher_usage_ibfk_1` FOREIGN KEY (`voucher_code`) REFERENCES `vouchers` (`code`) ON DELETE CASCADE,
  ADD CONSTRAINT `voucher_usage_ibfk_2` FOREIGN KEY (`bot_id`) REFERENCES `sub_bots` (`id`) ON DELETE SET NULL;
COMMIT;

