mirror of
https://github.com/LukeHagar/libopenapi.git
synced 2025-12-07 20:47:45 +00:00
feat: add index for getting all "schema" objects #50
There is new code that looks for inline `schema` definitions and collects them, as well as a futher subset of references that are specifically `object` or `array` types. This is a breaking change because the `index.GetAllSchemas()` method now returns a slice of *Reference pointers, rather than a map of them. The original behavior of `GetAllSchemas()` has been replaced with `GetAllComponentSchemas()` which retains the signature. Two new additional methods `GetAllInlineSchemas()` and `GetAllInlineSchemaObjects()`. The former will return everything in the spec marked with `schema` that is not a reference. The latter will return everything the former does, except filtered down by `object` or `array` types. Also the index is now bubbled up through the document model. There isn't a simple way to get access to it, small non breaking change that attaches a reference to the index, returned by `DocumentModel`
This commit is contained in:
@@ -191,7 +191,8 @@ func TestSpecIndex_BurgerShop(t *testing.T) {
|
||||
assert.Equal(t, 6, index.pathCount)
|
||||
assert.Equal(t, 6, index.GetPathCount())
|
||||
|
||||
assert.Equal(t, 6, len(index.GetAllSchemas()))
|
||||
assert.Equal(t, 6, len(index.GetAllComponentSchemas()))
|
||||
assert.Equal(t, 15, len(index.GetAllSchemas()))
|
||||
|
||||
assert.Equal(t, 34, len(index.GetAllSequencedReferences()))
|
||||
assert.NotNil(t, index.GetSchemasNode())
|
||||
@@ -833,19 +834,28 @@ func ExampleNewSpecIndex() {
|
||||
fmt.Printf("There are %d references\n"+
|
||||
"%d paths\n"+
|
||||
"%d operations\n"+
|
||||
"%d schemas\n"+
|
||||
"%d component schemas\n"+
|
||||
"%d inline schemas\n"+
|
||||
"%d inline schemas that are objects or arrays\n"+
|
||||
"%d total schemas\n"+
|
||||
"%d enums\n"+
|
||||
"%d polymorphic references",
|
||||
len(index.GetAllCombinedReferences()),
|
||||
len(index.GetAllPaths()),
|
||||
index.GetOperationCount(),
|
||||
len(index.GetAllComponentSchemas()),
|
||||
len(index.GetAllInlineSchemas()),
|
||||
len(index.GetAllInlineSchemaObjects()),
|
||||
len(index.GetAllSchemas()),
|
||||
len(index.GetAllEnums()),
|
||||
len(index.GetPolyOneOfReferences())+len(index.GetPolyAnyOfReferences()))
|
||||
// Output: There are 537 references
|
||||
// 246 paths
|
||||
// 402 operations
|
||||
// 537 schemas
|
||||
// 537 component schemas
|
||||
// 1530 inline schemas
|
||||
// 711 inline schemas that are objects or arrays
|
||||
// 2067 total schemas
|
||||
// 1516 enums
|
||||
// 828 polymorphic references
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user