Files
WooAApanel/includes/class-wooaapanel-installer.php

57 lines
2.0 KiB
PHP
Raw Permalink Normal View History

<?php
defined( 'ABSPATH' ) || exit;
class WooAApanel_Installer {
public static function install(): void {
global $wpdb;
$charset = $wpdb->get_charset_collate();
// aaPanel server instances.
$servers_sql = "CREATE TABLE {$wpdb->prefix}wooaapanel_servers (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(100) NOT NULL,
url VARCHAR(500) NOT NULL,
api_key VARCHAR(500) NOT NULL,
active TINYINT(1) NOT NULL DEFAULT 1,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id)
) $charset;";
// Site (PHP project) assignments per customer.
$sites_sql = "CREATE TABLE {$wpdb->prefix}wooaapanel_site_assignments (
id INT NOT NULL AUTO_INCREMENT,
customer_id BIGINT NOT NULL,
server_id INT NOT NULL,
site_name VARCHAR(255) NOT NULL,
domain VARCHAR(255) NOT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
KEY idx_customer (customer_id),
KEY idx_server (server_id),
UNIQUE KEY uniq_site (server_id, site_name)
) $charset;";
// Database assignments per customer.
$dbs_sql = "CREATE TABLE {$wpdb->prefix}wooaapanel_db_assignments (
id INT NOT NULL AUTO_INCREMENT,
customer_id BIGINT NOT NULL,
server_id INT NOT NULL,
db_name VARCHAR(255) NOT NULL,
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id),
KEY idx_customer (customer_id),
KEY idx_server (server_id),
UNIQUE KEY uniq_db (server_id, db_name)
) $charset;";
require_once ABSPATH . 'wp-admin/includes/upgrade.php';
dbDelta( $servers_sql );
dbDelta( $sites_sql );
dbDelta( $dbs_sql );
update_option( 'wooaapanel_db_version', WOOAAPANEL_VERSION );
}
}