feat(migrations): add ownership fields to doctors table for IRIMC import
- Introduced new columns: owner_status, source, source_ref, managed_by, and claimed_at to the doctors table. - Created indexes for owner_status and source to optimize queries related to unclaimed doctors. feat(auth): implement SystemOwnerCommand for managing system-owner user - Added command to create, activate, and deactivate a system-owner user for IRIMC crawler. - Ensured the user has ROLE_ADMIN to access import endpoints. - Handled password setting and user status management within the command.
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace DoctrineMigrations;
|
||||
|
||||
use Doctrine\DBAL\Schema\Schema;
|
||||
use Doctrine\Migrations\AbstractMigration;
|
||||
|
||||
/**
|
||||
* Doctor profile ownership for IRIMC (سازمان نظام پزشکی) import.
|
||||
*
|
||||
* Adds owner_status / source / source_ref / managed_by / claimed_at to `doctors`
|
||||
* so imported doctors can be stored as "unclaimed" (managed by a system user)
|
||||
* and later transferred to the real doctor. Existing rows become manual+claimed
|
||||
* so their behavior is unchanged.
|
||||
*/
|
||||
final class Version20260711120000 extends AbstractMigration
|
||||
{
|
||||
public function getDescription(): string
|
||||
{
|
||||
return 'Doctor profile ownership (owner_status, source, source_ref, managed_by, claimed_at) for IRIMC import';
|
||||
}
|
||||
|
||||
public function up(Schema $schema): void
|
||||
{
|
||||
$this->addSql(<<<'SQL'
|
||||
ALTER TABLE doctors
|
||||
ADD owner_status VARCHAR(20) NOT NULL DEFAULT 'claimed',
|
||||
ADD source VARCHAR(20) NOT NULL DEFAULT 'manual',
|
||||
ADD source_ref VARCHAR(100) DEFAULT NULL,
|
||||
ADD managed_by INT DEFAULT NULL,
|
||||
ADD claimed_at INT DEFAULT NULL
|
||||
SQL);
|
||||
|
||||
// فیلترِ «پزشکان بدونمالک» و تطبیق idempotency ایمپورت بر پایهٔ (source, medical_system_code)
|
||||
$this->addSql('CREATE INDEX idx_doctors_owner ON doctors (owner_status)');
|
||||
$this->addSql('CREATE INDEX idx_doctors_source ON doctors (source, medical_system_code)');
|
||||
}
|
||||
|
||||
public function down(Schema $schema): void
|
||||
{
|
||||
$this->addSql('DROP INDEX idx_doctors_source ON doctors');
|
||||
$this->addSql('DROP INDEX idx_doctors_owner ON doctors');
|
||||
$this->addSql(<<<'SQL'
|
||||
ALTER TABLE doctors
|
||||
DROP owner_status,
|
||||
DROP source,
|
||||
DROP source_ref,
|
||||
DROP managed_by,
|
||||
DROP claimed_at
|
||||
SQL);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user