diff --git a/app/Enums/NetworkType.php b/app/Enums/NetworkType.php new file mode 100644 index 0000000..c7bb056 --- /dev/null +++ b/app/Enums/NetworkType.php @@ -0,0 +1,13 @@ + NetworkType::class, + 'provider' => ServerProvider::class, + ]; + } + + public function internalServers(): HasMany + { + return $this->hasMany(Server::class, 'internal_network_id'); + } + + public function externalServers(): HasMany + { + return $this->hasMany(Server::class, 'external_network_id'); + } + + public function organisation(): BelongsTo + { + return $this->belongsTo(Organisation::class); + } +} diff --git a/app/Models/Server.php b/app/Models/Server.php index 88a74d0..cb9dc1b 100644 --- a/app/Models/Server.php +++ b/app/Models/Server.php @@ -25,6 +25,16 @@ class Server extends Model ]; } + public function externalNetwork(): BelongsTo + { + return $this->belongsTo(Network::class, 'external_network_id'); + } + + public function internalNetwork(): BelongsTo + { + return $this->belongsTo(Network::class, 'internal_network_id'); + } + public function organisation(): BelongsTo { return $this->belongsTo(Organisation::class); diff --git a/database/migrations/2025_03_27_120552_create_servers_table.php b/database/migrations/2025_03_27_120552_create_servers_table.php index 02d945b..0db8f48 100644 --- a/database/migrations/2025_03_27_120552_create_servers_table.php +++ b/database/migrations/2025_03_27_120552_create_servers_table.php @@ -1,5 +1,6 @@ id(); $table->foreignIdFor(Organisation::class); + $table->foreignIdFor(Network::class, 'external_network_id'); + $table->foreignIdFor(Network::class, 'internal_network_id'); $table->string('name'); $table->string('provider'); $table->string('provider_id'); diff --git a/database/migrations/2025_04_06_171437_create_networks_table.php b/database/migrations/2025_04_06_171437_create_networks_table.php new file mode 100644 index 0000000..b264043 --- /dev/null +++ b/database/migrations/2025_04_06_171437_create_networks_table.php @@ -0,0 +1,28 @@ +id(); + $table->foreignIdFor(Organisation::class); + $table->string('type'); + $table->string('provider')->nullable(); + $table->string('provider_id')->nullable(); + $table->string('name'); + $table->string('ip_range'); + $table->timestamps(); + }); + } + + public function down(): void + { + Schema::dropIfExists('networks'); + } +};