From 21b24fe54234f9427cfca1a04027e7e327966e74 Mon Sep 17 00:00:00 2001 From: Masroor Ehsan Date: Mon, 27 Jan 2025 17:34:59 +0600 Subject: [PATCH] wip new rules engine --- app/Models/DicomRoutingRule.php | 8 ----- app/Models/DicomRuleCondition.php | 22 ------------- composer.json | 1 + ...75040_create_dicom_routing_rules_table.php | 3 +- ...754_create_dicom_rule_conditions_table.php | 31 ------------------- 5 files changed, 2 insertions(+), 63 deletions(-) delete mode 100644 app/Models/DicomRuleCondition.php delete mode 100644 database/migrations/2024_12_29_073754_create_dicom_rule_conditions_table.php diff --git a/app/Models/DicomRoutingRule.php b/app/Models/DicomRoutingRule.php index 1fa845d..eace696 100644 --- a/app/Models/DicomRoutingRule.php +++ b/app/Models/DicomRoutingRule.php @@ -2,21 +2,14 @@ namespace App\Models; -use App\Domain\Rule\MatchCondition; use App\Models\Traits\Active; use Illuminate\Database\Eloquent\Relations\BelongsTo; -use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasOne; class DicomRoutingRule extends BaseModel { use Active; - public function conditions(): HasMany - { - return $this->hasMany(DicomRuleCondition::class); - } - public function organization(): BelongsTo { return $this->belongsTo(Organization::class); @@ -41,7 +34,6 @@ protected function casts(): array { return [ 'is_active' => 'boolean', - 'match_condition' => MatchCondition::class, ]; } } diff --git a/app/Models/DicomRuleCondition.php b/app/Models/DicomRuleCondition.php deleted file mode 100644 index b4b9668..0000000 --- a/app/Models/DicomRuleCondition.php +++ /dev/null @@ -1,22 +0,0 @@ -belongsTo(DicomRoutingRule::class); - } - - protected function casts(): array - { - return [ - 'case_sensitive' => 'boolean', - 'match_mode' => MatchMode::class, - ]; - } -} diff --git a/composer.json b/composer.json index b4ef141..ac57e12 100644 --- a/composer.json +++ b/composer.json @@ -29,6 +29,7 @@ "sentry/sentry-laravel": "^4.10", "spatie/laravel-medialibrary": "^11.11", "spatie/laravel-permission": "^6.10", + "symfony/expression-language": "^7.2", "vinkla/hashids": "^12.0", "yajra/laravel-datatables": "^11.0" }, diff --git a/database/migrations/2024_12_28_175040_create_dicom_routing_rules_table.php b/database/migrations/2024_12_28_175040_create_dicom_routing_rules_table.php index 3574334..8f75ff7 100644 --- a/database/migrations/2024_12_28_175040_create_dicom_routing_rules_table.php +++ b/database/migrations/2024_12_28_175040_create_dicom_routing_rules_table.php @@ -1,6 +1,5 @@ foreignIdFor(User::class)->nullable()->constrained()->nullOnDelete(); $table->foreignIdFor(AssignmentPanel::class)->nullable()->constrained()->nullOnDelete(); $table->string('name')->nullable(); - $table->string('match_condition')->default(MatchCondition::ANY->value); + $table->string('condition'); $table->unsignedTinyInteger('priority')->default(0); $table->timestamps(); diff --git a/database/migrations/2024_12_29_073754_create_dicom_rule_conditions_table.php b/database/migrations/2024_12_29_073754_create_dicom_rule_conditions_table.php deleted file mode 100644 index 07acf00..0000000 --- a/database/migrations/2024_12_29_073754_create_dicom_rule_conditions_table.php +++ /dev/null @@ -1,31 +0,0 @@ -id(); - $table->foreignIdFor(DicomRoutingRule::class)->constrained()->cascadeOnDelete(); - $table->string('dicom_tag'); - $table->string('search_pattern'); - $table->boolean('case_sensitive')->default(false); - $table->string('match_mode')->default(MatchMode::Exact->value); - $table->unsignedTinyInteger('priority')->default(0); - $table->timestamps(); - - $table->index(['dicom_routing_rule_id', 'priority']); - }); - } - - public function down(): void - { - Schema::dropIfExists('dicom_rule_conditions'); - } -};