mirror of
https://github.com/qdrant/qdrant.git
synced 2026-07-26 12:41:04 -05:00
53 lines
1.5 KiB
JavaScript
53 lines
1.5 KiB
JavaScript
const toOpenApi = require('@openapi-contrib/json-schema-to-openapi-schema');
|
|
|
|
const fs = require('fs');
|
|
|
|
let rawdata = fs.readFileSync('schema.json');
|
|
|
|
let schema = JSON.parse(rawdata);
|
|
|
|
// Generated result contains usage of "allOf" directive with a single class.
|
|
// It breaks client generator serves no function.
|
|
// This function should replace "allOf" directives with simple class usages
|
|
function replaceAllOf(schema) {
|
|
if (Array.isArray(schema)) {
|
|
var newSchema = [];
|
|
for (var k in schema) {
|
|
newSchema[k] = replaceAllOf(schema[k]);
|
|
}
|
|
return newSchema;
|
|
}
|
|
if (typeof schema === 'object' && schema !== null) {
|
|
var newSchema = {};
|
|
for (var k in schema) {
|
|
if (k === 'allOf' && schema[k].length === 1) {
|
|
newSchema = {...schema[k][0]};
|
|
break
|
|
} else {
|
|
newSchema[k] = replaceAllOf(schema[k]);
|
|
}
|
|
}
|
|
return newSchema;
|
|
}
|
|
return schema;
|
|
}
|
|
|
|
|
|
|
|
(async () => {
|
|
var convertedSchema = await toOpenApi(schema);
|
|
|
|
convertedSchema = replaceAllOf(convertedSchema);
|
|
|
|
for (var modelName in convertedSchema['definitions']) {
|
|
convertedSchema['definitions'][modelName]["$schema"] = schema["$schema"];
|
|
convertedSchema['definitions'][modelName] = await toOpenApi(convertedSchema['definitions'][modelName]);
|
|
}
|
|
|
|
console.log(JSON.stringify({components: {schemas: convertedSchema['definitions']}}, null, 4));
|
|
})();
|
|
|
|
|
|
|
|
|