Skip to content

feat: [#206] add provider enum and config types#209

Merged
josecelano merged 1 commit into
mainfrom
206-add-provider-enum-and-config-types
Dec 1, 2025
Merged

feat: [#206] add provider enum and config types#209
josecelano merged 1 commit into
mainfrom
206-add-provider-enum-and-config-types

Conversation

@josecelano

Copy link
Copy Markdown
Member

Summary

Add extensible provider infrastructure for multi-provider deployment support.

Closes #206

Changes

Domain Layer (src/domain/provider/)

  • Provider enum with Lxd and Hetzner variants
  • ProviderConfig enum for provider-specific configurations
  • LxdConfig with validated ProfileName
  • HetznerConfig with api_token, server_type, location fields

Application Layer (src/application/.../provider/)

  • ProviderSection enum for JSON deserialization (tagged by "provider" field)
  • LxdProviderSection with raw String for JSON parsing
  • HetznerProviderSection with raw String fields
  • to_provider_config() method for validation and domain conversion

Key Design Decisions

  1. Modular structure - Each provider has its own file for easy extensibility
  2. DDD layer separation - Application uses raw primitives for JSON, domain uses validated types
  3. Serde tagged enums - Clean JSON format with "provider" field for discrimination
  4. Comprehensive test coverage - All tests follow it_should_ naming convention

Testing

  • All 1214 tests pass
  • Pre-commit checks completed successfully

Add extensible provider infrastructure for multi-provider deployment support.

Domain Layer (src/domain/provider/):
- Provider enum with Lxd and Hetzner variants
- ProviderConfig enum for provider-specific configurations
- LxdConfig with validated ProfileName
- HetznerConfig with api_token, server_type, location fields

Application Layer (src/application/.../provider/):
- ProviderSection enum for JSON deserialization (tagged by "provider" field)
- LxdProviderSection with raw String for JSON parsing
- HetznerProviderSection with raw String fields
- to_provider_config() method for validation and domain conversion

Key Design Decisions:
- Modular structure with separate files per provider for extensibility
- DDD layer separation: raw primitives (application) vs validated types (domain)
- Serde tagged enums for clean JSON format
- Comprehensive test coverage following it_should_ naming convention
@josecelano josecelano self-assigned this Dec 1, 2025
@josecelano

Copy link
Copy Markdown
Member Author

ACK 775fbeb

@josecelano
josecelano merged commit 8b22c73 into main Dec 1, 2025
34 checks passed
@josecelano
josecelano deleted the 206-add-provider-enum-and-config-types branch April 15, 2026 16:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add Provider enum and ProviderConfig types to domain layer

1 participant