| 1 |
<?php |
| 2 |
|
| 3 |
namespace SyncBasalam; |
| 4 |
|
| 5 |
defined('ABSPATH') || exit; |
| 6 |
|
| 7 |
class Activator |
| 8 |
{ |
| 9 |
public static function activate() |
| 10 |
{ |
| 11 |
self::activateDb(); |
| 12 |
} |
| 13 |
|
| 14 |
public static function activateDb() |
| 15 |
{ |
| 16 |
require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); |
| 17 |
global $wpdb; |
| 18 |
|
| 19 |
$table_name_payments = $wpdb->prefix . 'sync_basalam_payments'; |
| 20 |
$table_name_options = $wpdb->prefix . 'sync_basalam_map_options'; |
| 21 |
$table_name_uploaded_media = $wpdb->prefix . 'sync_basalam_uploaded_media'; |
| 22 |
$table_name_debug_logs = $wpdb->prefix . 'sync_basalam_debug_logs'; |
| 23 |
$table_name_discount_tasks = $wpdb->prefix . 'sync_basalam_discount_tasks'; |
| 24 |
$table_name_category_mappings = $wpdb->prefix . 'sync_basalam_category_mappings'; |
| 25 |
$table_name_jobs_manager = $wpdb->prefix . 'sync_basalam_job_manager'; |
| 26 |
$charset_collate = $wpdb->get_charset_collate(); |
| 27 |
|
| 28 |
$sql_Payment = "CREATE TABLE $table_name_payments ( |
| 29 |
id INT AUTO_INCREMENT, |
| 30 |
payment_id INT, |
| 31 |
invoice_id INT NOT NULL, |
| 32 |
user_id INT NOT NULL, |
| 33 |
city_id INT NOT NULL, |
| 34 |
province_id INT NOT NULL, |
| 35 |
order_id INT DEFAULT NULL, |
| 36 |
PRIMARY KEY (id) |
| 37 |
) $charset_collate;"; |
| 38 |
|
| 39 |
$sql_options = "CREATE TABLE $table_name_options ( |
| 40 |
id INT AUTO_INCREMENT, |
| 41 |
woo_name VARCHAR(255), |
| 42 |
sync_basalam_name VARCHAR(255), |
| 43 |
PRIMARY KEY (id) |
| 44 |
) $charset_collate;"; |
| 45 |
|
| 46 |
$sql_uploaded_media = "CREATE TABLE $table_name_uploaded_media ( |
| 47 |
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, |
| 48 |
type VARCHAR(16) NOT NULL, |
| 49 |
source_identity VARCHAR(191) NOT NULL, |
| 50 |
media_id BIGINT UNSIGNED NULL, |
| 51 |
media_url VARCHAR(2083) NULL, |
| 52 |
created_at DATETIME NOT NULL, |
| 53 |
PRIMARY KEY (id), |
| 54 |
UNIQUE KEY unique_type_source (type, source_identity), |
| 55 |
KEY idx_type_created (type, created_at), |
| 56 |
KEY idx_created_at (created_at) |
| 57 |
) $charset_collate;"; |
| 58 |
|
| 59 |
$sql_debug_logs = "CREATE TABLE $table_name_debug_logs ( |
| 60 |
id BIGINT UNSIGNED AUTO_INCREMENT, |
| 61 |
request_url VARCHAR(2083) NOT NULL, |
| 62 |
status_code INT NULL, |
| 63 |
success TINYINT(1) NOT NULL DEFAULT 0, |
| 64 |
response_time_ms INT NULL, |
| 65 |
error_message TEXT NULL, |
| 66 |
created_at DATETIME NOT NULL, |
| 67 |
PRIMARY KEY (id), |
| 68 |
KEY created_at_idx (created_at) |
| 69 |
) $charset_collate;"; |
| 70 |
|
| 71 |
$sql_discount_tasks = "CREATE TABLE $table_name_discount_tasks ( |
| 72 |
id BIGINT(20) NOT NULL AUTO_INCREMENT, |
| 73 |
product_id VARCHAR(50) DEFAULT NULL, |
| 74 |
variation_id VARCHAR(50) DEFAULT NULL, |
| 75 |
discount_percent DECIMAL(5,2) NOT NULL, |
| 76 |
active_days INT(11) NOT NULL, |
| 77 |
action ENUM('apply','remove') DEFAULT 'apply', |
| 78 |
status ENUM('pending','processing','completed','failed') DEFAULT 'pending', |
| 79 |
created_at DATETIME DEFAULT CURRENT_TIMESTAMP, |
| 80 |
scheduled_at DATETIME DEFAULT CURRENT_TIMESTAMP, |
| 81 |
processed_at DATETIME DEFAULT NULL, |
| 82 |
error_message TEXT DEFAULT NULL, |
| 83 |
PRIMARY KEY (id), |
| 84 |
KEY idx_status (status), |
| 85 |
KEY idx_action (action), |
| 86 |
KEY idx_discount_percent (discount_percent), |
| 87 |
KEY idx_scheduled_at (scheduled_at), |
| 88 |
KEY idx_product_id (product_id), |
| 89 |
KEY idx_variation_id (variation_id) |
| 90 |
) $charset_collate;"; |
| 91 |
|
| 92 |
$sql_category_mappings = "CREATE TABLE $table_name_category_mappings ( |
| 93 |
id int(11) NOT NULL AUTO_INCREMENT, |
| 94 |
woo_category_id int(11) NOT NULL, |
| 95 |
woo_category_name varchar(255) NOT NULL, |
| 96 |
basalam_category_level1 int(11) DEFAULT NULL, |
| 97 |
basalam_category_level2 int(11) DEFAULT NULL, |
| 98 |
basalam_category_level3 int(11) DEFAULT NULL, |
| 99 |
basalam_category_name varchar(255) NOT NULL, |
| 100 |
created_at datetime DEFAULT CURRENT_TIMESTAMP, |
| 101 |
updated_at datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, |
| 102 |
PRIMARY KEY (id), |
| 103 |
UNIQUE KEY woo_category_unique (woo_category_id), |
| 104 |
KEY basalam_category_level1_idx (basalam_category_level1) |
| 105 |
) $charset_collate;"; |
| 106 |
|
| 107 |
$sql_jobs_manager = "CREATE TABLE $table_name_jobs_manager ( |
| 108 |
id BIGINT(20) NOT NULL AUTO_INCREMENT, |
| 109 |
job_type VARCHAR(255) DEFAULT NULL, |
| 110 |
status ENUM('pending','processing','completed','failed') DEFAULT 'pending', |
| 111 |
payload TEXT DEFAULT NULL, |
| 112 |
created_at BIGINT(20) NOT NULL DEFAULT 0, |
| 113 |
started_at BIGINT(20) NOT NULL DEFAULT 0, |
| 114 |
completed_at BIGINT(20) NOT NULL DEFAULT 0, |
| 115 |
failed_at INT NULL, |
| 116 |
error_message TEXT DEFAULT NULL, |
| 117 |
attempts TINYINT UNSIGNED NOT NULL DEFAULT 0, |
| 118 |
max_attempts TINYINT UNSIGNED NOT NULL DEFAULT 3, |
| 119 |
retry_after BIGINT(20) NULL DEFAULT NULL, |
| 120 |
PRIMARY KEY (id), |
| 121 |
KEY idx_status (status), |
| 122 |
KEY idx_job_type (job_type(191)), |
| 123 |
KEY idx_status_job_type (status, job_type(100)), |
| 124 |
KEY idx_created_at (created_at) |
| 125 |
) $charset_collate;"; |
| 126 |
|
| 127 |
dbDelta($sql_Payment); |
| 128 |
dbDelta($sql_options); |
| 129 |
dbDelta($sql_uploaded_media); |
| 130 |
dbDelta($sql_debug_logs); |
| 131 |
dbDelta($sql_discount_tasks); |
| 132 |
dbDelta($sql_category_mappings); |
| 133 |
dbDelta($sql_jobs_manager); |
| 134 |
} |
| 135 |
} |
| 136 |
|