UNPKG

compassql

Version:

CompassQL visualization query language

32 lines (29 loc) 984 B
import {DEFAULT_QUERY_CONFIG, QueryConfig} from './config'; import {generate} from './generate'; import {SpecQueryModelGroup} from './model'; import {nest} from './nest'; import {normalize} from './query/normalize'; import {Query} from './query/query'; import {rank} from './ranking/ranking'; import {Schema} from './schema'; export function recommend(q: Query, schema: Schema, config?: QueryConfig): {query: Query, result: SpecQueryModelGroup} { // 1. Normalize non-nested `groupBy` to always have `groupBy` inside `nest` // and merge config with the following precedence // query.config > config > DEFAULT_QUERY_CONFIG q = { ...normalize(q), config: { ...DEFAULT_QUERY_CONFIG, ...config, ...q.config } }; // 2. Generate const answerSet = generate(q.spec, schema, q.config); const nestedAnswerSet = nest(answerSet, q.nest); const result = rank(nestedAnswerSet, q, schema, 0); return { query: q, result: result }; }