42 lines
1.4 KiB
PHP
42 lines
1.4 KiB
PHP
<?php
|
|
|
|
namespace App\Database\Migrations;
|
|
|
|
use CodeIgniter\Database\Migration;
|
|
|
|
class UpdateAppointmentStatusEnum extends Migration
|
|
{
|
|
public function up(): void
|
|
{
|
|
// Ensure enum values match the application status values.
|
|
$this->forge->modifyColumn('appointments', [
|
|
'status' => [
|
|
'name' => 'status',
|
|
'type' => 'ENUM',
|
|
'constraint' => ['pending', 'approved', 'rejected'],
|
|
'default' => 'pending',
|
|
'null' => false,
|
|
],
|
|
]);
|
|
|
|
// Convert legacy status values
|
|
$db = \Config\Database::connect();
|
|
$db->query("UPDATE `appointments` SET `status`='pending' WHERE `status` IS NULL OR `status`='' OR `status` NOT IN ('pending', 'approved', 'rejected')");
|
|
$db->query("UPDATE `appointments` SET `status`='approved' WHERE `status`='confirmed'");
|
|
$db->query("UPDATE `appointments` SET `status`='rejected' WHERE `status`='cancelled'");
|
|
}
|
|
|
|
public function down(): void
|
|
{
|
|
$this->forge->modifyColumn('appointments', [
|
|
'status' => [
|
|
'name' => 'status',
|
|
'type' => 'ENUM',
|
|
'constraint' => ['pending', 'confirmed', 'cancelled'],
|
|
'default' => 'pending',
|
|
'null' => false,
|
|
],
|
|
]);
|
|
}
|
|
}
|