CREATE TABLE IF NOT EXISTS admins(id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,name VARCHAR(120) NOT NULL,email VARCHAR(190) NOT NULL UNIQUE,password_hash VARCHAR(255) NOT NULL,created_at DATETIME DEFAULT CURRENT_TIMESTAMP) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS customers(id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,name VARCHAR(190) NOT NULL,email VARCHAR(190),created_at DATETIME DEFAULT CURRENT_TIMESTAMP) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS licenses(id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,customer_id BIGINT UNSIGNED NULL,license_key VARCHAR(100) NOT NULL UNIQUE,domain VARCHAR(190) NOT NULL,status ENUM('active','suspended','revoked','expired') NOT NULL DEFAULT 'active',plan_name VARCHAR(120) DEFAULT 'PriceBook',expires_at DATETIME NULL,created_at DATETIME DEFAULT CURRENT_TIMESTAMP,INDEX(domain)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS installations(id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,installation_uuid VARCHAR(100) NOT NULL UNIQUE,domain VARCHAR(190) NOT NULL,product VARCHAR(100) NOT NULL,client_version VARCHAR(50),license_id BIGINT UNSIGNED NULL,first_seen_at DATETIME DEFAULT CURRENT_TIMESTAMP,last_seen_at DATETIME DEFAULT CURRENT_TIMESTAMP,last_ip VARCHAR(64),INDEX(domain),INDEX(license_id)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS restrictions(id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,license_id BIGINT UNSIGNED NOT NULL,feature_key VARCHAR(190) NOT NULL,reason VARCHAR(190),message TEXT,active TINYINT(1) NOT NULL DEFAULT 1,created_at DATETIME DEFAULT CURRENT_TIMESTAMP,UNIQUE KEY uq_license_feature(license_id,feature_key)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS license_nodes(id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,base_url VARCHAR(255) NOT NULL UNIQUE,is_enabled TINYINT(1) NOT NULL DEFAULT 1,priority INT NOT NULL DEFAULT 100,created_at DATETIME DEFAULT CURRENT_TIMESTAMP) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT IGNORE INTO license_nodes(base_url,is_enabled,priority) VALUES('https://maxcenter.plusteam.com.tr',1,10),('https://maxcenter.unozer0.com.tr',1,20);
CREATE TABLE IF NOT EXISTS audit_log(id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,admin_id BIGINT UNSIGNED NULL,action VARCHAR(120) NOT NULL,details_json TEXT,created_at DATETIME DEFAULT CURRENT_TIMESTAMP) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- v1.1.0 independent-database multi-node synchronization
CREATE TABLE IF NOT EXISTS node_identity(
 id TINYINT UNSIGNED PRIMARY KEY DEFAULT 1,
 node_uuid VARCHAR(64) NOT NULL UNIQUE,
 node_name VARCHAR(120) NOT NULL DEFAULT 'MaxCenter Node',
 created_at DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS sync_peers(
 id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
 node_uuid VARCHAR(64) NULL,
 base_url VARCHAR(255) NOT NULL UNIQUE,
 shared_secret VARCHAR(190) NOT NULL,
 is_enabled TINYINT(1) NOT NULL DEFAULT 1,
 priority INT NOT NULL DEFAULT 100,
 last_success_at DATETIME NULL,
 last_error VARCHAR(255) NULL,
 created_at DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS sync_events(
 id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
 event_uuid VARCHAR(64) NOT NULL UNIQUE,
 origin_node VARCHAR(64) NOT NULL,
 entity_type VARCHAR(60) NOT NULL,
 entity_uuid VARCHAR(190) NOT NULL,
 operation VARCHAR(30) NOT NULL,
 revision BIGINT UNSIGNED NOT NULL,
 payload_json LONGTEXT NOT NULL,
 created_at_usec BIGINT UNSIGNED NOT NULL,
 created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
 INDEX(origin_node), INDEX(entity_type,entity_uuid), INDEX(created_at_usec)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS sync_receipts(
 id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
 peer_id BIGINT UNSIGNED NOT NULL,
 event_uuid VARCHAR(64) NOT NULL,
 delivered_at DATETIME DEFAULT CURRENT_TIMESTAMP,
 UNIQUE KEY uq_peer_event(peer_id,event_uuid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS sync_conflicts(
 id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
 entity_type VARCHAR(60) NOT NULL,
 entity_uuid VARCHAR(190) NOT NULL,
 local_event_uuid VARCHAR(64) NULL,
 remote_event_uuid VARCHAR(64) NULL,
 details_json LONGTEXT NULL,
 resolved TINYINT(1) NOT NULL DEFAULT 0,
 created_at DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS entity_versions(
 entity_type VARCHAR(60) NOT NULL,
 entity_uuid VARCHAR(190) NOT NULL,
 revision BIGINT UNSIGNED NOT NULL DEFAULT 0,
 updated_at_usec BIGINT UNSIGNED NOT NULL DEFAULT 0,
 origin_node VARCHAR(64) NOT NULL,
 event_uuid VARCHAR(64) NOT NULL,
 PRIMARY KEY(entity_type,entity_uuid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
