UNPKG

@cloudquery/plugin-sdk-javascript

Version:

This is the high-level package to use for developing CloudQuery plugins in JavaScript

50 lines 1.59 kB
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