diff --git a/internal/test/x-go/x-go-type/override_on_ref/Makefile b/internal/test/x-go/x-go-type/override_on_ref/Makefile deleted file mode 100644 index 4d738c0f6..000000000 --- a/internal/test/x-go/x-go-type/override_on_ref/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -abc: - go run github.com/livesession/oapi-codegen/v2/cmd/oapi-codegen -config cfg.yaml openapi.yaml \ No newline at end of file diff --git a/internal/test/x-go/x-go-type/override_on_ref/x_go_type_override_on_ref.gen.go b/internal/test/x-go/x-go-type/override_on_ref/x_go_type_override_on_ref.gen.go index 8e72080d1..6e931a801 100644 --- a/internal/test/x-go/x-go-type/override_on_ref/x_go_type_override_on_ref.gen.go +++ b/internal/test/x-go/x-go-type/override_on_ref/x_go_type_override_on_ref.gen.go @@ -1,6 +1,6 @@ // Package x_go_type_override_on_ref provides primitives to interact with the openapi HTTP API. // -// Code generated by github.com/livesession/oapi-codegen/v2/internal/test version (devel) DO NOT EDIT. +// Code generated by github.com/livesession/oapi-codegen/v2 version v2.0.0-00010101000000-000000000000 DO NOT EDIT. package x_go_type_override_on_ref // ResponseBase defines model for response.Base. diff --git a/pkg/codegen/schema.go b/pkg/codegen/schema.go index 24b2b45ce..dd4820d47 100644 --- a/pkg/codegen/schema.go +++ b/pkg/codegen/schema.go @@ -334,6 +334,19 @@ func GenerateGoSchema(sref *openapi3.SchemaRef, path []string) (Schema, error) { return mergedSchema, nil } + // AllOf is interesting, and useful. It's the union of a number of other + // schemas. A common usage is to create a union of an object with an ID, + // so that in a RESTful paradigm, the Create operation can return + // (object, id), so that other operations can refer to (id) + if schema.AllOf != nil { + mergedSchema, err := MergeSchemas(schema, path) + if err != nil { + return Schema{}, fmt.Errorf("error merging schemas: %w", err) + } + mergedSchema.OAPISchema = schema + return mergedSchema, nil + } + // Schema type and format, eg. string / binary t := schema.Type // Handle objects and empty schemas first as a special case