diff --git a/app/Models/PrivateKey.php b/app/Models/PrivateKey.php new file mode 100644 index 000000000..6da73fc87 --- /dev/null +++ b/app/Models/PrivateKey.php @@ -0,0 +1,11 @@ +morphTo(); + } +} diff --git a/app/Models/Server.php b/app/Models/Server.php new file mode 100644 index 000000000..8e025a75e --- /dev/null +++ b/app/Models/Server.php @@ -0,0 +1,11 @@ +morphMany(PrivateKey::class, 'private_key_morph'); + } +} diff --git a/database/migrations/2023_03_24_140711_create_servers_table.php b/database/migrations/2023_03_24_140711_create_servers_table.php new file mode 100644 index 000000000..0cbd2419a --- /dev/null +++ b/database/migrations/2023_03_24_140711_create_servers_table.php @@ -0,0 +1,34 @@ +id(); + $table->string('uuid')->unique(); + $table->string('name'); + $table->string('description')->nullable(); + $table->string('ip'); + $table->integer('port')->default(22); + $table->string('user')->default('root'); + $table->foreignId('team_id'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('servers'); + } +}; diff --git a/database/migrations/2023_03_24_140853_create_private_keys_table.php b/database/migrations/2023_03_24_140853_create_private_keys_table.php new file mode 100644 index 000000000..3304ed918 --- /dev/null +++ b/database/migrations/2023_03_24_140853_create_private_keys_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('uuid')->unique(); + $table->string('name'); + $table->string('description')->nullable(); + $table->longText('private_key'); + $table->nullableMorphs('private_key_morph'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('private_keys'); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 7b2f6bbcd..19606f85a 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -12,6 +12,8 @@ class DatabaseSeeder extends Seeder $this->call([ UserSeeder::class, TeamSeeder::class, + ServerSeeder::class, + PrivateKeySeeder::class, ]); } } diff --git a/database/seeders/PrivateKeySeeder.php b/database/seeders/PrivateKeySeeder.php new file mode 100644 index 000000000..522c4c703 --- /dev/null +++ b/database/seeders/PrivateKeySeeder.php @@ -0,0 +1,30 @@ + "Testing-host", + "description" => "This is a test docker container", + "private_key" => "-----BEGIN OPENSSH PRIVATE KEY-----\ + b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW\ + QyNTUxOQAAACBbhpqHhqv6aI67Mj9abM3DVbmcfYhZAhC7ca4d9UCevAAAAJi/QySHv0Mk\ + hwAAAAtzc2gtZWQyNTUxOQAAACBbhpqHhqv6aI67Mj9abM3DVbmcfYhZAhC7ca4d9UCevA\ + AAAECBQw4jg1WRT2IGHMncCiZhURCts2s24HoDS0thHnnRKVuGmoeGq/pojrsyP1pszcNV\ + uZx9iFkCELtxrh31QJ68AAAAEXNhaWxANzZmZjY2ZDJlMmRkAQIDBA==\ + -----END OPENSSH PRIVATE KEY-----", + ])->private_key_morph()->associate($server)->save(); + } +} diff --git a/database/seeders/ServerSeeder.php b/database/seeders/ServerSeeder.php new file mode 100644 index 000000000..8d1499689 --- /dev/null +++ b/database/seeders/ServerSeeder.php @@ -0,0 +1,26 @@ + 1, + 'name' => "testing-host", + 'description' => "This is a test docker container", + 'ip' => "coolify-testing-host", + 'team_id' => $root_team->id, + ]); + } +}