packages feed

amazonka-pi-2.0: gen/Amazonka/Pi/Types/DimensionGroup.hs

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.Pi.Types.DimensionGroup
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Pi.Types.DimensionGroup where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude

-- | A logical grouping of Performance Insights metrics for a related subject
-- area. For example, the @db.sql@ dimension group consists of the
-- following dimensions:
--
-- -   @db.sql.id@ - The hash of a running SQL statement, generated by
--     Performance Insights.
--
-- -   @db.sql.db_id@ - Either the SQL ID generated by the database engine,
--     or a value generated by Performance Insights that begins with @pi-@.
--
-- -   @db.sql.statement@ - The full text of the SQL statement that is
--     running, for example, @SELECT * FROM employees@.
--
-- -   @db.sql_tokenized.id@ - The hash of the SQL digest generated by
--     Performance Insights.
--
-- Each response element returns a maximum of 500 bytes. For larger
-- elements, such as SQL statements, only the first 500 bytes are returned.
--
-- /See:/ 'newDimensionGroup' smart constructor.
data DimensionGroup = DimensionGroup'
  { -- | A list of specific dimensions from a dimension group. If this parameter
    -- is not present, then it signifies that all of the dimensions in the
    -- group were requested, or are present in the response.
    --
    -- Valid values for elements in the @Dimensions@ array are:
    --
    -- -   @db.application.name@ - The name of the application that is
    --     connected to the database. Valid values are as follows:
    --
    --     -   Aurora PostgreSQL
    --
    --     -   Amazon RDS PostgreSQL
    --
    --     -   Amazon DocumentDB
    --
    -- -   @db.host.id@ - The host ID of the connected client (all engines).
    --
    -- -   @db.host.name@ - The host name of the connected client (all
    --     engines).
    --
    -- -   @db.name@ - The name of the database to which the client is
    --     connected. Valid values are as follows:
    --
    --     -   Aurora PostgreSQL
    --
    --     -   Amazon RDS PostgreSQL
    --
    --     -   Aurora MySQL
    --
    --     -   Amazon RDS MySQL
    --
    --     -   Amazon RDS MariaDB
    --
    --     -   Amazon DocumentDB
    --
    -- -   @db.query.id@ - The query ID generated by Performance Insights (only
    --     Amazon DocumentDB).
    --
    -- -   @db.query.db_id@ - The query ID generated by the database (only
    --     Amazon DocumentDB).
    --
    -- -   @db.query.statement@ - The text of the query that is being run (only
    --     Amazon DocumentDB).
    --
    -- -   @db.query.tokenized_id@
    --
    -- -   @db.query.tokenized.id@ - The query digest ID generated by
    --     Performance Insights (only Amazon DocumentDB).
    --
    -- -   @db.query.tokenized.db_id@ - The query digest ID generated by
    --     Performance Insights (only Amazon DocumentDB).
    --
    -- -   @db.query.tokenized.statement@ - The text of the query digest (only
    --     Amazon DocumentDB).
    --
    -- -   @db.session_type.name@ - The type of the current session (only
    --     Amazon DocumentDB).
    --
    -- -   @db.sql.id@ - The hash of the full, non-tokenized SQL statement
    --     generated by Performance Insights (all engines except Amazon
    --     DocumentDB).
    --
    -- -   @db.sql.db_id@ - Either the SQL ID generated by the database engine,
    --     or a value generated by Performance Insights that begins with @pi-@
    --     (all engines except Amazon DocumentDB).
    --
    -- -   @db.sql.statement@ - The full text of the SQL statement that is
    --     running, as in @SELECT * FROM employees@ (all engines except Amazon
    --     DocumentDB)
    --
    -- -   @db.sql.tokenized_id@
    --
    -- -   @db.sql_tokenized.id@ - The hash of the SQL digest generated by
    --     Performance Insights (all engines except Amazon DocumentDB). In the
    --     console, @db.sql_tokenized.id@ is called the Support ID because
    --     Amazon Web Services Support can look at this data to help you
    --     troubleshoot database issues.
    --
    -- -   @db.sql_tokenized.db_id@ - Either the native database ID used to
    --     refer to the SQL statement, or a synthetic ID such as
    --     @pi-2372568224@ that Performance Insights generates if the native
    --     database ID isn\'t available (all engines except Amazon DocumentDB).
    --
    -- -   @db.sql_tokenized.statement@ - The text of the SQL digest, as in
    --     @SELECT * FROM employees WHERE employee_id = ?@ (all engines except
    --     Amazon DocumentDB)
    --
    -- -   @db.user.id@ - The ID of the user logged in to the database (all
    --     engines except Amazon DocumentDB).
    --
    -- -   @db.user.name@ - The name of the user logged in to the database (all
    --     engines except Amazon DocumentDB).
    --
    -- -   @db.wait_event.name@ - The event for which the backend is waiting
    --     (all engines except Amazon DocumentDB).
    --
    -- -   @db.wait_event.type@ - The type of event for which the backend is
    --     waiting (all engines except Amazon DocumentDB).
    --
    -- -   @db.wait_event_type.name@ - The name of the event type for which the
    --     backend is waiting (all engines except Amazon DocumentDB).
    --
    -- -   @db.wait_state.name@ - The event for which the backend is waiting
    --     (only Amazon DocumentDB).
    dimensions :: Prelude.Maybe (Prelude.NonEmpty Prelude.Text),
    -- | The maximum number of items to fetch for this dimension group.
    limit :: Prelude.Maybe Prelude.Natural,
    -- | The name of the dimension group. Valid values are as follows:
    --
    -- -   @db@ - The name of the database to which the client is connected.
    --     The following values are permitted:
    --
    --     -   Aurora PostgreSQL
    --
    --     -   Amazon RDS PostgreSQL
    --
    --     -   Aurora MySQL
    --
    --     -   Amazon RDS MySQL
    --
    --     -   Amazon RDS MariaDB
    --
    --     -   Amazon DocumentDB
    --
    -- -   @db.application@ - The name of the application that is connected to
    --     the database. The following values are permitted:
    --
    --     -   Aurora PostgreSQL
    --
    --     -   Amazon RDS PostgreSQL
    --
    --     -   Amazon DocumentDB
    --
    -- -   @db.host@ - The host name of the connected client (all engines).
    --
    -- -   @db.query@ - The query that is currently running (only Amazon
    --     DocumentDB).
    --
    -- -   @db.query_tokenized@ - The digest query (only Amazon DocumentDB).
    --
    -- -   @db.session_type@ - The type of the current session (only Aurora
    --     PostgreSQL and RDS PostgreSQL).
    --
    -- -   @db.sql@ - The text of the SQL statement that is currently running
    --     (all engines except Amazon DocumentDB).
    --
    -- -   @db.sql_tokenized@ - The SQL digest (all engines except Amazon
    --     DocumentDB).
    --
    -- -   @db.user@ - The user logged in to the database (all engines except
    --     Amazon DocumentDB).
    --
    -- -   @db.wait_event@ - The event for which the database backend is
    --     waiting (all engines except Amazon DocumentDB).
    --
    -- -   @db.wait_event_type@ - The type of event for which the database
    --     backend is waiting (all engines except Amazon DocumentDB).
    --
    -- -   @db.wait_state@ - The event for which the database backend is
    --     waiting (only Amazon DocumentDB).
    group' :: Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'DimensionGroup' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'dimensions', 'dimensionGroup_dimensions' - A list of specific dimensions from a dimension group. If this parameter
-- is not present, then it signifies that all of the dimensions in the
-- group were requested, or are present in the response.
--
-- Valid values for elements in the @Dimensions@ array are:
--
-- -   @db.application.name@ - The name of the application that is
--     connected to the database. Valid values are as follows:
--
--     -   Aurora PostgreSQL
--
--     -   Amazon RDS PostgreSQL
--
--     -   Amazon DocumentDB
--
-- -   @db.host.id@ - The host ID of the connected client (all engines).
--
-- -   @db.host.name@ - The host name of the connected client (all
--     engines).
--
-- -   @db.name@ - The name of the database to which the client is
--     connected. Valid values are as follows:
--
--     -   Aurora PostgreSQL
--
--     -   Amazon RDS PostgreSQL
--
--     -   Aurora MySQL
--
--     -   Amazon RDS MySQL
--
--     -   Amazon RDS MariaDB
--
--     -   Amazon DocumentDB
--
-- -   @db.query.id@ - The query ID generated by Performance Insights (only
--     Amazon DocumentDB).
--
-- -   @db.query.db_id@ - The query ID generated by the database (only
--     Amazon DocumentDB).
--
-- -   @db.query.statement@ - The text of the query that is being run (only
--     Amazon DocumentDB).
--
-- -   @db.query.tokenized_id@
--
-- -   @db.query.tokenized.id@ - The query digest ID generated by
--     Performance Insights (only Amazon DocumentDB).
--
-- -   @db.query.tokenized.db_id@ - The query digest ID generated by
--     Performance Insights (only Amazon DocumentDB).
--
-- -   @db.query.tokenized.statement@ - The text of the query digest (only
--     Amazon DocumentDB).
--
-- -   @db.session_type.name@ - The type of the current session (only
--     Amazon DocumentDB).
--
-- -   @db.sql.id@ - The hash of the full, non-tokenized SQL statement
--     generated by Performance Insights (all engines except Amazon
--     DocumentDB).
--
-- -   @db.sql.db_id@ - Either the SQL ID generated by the database engine,
--     or a value generated by Performance Insights that begins with @pi-@
--     (all engines except Amazon DocumentDB).
--
-- -   @db.sql.statement@ - The full text of the SQL statement that is
--     running, as in @SELECT * FROM employees@ (all engines except Amazon
--     DocumentDB)
--
-- -   @db.sql.tokenized_id@
--
-- -   @db.sql_tokenized.id@ - The hash of the SQL digest generated by
--     Performance Insights (all engines except Amazon DocumentDB). In the
--     console, @db.sql_tokenized.id@ is called the Support ID because
--     Amazon Web Services Support can look at this data to help you
--     troubleshoot database issues.
--
-- -   @db.sql_tokenized.db_id@ - Either the native database ID used to
--     refer to the SQL statement, or a synthetic ID such as
--     @pi-2372568224@ that Performance Insights generates if the native
--     database ID isn\'t available (all engines except Amazon DocumentDB).
--
-- -   @db.sql_tokenized.statement@ - The text of the SQL digest, as in
--     @SELECT * FROM employees WHERE employee_id = ?@ (all engines except
--     Amazon DocumentDB)
--
-- -   @db.user.id@ - The ID of the user logged in to the database (all
--     engines except Amazon DocumentDB).
--
-- -   @db.user.name@ - The name of the user logged in to the database (all
--     engines except Amazon DocumentDB).
--
-- -   @db.wait_event.name@ - The event for which the backend is waiting
--     (all engines except Amazon DocumentDB).
--
-- -   @db.wait_event.type@ - The type of event for which the backend is
--     waiting (all engines except Amazon DocumentDB).
--
-- -   @db.wait_event_type.name@ - The name of the event type for which the
--     backend is waiting (all engines except Amazon DocumentDB).
--
-- -   @db.wait_state.name@ - The event for which the backend is waiting
--     (only Amazon DocumentDB).
--
-- 'limit', 'dimensionGroup_limit' - The maximum number of items to fetch for this dimension group.
--
-- 'group'', 'dimensionGroup_group' - The name of the dimension group. Valid values are as follows:
--
-- -   @db@ - The name of the database to which the client is connected.
--     The following values are permitted:
--
--     -   Aurora PostgreSQL
--
--     -   Amazon RDS PostgreSQL
--
--     -   Aurora MySQL
--
--     -   Amazon RDS MySQL
--
--     -   Amazon RDS MariaDB
--
--     -   Amazon DocumentDB
--
-- -   @db.application@ - The name of the application that is connected to
--     the database. The following values are permitted:
--
--     -   Aurora PostgreSQL
--
--     -   Amazon RDS PostgreSQL
--
--     -   Amazon DocumentDB
--
-- -   @db.host@ - The host name of the connected client (all engines).
--
-- -   @db.query@ - The query that is currently running (only Amazon
--     DocumentDB).
--
-- -   @db.query_tokenized@ - The digest query (only Amazon DocumentDB).
--
-- -   @db.session_type@ - The type of the current session (only Aurora
--     PostgreSQL and RDS PostgreSQL).
--
-- -   @db.sql@ - The text of the SQL statement that is currently running
--     (all engines except Amazon DocumentDB).
--
-- -   @db.sql_tokenized@ - The SQL digest (all engines except Amazon
--     DocumentDB).
--
-- -   @db.user@ - The user logged in to the database (all engines except
--     Amazon DocumentDB).
--
-- -   @db.wait_event@ - The event for which the database backend is
--     waiting (all engines except Amazon DocumentDB).
--
-- -   @db.wait_event_type@ - The type of event for which the database
--     backend is waiting (all engines except Amazon DocumentDB).
--
-- -   @db.wait_state@ - The event for which the database backend is
--     waiting (only Amazon DocumentDB).
newDimensionGroup ::
  -- | 'group''
  Prelude.Text ->
  DimensionGroup
newDimensionGroup pGroup_ =
  DimensionGroup'
    { dimensions = Prelude.Nothing,
      limit = Prelude.Nothing,
      group' = pGroup_
    }

-- | A list of specific dimensions from a dimension group. If this parameter
-- is not present, then it signifies that all of the dimensions in the
-- group were requested, or are present in the response.
--
-- Valid values for elements in the @Dimensions@ array are:
--
-- -   @db.application.name@ - The name of the application that is
--     connected to the database. Valid values are as follows:
--
--     -   Aurora PostgreSQL
--
--     -   Amazon RDS PostgreSQL
--
--     -   Amazon DocumentDB
--
-- -   @db.host.id@ - The host ID of the connected client (all engines).
--
-- -   @db.host.name@ - The host name of the connected client (all
--     engines).
--
-- -   @db.name@ - The name of the database to which the client is
--     connected. Valid values are as follows:
--
--     -   Aurora PostgreSQL
--
--     -   Amazon RDS PostgreSQL
--
--     -   Aurora MySQL
--
--     -   Amazon RDS MySQL
--
--     -   Amazon RDS MariaDB
--
--     -   Amazon DocumentDB
--
-- -   @db.query.id@ - The query ID generated by Performance Insights (only
--     Amazon DocumentDB).
--
-- -   @db.query.db_id@ - The query ID generated by the database (only
--     Amazon DocumentDB).
--
-- -   @db.query.statement@ - The text of the query that is being run (only
--     Amazon DocumentDB).
--
-- -   @db.query.tokenized_id@
--
-- -   @db.query.tokenized.id@ - The query digest ID generated by
--     Performance Insights (only Amazon DocumentDB).
--
-- -   @db.query.tokenized.db_id@ - The query digest ID generated by
--     Performance Insights (only Amazon DocumentDB).
--
-- -   @db.query.tokenized.statement@ - The text of the query digest (only
--     Amazon DocumentDB).
--
-- -   @db.session_type.name@ - The type of the current session (only
--     Amazon DocumentDB).
--
-- -   @db.sql.id@ - The hash of the full, non-tokenized SQL statement
--     generated by Performance Insights (all engines except Amazon
--     DocumentDB).
--
-- -   @db.sql.db_id@ - Either the SQL ID generated by the database engine,
--     or a value generated by Performance Insights that begins with @pi-@
--     (all engines except Amazon DocumentDB).
--
-- -   @db.sql.statement@ - The full text of the SQL statement that is
--     running, as in @SELECT * FROM employees@ (all engines except Amazon
--     DocumentDB)
--
-- -   @db.sql.tokenized_id@
--
-- -   @db.sql_tokenized.id@ - The hash of the SQL digest generated by
--     Performance Insights (all engines except Amazon DocumentDB). In the
--     console, @db.sql_tokenized.id@ is called the Support ID because
--     Amazon Web Services Support can look at this data to help you
--     troubleshoot database issues.
--
-- -   @db.sql_tokenized.db_id@ - Either the native database ID used to
--     refer to the SQL statement, or a synthetic ID such as
--     @pi-2372568224@ that Performance Insights generates if the native
--     database ID isn\'t available (all engines except Amazon DocumentDB).
--
-- -   @db.sql_tokenized.statement@ - The text of the SQL digest, as in
--     @SELECT * FROM employees WHERE employee_id = ?@ (all engines except
--     Amazon DocumentDB)
--
-- -   @db.user.id@ - The ID of the user logged in to the database (all
--     engines except Amazon DocumentDB).
--
-- -   @db.user.name@ - The name of the user logged in to the database (all
--     engines except Amazon DocumentDB).
--
-- -   @db.wait_event.name@ - The event for which the backend is waiting
--     (all engines except Amazon DocumentDB).
--
-- -   @db.wait_event.type@ - The type of event for which the backend is
--     waiting (all engines except Amazon DocumentDB).
--
-- -   @db.wait_event_type.name@ - The name of the event type for which the
--     backend is waiting (all engines except Amazon DocumentDB).
--
-- -   @db.wait_state.name@ - The event for which the backend is waiting
--     (only Amazon DocumentDB).
dimensionGroup_dimensions :: Lens.Lens' DimensionGroup (Prelude.Maybe (Prelude.NonEmpty Prelude.Text))
dimensionGroup_dimensions = Lens.lens (\DimensionGroup' {dimensions} -> dimensions) (\s@DimensionGroup' {} a -> s {dimensions = a} :: DimensionGroup) Prelude.. Lens.mapping Lens.coerced

-- | The maximum number of items to fetch for this dimension group.
dimensionGroup_limit :: Lens.Lens' DimensionGroup (Prelude.Maybe Prelude.Natural)
dimensionGroup_limit = Lens.lens (\DimensionGroup' {limit} -> limit) (\s@DimensionGroup' {} a -> s {limit = a} :: DimensionGroup)

-- | The name of the dimension group. Valid values are as follows:
--
-- -   @db@ - The name of the database to which the client is connected.
--     The following values are permitted:
--
--     -   Aurora PostgreSQL
--
--     -   Amazon RDS PostgreSQL
--
--     -   Aurora MySQL
--
--     -   Amazon RDS MySQL
--
--     -   Amazon RDS MariaDB
--
--     -   Amazon DocumentDB
--
-- -   @db.application@ - The name of the application that is connected to
--     the database. The following values are permitted:
--
--     -   Aurora PostgreSQL
--
--     -   Amazon RDS PostgreSQL
--
--     -   Amazon DocumentDB
--
-- -   @db.host@ - The host name of the connected client (all engines).
--
-- -   @db.query@ - The query that is currently running (only Amazon
--     DocumentDB).
--
-- -   @db.query_tokenized@ - The digest query (only Amazon DocumentDB).
--
-- -   @db.session_type@ - The type of the current session (only Aurora
--     PostgreSQL and RDS PostgreSQL).
--
-- -   @db.sql@ - The text of the SQL statement that is currently running
--     (all engines except Amazon DocumentDB).
--
-- -   @db.sql_tokenized@ - The SQL digest (all engines except Amazon
--     DocumentDB).
--
-- -   @db.user@ - The user logged in to the database (all engines except
--     Amazon DocumentDB).
--
-- -   @db.wait_event@ - The event for which the database backend is
--     waiting (all engines except Amazon DocumentDB).
--
-- -   @db.wait_event_type@ - The type of event for which the database
--     backend is waiting (all engines except Amazon DocumentDB).
--
-- -   @db.wait_state@ - The event for which the database backend is
--     waiting (only Amazon DocumentDB).
dimensionGroup_group :: Lens.Lens' DimensionGroup Prelude.Text
dimensionGroup_group = Lens.lens (\DimensionGroup' {group'} -> group') (\s@DimensionGroup' {} a -> s {group' = a} :: DimensionGroup)

instance Prelude.Hashable DimensionGroup where
  hashWithSalt _salt DimensionGroup' {..} =
    _salt
      `Prelude.hashWithSalt` dimensions
      `Prelude.hashWithSalt` limit
      `Prelude.hashWithSalt` group'

instance Prelude.NFData DimensionGroup where
  rnf DimensionGroup' {..} =
    Prelude.rnf dimensions
      `Prelude.seq` Prelude.rnf limit
      `Prelude.seq` Prelude.rnf group'

instance Data.ToJSON DimensionGroup where
  toJSON DimensionGroup' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("Dimensions" Data..=) Prelude.<$> dimensions,
            ("Limit" Data..=) Prelude.<$> limit,
            Prelude.Just ("Group" Data..= group')
          ]
      )