UNPKG

@composedb/devtools

Version:

Development tools for ComposeDB projects.

47 lines (46 loc) 1.88 kB
import { createAbstractCompositeDefinition } from './schema/compiler.js'; import { isRelationViewDefinition } from './utils.js'; /** @internal */ export function mockDefinition(definition, providedModels = {}) { const models = {}; const modelsViews = {}; const modelsIndices = {}; for (const abstractModel of Object.values(definition.models)){ if (abstractModel.action === 'create') { const definition = abstractModel.model; if (definition.version !== '1.0') { definition.implements = definition.implements.map((name)=>`${name}ID`); } for (const view of Object.values(definition.views ?? {})){ if (isRelationViewDefinition(view) && view.model !== null) { view.model = `${view.model}ID`; } } models[`${definition.name}ID`] = definition; if (abstractModel.indices) { modelsIndices[`${definition.name}ID`] = abstractModel.indices; } } else { const definition = providedModels[abstractModel.id]; if (definition == null) { throw new Error(`Missing provided model ${abstractModel.id}`); } models[abstractModel.id] = definition; modelsViews[abstractModel.id] = abstractModel.views; if (abstractModel.indices) { modelsIndices[abstractModel.id] = abstractModel.indices; } } } return { version: '1.1', commonEmbeds: definition.commonEmbeds, models, views: { models: modelsViews }, indices: modelsIndices }; } /** @internal */ export function mockDefinitionFromSchema(schema, providedModels) { return mockDefinition(createAbstractCompositeDefinition(schema), providedModels); }