devsofttech_hms_ci4/app/Database/Migrations/2026-10-21-000001_RemoveHealthplixColumns.php

92 lines
3.1 KiB
PHP

<?php
namespace App\Database\Migrations;
use CodeIgniter\Database\Migration;
class RemoveHealthplixColumns extends Migration
{
public function up(): void
{
if ($this->tableExists('doctor_master') && $this->fieldExists('doctor_master', 'healthplix_doctor_identifier')) {
$this->forge->dropColumn('doctor_master', 'healthplix_doctor_identifier');
}
if ($this->tableExists('patient_master') && $this->fieldExists('patient_master', 'healthplix_sync_id')) {
$this->forge->dropColumn('patient_master', 'healthplix_sync_id');
}
if ($this->tableExists('opd_master') && $this->fieldExists('opd_master', 'healthplix_sync_id')) {
$this->forge->dropColumn('opd_master', 'healthplix_sync_id');
}
if ($this->tableExists('hospital_setting')) {
$this->db->query("DELETE FROM hospital_setting WHERE s_name LIKE 'HEALTHPLIX_%'");
}
}
public function down(): void
{
if ($this->tableExists('doctor_master') && ! $this->fieldExists('doctor_master', 'healthplix_doctor_identifier')) {
$this->forge->addColumn('doctor_master', [
'healthplix_doctor_identifier' => [
'type' => 'VARCHAR',
'constraint' => 120,
'null' => true,
'after' => 'email1',
],
]);
}
if ($this->tableExists('patient_master') && ! $this->fieldExists('patient_master', 'healthplix_sync_id')) {
$this->forge->addColumn('patient_master', [
'healthplix_sync_id' => [
'type' => 'VARCHAR',
'constraint' => 120,
'null' => true,
],
]);
}
if ($this->tableExists('opd_master') && ! $this->fieldExists('opd_master', 'healthplix_sync_id')) {
$this->forge->addColumn('opd_master', [
'healthplix_sync_id' => [
'type' => 'VARCHAR',
'constraint' => 120,
'null' => true,
],
]);
}
}
private function tableExists(string $table): bool
{
$dbName = (string) ($this->db->database ?? '');
if ($dbName === '' || $table === '') {
return false;
}
$row = $this->db->query(
'SELECT COUNT(*) AS total FROM information_schema.tables WHERE table_schema = ? AND table_name = ?',
[$dbName, $table]
)->getRowArray();
return ((int) ($row['total'] ?? 0)) > 0;
}
private function fieldExists(string $table, string $field): bool
{
$dbName = (string) ($this->db->database ?? '');
if ($dbName === '' || $table === '' || $field === '') {
return false;
}
$row = $this->db->query(
'SELECT COUNT(*) AS total FROM information_schema.columns WHERE table_schema = ? AND table_name = ? AND column_name = ?',
[$dbName, $table, $field]
)->getRowArray();
return ((int) ($row['total'] ?? 0)) > 0;
}
}