export function registerDslRoute()

in dashboards-observability/server/routes/dsl.ts [19:100]


export function registerDslRoute({
  router,
  facet,
}: {
  router: IRouter
  facet: DSLFacet
}) {
  router.post({
    path: `${DSL_BASE}${DSL_SEARCH}`,
    validate: { body:schema.any() }
  },
  async (context, request, response) => {
    const { index, size, ...rest } = request.body;
    const params: RequestParams.Search = {
      index: index,
      size,
      body: rest,
    };
    try {
      const resp = await context.core.opensearch.legacy.client.callAsCurrentUser(
        'search',
        params
      );
      return response.ok({
        body: resp,
      });
    } catch (error) {
      if (error.statusCode !== 404) console.error(error);
      return response.custom({
        statusCode: error.statusCode || 500,
        body: error.message,
      });
    }
  })

  router.get({
    path: `${DSL_BASE}${DSL_CAT}`,
    validate: { query: schema.object({
      format: schema.string()
    }) }
  },
  async (context, request, response) => {
    try {
      const resp = await context.core.opensearch.legacy.client.callAsCurrentUser(
        'cat.indices',
        request.query
      );
      return response.ok({
        body: resp
      });
    } catch (error) {
      if (error.statusCode !== 404) console.error(error);
      return response.custom({
        statusCode: error.statusCode || 500,
        body: error.message
      })
    }
  })
  
  router.get({
    path: `${DSL_BASE}${DSL_MAPPING}`,
    validate: { query: schema.any() }
  },
  async (context, request, response) => {
    try {
      const resp = await context.core.opensearch.legacy.client.callAsCurrentUser(
        'indices.getMapping',
        { index: request.query.index }
      );
      return response.ok({
        body: resp
      });
    } catch (error) {
      if (error.statusCode !== 404) console.error(error);
      return response.custom({
        statusCode: error.statusCode || 500,
        body: error.message,
      })
    }
  }
  )
}