diff --git a/app/Console/Commands/GenerateJSEnums.php b/app/Console/Commands/GenerateJSEnums.php index 88fa0a4..b6caa11 100644 --- a/app/Console/Commands/GenerateJSEnums.php +++ b/app/Console/Commands/GenerateJSEnums.php @@ -69,6 +69,14 @@ class GenerateJSEnums extends Command $js .= "\n"; } + if (method_exists($enum, 'getDescription')) { + $values = $enum::toArray(); + $descriptions = array_map(fn($key) => $enum::getDescription($key), $values); + $js .= 'export const DescriptionMap = '; + $js .= json_encode($descriptions, JSON_PRETTY_PRINT) . "\n"; + $js .= "\n"; + } + if (method_exists($enum, 'colours')) { $colours = $enum::colours(); $js .= 'export const ColourMap = '; diff --git a/app/Enums/ServiceCategory.php b/app/Enums/ServiceCategory.php index f4223b2..f846208 100644 --- a/app/Enums/ServiceCategory.php +++ b/app/Enums/ServiceCategory.php @@ -13,4 +13,20 @@ enum ServiceCategory: string case GATEWAY = 'gateway'; case STORAGE = 'storage'; case CACHE = 'cache'; + + public static function getDescription(ServiceCategory|string $category) { + if (is_string($category)) { + $category = ServiceCategory::from($category); + } + if (! $category instanceof ServiceCategory) { + throw new \InvalidArgumentException('Invalid category provided'); + } + return match ($category) { + self::APPLICATION => 'The base container image for your application', + self::DATABASE => 'Postgres or MySQL', + self::GATEWAY => 'The gateway is the first point of contact for your application', + self::STORAGE => 'S3 or S3-compatible service', + self::CACHE => 'Redis, Memcached or similar', + }; + } } \ No newline at end of file diff --git a/resources/js/enums/DeploymentStatus.js b/resources/js/enums/DeploymentStatus.js index 8159a5a..8476012 100644 --- a/resources/js/enums/DeploymentStatus.js +++ b/resources/js/enums/DeploymentStatus.js @@ -1,5 +1,5 @@ // This is a generated file. -// Published at 2025-04-01 16:18:32 +// Published at 2025-04-01 16:27:12 export default { "PENDING": "pending", diff --git a/resources/js/enums/FirewallRuleStatus.js b/resources/js/enums/FirewallRuleStatus.js index 1cadfaa..9147c14 100644 --- a/resources/js/enums/FirewallRuleStatus.js +++ b/resources/js/enums/FirewallRuleStatus.js @@ -1,5 +1,5 @@ // This is a generated file. -// Published at 2025-04-01 16:18:32 +// Published at 2025-04-01 16:27:12 export default { "NOT_APPLIED": "not-applied", diff --git a/resources/js/enums/OrganisationRole.js b/resources/js/enums/OrganisationRole.js index b19af7d..1e14361 100644 --- a/resources/js/enums/OrganisationRole.js +++ b/resources/js/enums/OrganisationRole.js @@ -1,5 +1,5 @@ // This is a generated file. -// Published at 2025-04-01 16:18:32 +// Published at 2025-04-01 16:27:12 export default { "ADMIN": "admin", diff --git a/resources/js/enums/RepositoryType.js b/resources/js/enums/RepositoryType.js index 887413f..6ed3b2a 100644 --- a/resources/js/enums/RepositoryType.js +++ b/resources/js/enums/RepositoryType.js @@ -1,5 +1,5 @@ // This is a generated file. -// Published at 2025-04-01 16:18:32 +// Published at 2025-04-01 16:27:12 export default { "GIT": "git" diff --git a/resources/js/enums/ServerProvider.js b/resources/js/enums/ServerProvider.js index 5ee2b56..6bdc42a 100644 --- a/resources/js/enums/ServerProvider.js +++ b/resources/js/enums/ServerProvider.js @@ -1,5 +1,5 @@ // This is a generated file. -// Published at 2025-04-01 16:18:32 +// Published at 2025-04-01 16:27:12 export default { "HETZNER": "hetzner", diff --git a/resources/js/enums/ServerStatus.js b/resources/js/enums/ServerStatus.js index c014333..37c27d1 100644 --- a/resources/js/enums/ServerStatus.js +++ b/resources/js/enums/ServerStatus.js @@ -1,5 +1,5 @@ // This is a generated file. -// Published at 2025-04-01 16:18:32 +// Published at 2025-04-01 16:27:12 export default { "WAITING_FOR_PROVIDER": "waiting-for-provider", diff --git a/resources/js/enums/ServiceCategory.js b/resources/js/enums/ServiceCategory.js index f4adf42..2cf8754 100644 --- a/resources/js/enums/ServiceCategory.js +++ b/resources/js/enums/ServiceCategory.js @@ -1,5 +1,5 @@ // This is a generated file. -// Published at 2025-04-01 16:18:32 +// Published at 2025-04-01 16:27:12 export default { "DATABASE": "database", @@ -9,3 +9,11 @@ export default { "CACHE": "cache" } +export const DescriptionMap = { + "DATABASE": "Postgres or MySQL", + "APPLICATION": "The base container image for your application", + "GATEWAY": "The gateway is the first point of contact for your application", + "STORAGE": "S3 or S3-compatible service", + "CACHE": "Redis, Memcached or similar" +} + diff --git a/resources/js/enums/ServiceStatus.js b/resources/js/enums/ServiceStatus.js index cbf1278..fb09c1d 100644 --- a/resources/js/enums/ServiceStatus.js +++ b/resources/js/enums/ServiceStatus.js @@ -1,5 +1,5 @@ // This is a generated file. -// Published at 2025-04-01 16:18:32 +// Published at 2025-04-01 16:27:12 export default { "NOT_INSTALLED": "not-installed", diff --git a/resources/js/enums/ServiceType.js b/resources/js/enums/ServiceType.js index a556c6f..67b1ead 100644 --- a/resources/js/enums/ServiceType.js +++ b/resources/js/enums/ServiceType.js @@ -1,5 +1,5 @@ // This is a generated file. -// Published at 2025-04-01 16:18:32 +// Published at 2025-04-01 16:27:12 export default { "FRANKENPHP": "frankenphp", diff --git a/resources/js/pages/services/Create.vue b/resources/js/pages/services/Create.vue index abfe245..fa27daa 100644 --- a/resources/js/pages/services/Create.vue +++ b/resources/js/pages/services/Create.vue @@ -1,13 +1,14 @@