After discussion with @jeff-cohere, we propose to restructure the database packages to include all configuration structs and validation logic within each specific database package. Individual database packages could roughly be structured as:
- databases
| - foo
| - foo_test.go
| - foo.go
| - errors.go
| - config.go
| - validate.go
This would localize the logic for validation for databases, allow database-specific configuration data (username/password, API secret, etc.), and facilitate integration testing (stand alone testing of one database's valid and invalid configurations vs. expected database instances).
If this approach ends up being useful for databases, it could be applied to other package types