Skip to content

Conversation

@bgentry
Copy link
Contributor

@bgentry bgentry commented Mar 19, 2025

This is a proof of concept which makes it possible to use custom types and validations within the framework. You may not love this if you're wanting to keep the usage of the validation library as an internal implementation detail which could be swapped out, though in its current state (with a global validator variable that's unexported in an internal package) you cannot register custom types or validations.

This PR reworks the internal validation logic so that a customized validator can be provided. This allows for custom types and validations to be registered for use within the framework. Custom validators are passed as part of MountOpts.

Rework the internal validation logic so that a customized validator can
be provided. This allows for custom types and validations to be
registered for use within the framework.

Custom validators are passed as part of MountOpts.
@bgentry bgentry requested a review from brandur March 19, 2025 20:52
MiddlewareStack *apimiddleware.MiddlewareStack
// Validator is the validator to use for this endpoint. If not specified,
// the default validator will be used.
Validator *validator.Validate
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The only thing is that it seems like a bit of a smell to have this configured on a per-endpoint basis. Very likely you'd want one custom validator that you're going to be using application-wide, and having to inject that into every single endpoint seems like a large-ish chore and would add quite a lot of visual noise to the definitions.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, the issue is there’s no global struct to keep it on. I will say in practice it turned out to not be bad because I’m reusing the same mount opts struct for all endpoints in each group (authenticated and not).

@bgentry bgentry marked this pull request as ready for review March 20, 2025 14:42
@bgentry bgentry merged commit 85aad90 into master Mar 20, 2025
2 checks passed
@bgentry bgentry deleted the bg-custom-validator-instances branch March 20, 2025 14:43
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.

3 participants