// (C) 2007-2019 GoodData Corporation import { SchemaGroupMeta, ISchemaGroup } from "../model/SchemaGroup"; import { IGroupMeta, IProjectGroup } from "../../model/MockProject"; import { ISchema } from "../model/Schema"; import { IProject } from "../../model/Project"; import { createProject } from "./ProjectBuilder"; import { ensureItems } from "../helpers/objects"; import { createAttribute } from "./AttributeBuilder"; import { createMetric } from "./MetricBuilder"; import { createFact } from "./FactBuilder"; import { createDateDataSet } from "./DateDataSetBuilder"; function createGroupMeta(meta: SchemaGroupMeta = {}): IGroupMeta { const { identifier, type = "production" } = meta; return { identifier, type, }; } export function createGroups(schema: ISchema) { const project: IProject = createProject(schema); return ensureItems(schema.groups).map( (group: ISchemaGroup): IProjectGroup => ({ attributes: ensureItems(group.attributes).map(attribute => createAttribute(project, attribute)), metrics: ensureItems(group.metrics).map(metric => createMetric(project, metric)), facts: ensureItems(group.facts).map(fact => createFact(project, fact)), dateDataSets: ensureItems(group.dateDataSets).map(dateDataSet => createDateDataSet(project, dateDataSet), ), meta: createGroupMeta(group.meta), }), ); }