From a2097ade6afdaa448614aa3c063b9468736107fa Mon Sep 17 00:00:00 2001 From: mahdahar <89adham@gmail.com> Date: Wed, 7 Jan 2026 08:59:36 +0700 Subject: [PATCH] feat: Add AreaGeoSeeder for importing geographic data from external database MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Create AreaGeoSeeder to import area geo data from external zones table - Add field mapping: zonecode→AreaCode, zoneclass→Class, zonename→AreaName, parentzoneid→Parent - Support same-server external databases using direct SQL queries - Register seeder in DBSeeder for inclusion in main seeding workflow --- app/Database/Seeds/AreaGeoSeeder.php | 42 ++++++++++++++++++++++++++++ app/Database/Seeds/DBSeeder.php | 7 +++-- 2 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 app/Database/Seeds/AreaGeoSeeder.php diff --git a/app/Database/Seeds/AreaGeoSeeder.php b/app/Database/Seeds/AreaGeoSeeder.php new file mode 100644 index 0000000..ba5d47c --- /dev/null +++ b/app/Database/Seeds/AreaGeoSeeder.php @@ -0,0 +1,42 @@ +db->query( + "SELECT zonecode, zoneclass, zonename, parentzoneid FROM {$this->externalDbName}.zones ORDER BY zoneid ASC" + )->getResultArray(); + + if (empty($externalData)) { + echo "No data found in external database.\n"; + return; + } + + // Prepare data for insertion (exclude AreaGeoID to allow auto-increment) + $data = []; + foreach ($externalData as $row) { + $data[] = [ + 'AreaCode' => $row['zonecode'], + 'Class' => $row['zoneclass'], + 'AreaName' => $row['zonename'], + 'Parent' => $row['parentzoneid'], + ]; + } + + // Insert into local database + $this->db->table('areageo')->insertBatch($data); + + echo "Successfully seeded " . count($data) . " area geo records.\n"; + } +} diff --git a/app/Database/Seeds/DBSeeder.php b/app/Database/Seeds/DBSeeder.php index dc8c1ef..bc88c73 100644 --- a/app/Database/Seeds/DBSeeder.php +++ b/app/Database/Seeds/DBSeeder.php @@ -4,14 +4,17 @@ namespace App\Database\Seeds; use CodeIgniter\Database\Seeder; -class DBSeeder extends Seeder { - public function run() { +class DBSeeder extends Seeder +{ + public function run() + { $this->call('ValueSetSeeder'); $this->call('ValueSetCountrySeeder'); $this->call('OrganizationSeeder'); $this->call('CounterSeeder'); $this->call('ContactSeeder'); $this->call('LocationSeeder'); + $this->call('AreaGeoSeeder'); $this->call('SpecimenSeeder'); $this->call('TestSeeder'); $this->call('PatientSeeder');