async function populateMetaData()

in dashboards-reports/server/routes/utils/savedSearchReportHelper.ts [65:121]


async function populateMetaData(
  client: ILegacyClusterClient | ILegacyScopedClusterClient,
  report: any,
  isScheduledTask: boolean,
  logger: Logger
) {
  metaData.saved_search_id =
    report.report_definition.report_params.core_params.saved_search_id;
  metaData.report_format =
    report.report_definition.report_params.core_params.report_format;
  metaData.start = report.time_from;
  metaData.end = report.time_to;

  // Get saved search info
  let resIndexPattern: any = {};
  const ssParams = {
    index: '.kibana',
    id: 'search:' + metaData.saved_search_id,
  };
  const ssInfos = await callCluster(client, 'get', ssParams, isScheduledTask);

  metaData.sorting = ssInfos._source.search.sort;
  metaData.type = ssInfos._source.type;
  metaData.searchSourceJSON =
    ssInfos._source.search.kibanaSavedObjectMeta.searchSourceJSON;

  // Get the list of selected columns in the saved search.Otherwise select all the fields under the _source
  await getSelectedFields(ssInfos._source.search.columns);

  // Get index name
  for (const item of ssInfos._source.references) {
    if (item.name === JSON.parse(metaData.searchSourceJSON).indexRefName) {
      // Get index-pattern information
      const indexPattern = await callCluster(
        client,
        'get',
        {
          index: '.kibana',
          id: 'index-pattern:' + item.id,
        },
        isScheduledTask
      );
      resIndexPattern = indexPattern._source['index-pattern'];
      metaData.paternName = resIndexPattern.title;
      (metaData.timeFieldName = resIndexPattern.timeFieldName),
        (metaData.fields = resIndexPattern.fields); // Get all fields
      // Getting fields of type Date
      const dateFields = [];
      for (const item of JSON.parse(metaData.fields)) {
        if (item.type === 'date') {
          dateFields.push(item.name);
        }
      }
      metaData.dateFields = dateFields;
    }
  }
}