ogen
ogen copied to clipboard
Discriminator Inference: Not generating despite completely unique fields
What version of ogen are you using?
0.82.0
Can this issue be reproduced with the latest version?
Yes
What did you do?
Ran generator script in my repo to generate client: (cd api-spec; npm run build:public && npm run build:internal) && ./generate.sh
Which has the following line in generate.sh:
go run github.com/ogen-go/ogen/cmd/[email protected] --config=config.json --target client --clean ./api-spec/dist/public-api.yml
All of the types in the union with the issue have unique required fields, yet I get the error below when trying to generate.
Repo in question: https://github.com/cycleplatform/api-client-go
This file is the problem: https://github.com/cycleplatform/api-spec/blob/75211f91a87bdb6457a83df47432edcf099cc003/components/schemas/includes/ComponentsIncludes.yml
If I comment out the last entry (../pipelines/runs/Run.yml) then everything works. Adding that last line back in gives the error. This doesn't make sense, according to the docs (https://ogen.dev/docs/types/sumtype/#unique-fields-discriminator) you need to have unique required fields, which this entry definitely does, so I'm not sure how it can be changed to build a successfully generated client that includes endpoints reliant on this type.
What did you expect to see?
Successful generation of the client.
What did you see instead?
Feature "discriminator inference" is not implemented yet.
Try to create ogen.yml with:
generator:
ignore_not_implemented: "discriminator inference"
or
generator:
ignore_not_implemented: ["all"]
to skip unsupported operations.
generation failed:
main.run
/home/alex/go/pkg/mod/github.com/ogen-go/[email protected]/cmd/ogen/main.go:308
exit status 1
It does seems like Run has no unique fields.
idis defined by many schemes, e.g.ApiKeycreatoris defined by many schemes, e.g.ApiKeyhub_idis defined by many schemes, e.g.ApiKeypipeline_idis defined byTriggerKeytoostagesis defined byPipelinetoostateis defned by many schemes, e.g.ApiKeyeventsis defined by many schemes, e.g.ApiKeyvariablesis defined byStacktoo
We should improve error reporting in that case, I think.
I see, I understood it as, no other discriminated type can have all the same fields, not that the summary of them cannot appear across multiple different types. Is it not possible to discriminate based on having ALL the required fields instead?