63 lines
2.5 KiB
PHP
63 lines
2.5 KiB
PHP
<?php
|
|
/**
|
|
* Identity verification tables.
|
|
*
|
|
* @package AKSRT
|
|
*/
|
|
|
|
namespace AKSRT\Core;
|
|
|
|
defined('ABSPATH') || exit;
|
|
|
|
trait DBMigratorIdentity {
|
|
|
|
private static function migrate_identity_tables(string $prefix, string $charset_collate): void {
|
|
$application = "CREATE TABLE {$prefix}aksrt_identity_application (
|
|
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
application_uuid CHAR(36) NOT NULL,
|
|
client_request_id CHAR(36) NOT NULL,
|
|
request_payload_hash CHAR(64) NOT NULL,
|
|
user_id BIGINT UNSIGNED NOT NULL,
|
|
type VARCHAR(20) NOT NULL DEFAULT 'general',
|
|
channel VARCHAR(20) NOT NULL DEFAULT 'manual',
|
|
status VARCHAR(32) NOT NULL DEFAULT 'created',
|
|
public_name VARCHAR(64) NOT NULL DEFAULT '',
|
|
provider_result_summary TEXT DEFAULT NULL,
|
|
manual_reason TEXT DEFAULT NULL,
|
|
review_note TEXT DEFAULT NULL,
|
|
reviewer_id BIGINT UNSIGNED DEFAULT NULL,
|
|
evidence_ids TEXT DEFAULT NULL,
|
|
created_at DATETIME NOT NULL,
|
|
completed_at DATETIME DEFAULT NULL,
|
|
updated_at DATETIME NOT NULL,
|
|
PRIMARY KEY (id),
|
|
UNIQUE KEY uniq_application_uuid (application_uuid),
|
|
UNIQUE KEY uniq_user_client_request (user_id, client_request_id),
|
|
KEY idx_user_created (user_id, created_at),
|
|
KEY idx_status_updated (status, updated_at),
|
|
KEY idx_user_auth_status (user_id, type, channel, status)
|
|
) ENGINE=InnoDB {$charset_collate};";
|
|
dbDelta($application);
|
|
|
|
$event = "CREATE TABLE {$prefix}aksrt_identity_event (
|
|
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
application_id BIGINT UNSIGNED NOT NULL,
|
|
event_uuid CHAR(36) NOT NULL,
|
|
source VARCHAR(20) NOT NULL,
|
|
event_type VARCHAR(64) NOT NULL,
|
|
dedupe_key CHAR(64) NOT NULL,
|
|
from_status VARCHAR(32) NOT NULL DEFAULT '',
|
|
to_status VARCHAR(32) NOT NULL DEFAULT '',
|
|
result_code VARCHAR(128) NOT NULL DEFAULT '',
|
|
summary_json LONGTEXT DEFAULT NULL,
|
|
actor_user_id BIGINT UNSIGNED DEFAULT NULL,
|
|
created_at DATETIME NOT NULL,
|
|
PRIMARY KEY (id),
|
|
UNIQUE KEY uniq_event_uuid (event_uuid),
|
|
UNIQUE KEY uniq_dedupe_key (dedupe_key),
|
|
KEY idx_application_created (application_id, created_at)
|
|
) ENGINE=InnoDB {$charset_collate};";
|
|
dbDelta($event);
|
|
}
|
|
}
|