diff --git a/app/Commands/RefreshLabTemplates.php b/app/Commands/RefreshLabTemplates.php new file mode 100644 index 0000000..e4072a4 --- /dev/null +++ b/app/Commands/RefreshLabTemplates.php @@ -0,0 +1,58 @@ +query('SET FOREIGN_KEY_CHECKS = 0'); + + // Order matters for dependent rows + $db->query('TRUNCATE TABLE lab_repotests'); + $db->query('TRUNCATE TABLE lab_tests_option'); + $db->query('TRUNCATE TABLE lab_tests'); + $db->query('TRUNCATE TABLE lab_repo'); + $db->query('TRUNCATE TABLE lab_rgroups'); + $db->query('TRUNCATE TABLE radiology_ultrasound_template'); + + $db->query('SET FOREIGN_KEY_CHECKS = 1'); + + CLI::write('Template tables truncated. Running LabTemplateSeeder...', 'green'); + + $seeder = \Config\Database::seeder(); + $seeder->call('App\\Database\\Seeds\\LabTemplateSeeder'); + + $cbc = $db->query("SELECT mstRepoKey, Title FROM lab_repo WHERE Title LIKE '%CBC%' LIMIT 1")->getRow(); + + if ($cbc) { + CLI::write('CBC template restored: #' . (string) $cbc->mstRepoKey . ' - ' . (string) $cbc->Title, 'green'); + } else { + CLI::error('CBC template still not found after refresh. Check DB connection and seed files.'); + } + + CLI::write('Done.', 'green'); + } catch (\Throwable $e) { + try { + $db->query('SET FOREIGN_KEY_CHECKS = 1'); + } catch (\Throwable $ignored) { + } + CLI::error('Refresh failed: ' . $e->getMessage()); + } + } +} diff --git a/app/Database/Seeds/LabTemplateSeeder.php b/app/Database/Seeds/LabTemplateSeeder.php index c6ec4f4..010d0c5 100644 --- a/app/Database/Seeds/LabTemplateSeeder.php +++ b/app/Database/Seeds/LabTemplateSeeder.php @@ -43,8 +43,9 @@ class LabTemplateSeeder extends Seeder { $sqlDir = __DIR__ . DIRECTORY_SEPARATOR . 'LabOemData' . DIRECTORY_SEPARATOR; + $this->db->query('SET @OLD_SQL_MODE = @@SESSION.sql_mode'); $this->db->query('SET FOREIGN_KEY_CHECKS = 0'); - $this->db->query('SET SQL_MODE = ""'); // silence STRICT for legacy MyISAM data + $this->db->query('SET SESSION SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"'); foreach (self::SQL_FILES as $file) { $path = $sqlDir . $file; @@ -80,7 +81,7 @@ class LabTemplateSeeder extends Seeder } $this->db->query('SET FOREIGN_KEY_CHECKS = 1'); - $this->db->query('SET SQL_MODE = DEFAULT'); + $this->db->query('SET SESSION SQL_MODE = @OLD_SQL_MODE'); CLI::write('Lab template seeder complete.', 'green'); }