@cloudquery/plugin-sdk-javascript
Version:
This is the high-level package to use for developing CloudQuery plugins in JavaScript
50 lines • 1.59 kB
JavaScript
import { Utf8, Int64, Bool } from '@apache-arrow/esnext-esm';
import { createColumn } from '../schema/column.js';
import { JSONType } from '../types/json.js';
function oapiTypeToArrowType(field) {
const oapiType = field.type;
switch (oapiType) {
case 'string': {
return new Utf8();
}
case 'number':
case 'integer': {
return new Int64();
}
case 'boolean': {
return new Bool();
}
case 'array':
case 'object': {
return new JSONType();
}
default: {
return !oapiType && '$ref' in field ? new JSONType() : new Utf8();
}
}
}
export function getColumnByName(columns, name) {
for (const column of columns) {
if (column.name === name) {
return column;
}
}
return undefined;
}
export function oapiDefinitionToColumns(definition, overrideColumns = []) {
const columns = [];
for (const key in definition.properties) {
const value = definition.properties[key];
const columnType = oapiTypeToArrowType(value);
const column = createColumn({ name: key, type: columnType, description: value.description });
const overrideColumn = getColumnByName(overrideColumns, key);
if (overrideColumn) {
column.type = overrideColumn.type;
column.primaryKey = overrideColumn.primaryKey;
column.unique = overrideColumn.unique;
}
columns.push(column);
}
return columns;
}
//# sourceMappingURL=openapi.js.map