34702-vm/db/migrate.php
2025-10-05 21:53:53 +00:00

47 lines
2.7 KiB
PHP

<?php
require 'config.php';
try {
// Connect to MySQL server to ensure DB exists
$pdo_server = new PDO("mysql:host=" . DB_HOST, DB_USER, DB_PASS);
$pdo_server->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo_server->exec("CREATE DATABASE IF NOT EXISTS `" . DB_NAME . "` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci");
echo "Database '" . DB_NAME . "' checked/created.\n";
// Connect to the specific database
$pdo = db();
echo "Database connected successfully.\n";
// Ensure users table exists with a minimal schema
$pdo->exec("\n CREATE TABLE IF NOT EXISTS `users` (\n `id` INT AUTO_INCREMENT PRIMARY KEY,\n `email` VARCHAR(100) NOT NULL UNIQUE,\n `password` VARCHAR(255) NOT NULL,\n `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n ");
echo "Base 'users' table checked/created.\n";
// --- Add columns if they don't exist ---
$columns = [
'name' => "ADD COLUMN `name` VARCHAR(50) NOT NULL AFTER `id`",
'surname' => "ADD COLUMN `surname` VARCHAR(50) NOT NULL AFTER `name`",
'role' => "ADD COLUMN `role` ENUM('talent', 'agency', 'admin') NOT NULL DEFAULT 'talent' AFTER `password`",
'bio' => "ADD COLUMN `bio` TEXT AFTER `role`",
'category' => "ADD COLUMN `category` VARCHAR(100) AFTER `bio`",
'profile_status' => "ADD COLUMN `profile_status` VARCHAR(50) NOT NULL DEFAULT 'new' AFTER `category`"
];
foreach ($columns as $column_name => $add_sql) {
$stmt = $pdo->query("SHOW COLUMNS FROM `users` LIKE '$column_name'");
if ($stmt->fetch(PDO::FETCH_ASSOC)) {
echo "Column '$column_name' already exists.\n";
} else {
$pdo->exec("ALTER TABLE `users` $add_sql;");
echo "Column '$column_name' added successfully.\n";
}
}
// Create 'influencer_requests' table if not exists
$pdo->exec("\n CREATE TABLE IF NOT EXISTS `influencer_requests` (\n `id` INT AUTO_INCREMENT PRIMARY KEY,\n `influencer_user_id` INT NOT NULL,\n `client_name` VARCHAR(255) NOT NULL,\n `client_surname` VARCHAR(255) NOT NULL,\n `client_phone` VARCHAR(50) NOT NULL,\n `message` TEXT,\n `status` VARCHAR(50) NOT NULL DEFAULT 'new',\n `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n FOREIGN KEY (`influencer_user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE\n ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;\n ");
echo "Table 'influencer_requests' checked/created.\n";
} catch (PDOException $e) {
die("Error: " . $e->getMessage());
}