feat: installer - DB table + defaults

This commit is contained in:
2026-05-08 03:12:09 +00:00
parent d94d5e23ef
commit aeb2dbf5d6
+54
View File
@@ -0,0 +1,54 @@
<?php
namespace AskTamMCP\Core;
defined('ABSPATH') || exit;
/**
* Handles DB table creation on activation, cleanup on deactivation.
*/
class Installer {
public static function activate(): void {
self::createTables();
self::setDefaults();
flush_rewrite_rules();
}
public static function deactivate(): void {
flush_rewrite_rules();
}
private static function createTables(): void {
global $wpdb;
$charset = $wpdb->get_charset_collate();
$sql = "CREATE TABLE IF NOT EXISTS {$wpdb->prefix}asktam_mcp_keys (
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(120) NOT NULL,
api_key VARCHAR(64) NOT NULL,
scopes VARCHAR(255) NOT NULL DEFAULT 'read',
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
last_used DATETIME NULL,
is_active TINYINT(1) NOT NULL DEFAULT 1,
PRIMARY KEY (id),
UNIQUE KEY api_key (api_key)
) $charset;";
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
dbDelta($sql);
update_option('asktam_mcp_db_version', ASKTAM_MCP_VERSION);
}
private static function setDefaults(): void {
if (!get_option('asktam_mcp_settings')) {
update_option('asktam_mcp_settings', [
'rate_limit' => 60, // requests per minute per key
'log_requests' => true,
'allow_raw_sql' => false,
'wc_enabled' => class_exists('WooCommerce'),
]);
}
}
}