feathersjs-ecosystem / feathers-swagger

Add documentation to your FeatherJS services and feed them to Swagger UI.
MIT License
226 stars 63 forks source link

An/multi create fix #256

Open AshotN opened 8 months ago

AshotN commented 8 months ago

Summary

feathers-swagger would handle multi: ['create'] by using the base schema type. Which would be not ideal if you have a more narrow create schema. This PR is my attempt at correcting that.

Other Information

Would appreciate letting me know if anything here could use fixes.

My other PR is in here as well, I can remove it if needed. Ideally both can be merged together here.

Mairu commented 8 months ago

Hi @AshotN,

the error you are describing needs not to be fixed in the generator class, there I think all is correct. The problem is, that the createSwaggerServiceOptions helper function does not add the schema refs for the multi operations.

The reason that there is no createMulti function in the generator is, that in the OpenAPI spec, there is no difference in the path for creating a single vs creating multiple, so the multiple case is also handled in the create handler.

https://github.com/feathersjs-ecosystem/feathers-swagger/blob/0bfe44b0ff35d2880cd1bc6de85a201355fb8ae0/lib/v3/generator.js#L218-L241

To fix the problem you have, the ref for multiCreateRequest would need to be added within the createSwaggerServiceOptions helper function. It would then be picked up by the generator.

I think a multi parameter should be added to the createSwaggerServiceOptions function, to be able to create the needed refs for multi operations. The option for multi should probably then also be set.

Give me a hint if you want to work on it, otherwise I could also look into it.