From 34216af497c21e25d79edf770e396097e58a04a9 Mon Sep 17 00:00:00 2001 From: peaklabs-dev <122374094+peaklabs-dev@users.noreply.github.com> Date: Fri, 31 Jan 2025 12:35:34 +0100 Subject: [PATCH] fix(db): SSL certificates table and model - server_id is a foreign id - server_id must be unique as each server can only have 1 CA cert - resource_id must be unique as each resource can only have 1 SSL cert --- app/Models/SslCertificate.php | 6 ++++++ .../2025_01_27_153741_create_ssl_certificates_table.php | 6 ++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/Models/SslCertificate.php b/app/Models/SslCertificate.php index f414e5eca..d16860b22 100644 --- a/app/Models/SslCertificate.php +++ b/app/Models/SslCertificate.php @@ -11,6 +11,7 @@ class SslCertificate extends Model 'ssl_private_key', 'resource_type', 'resource_id', + 'server_id', 'valid_until', ]; @@ -24,4 +25,9 @@ class SslCertificate extends Model { return $this->morphTo(); } + + public function server() + { + return $this->belongsTo(Server::class); + } } diff --git a/database/migrations/2025_01_27_153741_create_ssl_certificates_table.php b/database/migrations/2025_01_27_153741_create_ssl_certificates_table.php index d7b02178d..702f1f534 100644 --- a/database/migrations/2025_01_27_153741_create_ssl_certificates_table.php +++ b/database/migrations/2025_01_27_153741_create_ssl_certificates_table.php @@ -14,10 +14,12 @@ return new class extends Migration $table->text('ssl_private_key'); $table->string('resource_type')->nullable(); $table->unsignedBigInteger('resource_id')->nullable(); - $table->timestamp('valid_until')->nullable(); + $table->unsignedBigInteger('server_id')->nullable(); + $table->timestamp('valid_until'); $table->timestamps(); - $table->index(['resource_type', 'resource_id']); + $table->foreign('server_id')->references('id')->on('servers'); + $table->unique(['server_id', 'resource_id']); }); }