// (C) 2007-2019 GoodData Corporation import { IMetadataObject } from "./MetadataObject"; export interface IMaqlAstPosition { line: number; column: number; } export interface IMaqlTree { type: string; value?: string | Date | number; position: IMaqlAstPosition; content?: IMaqlTree; } export interface IMetric extends IMetadataObject { content: { expression: string; tree?: IMaqlTree; format?: string; folders?: string[]; }; links?: { explain2?: string; }; } export interface IWrappedMetric { metric: IMetric; } export function isMetric(object: IMetadataObject): object is IMetric { return object.meta.category === "metric"; } export function getMetricByIdentifier(metrics: IMetric[], identifier: string): IMetric { return metrics.find(metric => metric.meta.identifier === identifier); } export function getMetricByUri(metrics: IMetric[], uri: string): IMetric { return metrics.find(metric => metric.meta.uri === uri); }