droplets: refactor how to assign resources #1500
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This refactors how we move created resources to projects to make it generic-ish. As long as the resource implements the
URN()
method, we can use a helper that performs the assign resources call.This is not quite ideal due to how the commands are architected. Because we double-wrap the raw godo resources (first in a wrapper struct, then in the type alias for a slice of those wrapped structs), Go's type system isn't able to recognize those slices as implementing a slice of
urner
interfaces. What it can do though, is recognize each individual element of those slices as implementing theurner
interface, so the method I created will only accept a singleurner
, despite the call to assign resources accepting a slice of URNs.I think the tradeoff is worth it, since each command that can support the projects functionality can use the same
moveToProject
, and what we lose in efficiency by having multiple calls to assign resources in some instances, we gain in consistency.