papsign / Ktor-OpenAPI-Generator

Ktor OpenAPI/Swagger 3 Generator
Apache License 2.0
243 stars 42 forks source link

Suggestion for conditional validation #134

Open janhaesen opened 1 year ago

janhaesen commented 1 year ago

I'm wondering how one would suggest altering the code concerning validations in such a way that a conditional validator can be incorporated that is dependent on other values.

For example given an object that has a start and end date parameter. I'd like to validate that the end date is higher or equal to the start date.

Currently all validation is on a individual field basis. Which works well for 95% of the use cases. I was personally thinking of adjusting the ValidationHandler https://github.com/papsign/Ktor-OpenAPI-Generator/blob/f7e7048c945c65526a38efe655fa60e88d0fc19a/src/main/kotlin/com/papsign/ktor/openapigen/validation/ValidationHandler.kt#L239 to create perhaps a wrapper around it that will be able to validate the properties once all others are done. Considering the ValidationHandler is recursive this is in theory already kind of the case. I've yet to found a way that I see fitting well.

What suggestions would you have? Would you feel this being a worthy contribution to the library?

Wicpar commented 1 year ago

In priciple the use case would be to wrap that in a new class that represents a date range and validate that. But if you believe you can make an ergonomic alternative i will gladly accept it.