amazonka-amplifyuibuilder-2.0: gen/Amazonka/AmplifyUiBuilder/Types/ComponentDataConfiguration.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.AmplifyUiBuilder.Types.ComponentDataConfiguration
-- 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.AmplifyUiBuilder.Types.ComponentDataConfiguration where
import Amazonka.AmplifyUiBuilder.Types.Predicate
import Amazonka.AmplifyUiBuilder.Types.SortProperty
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
-- | Describes the configuration for binding a component\'s properties to
-- data.
--
-- /See:/ 'newComponentDataConfiguration' smart constructor.
data ComponentDataConfiguration = ComponentDataConfiguration'
{ -- | A list of IDs to use to bind data to a component. Use this property to
-- bind specifically chosen data, rather than data retrieved from a query.
identifiers :: Prelude.Maybe [Prelude.Text],
-- | Represents the conditional logic to use when binding data to a
-- component. Use this property to retrieve only a subset of the data in a
-- collection.
predicate :: Prelude.Maybe Predicate,
-- | Describes how to sort the component\'s properties.
sort :: Prelude.Maybe [SortProperty],
-- | The name of the data model to use to bind data to a component.
model :: Prelude.Text
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'ComponentDataConfiguration' 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:
--
-- 'identifiers', 'componentDataConfiguration_identifiers' - A list of IDs to use to bind data to a component. Use this property to
-- bind specifically chosen data, rather than data retrieved from a query.
--
-- 'predicate', 'componentDataConfiguration_predicate' - Represents the conditional logic to use when binding data to a
-- component. Use this property to retrieve only a subset of the data in a
-- collection.
--
-- 'sort', 'componentDataConfiguration_sort' - Describes how to sort the component\'s properties.
--
-- 'model', 'componentDataConfiguration_model' - The name of the data model to use to bind data to a component.
newComponentDataConfiguration ::
-- | 'model'
Prelude.Text ->
ComponentDataConfiguration
newComponentDataConfiguration pModel_ =
ComponentDataConfiguration'
{ identifiers =
Prelude.Nothing,
predicate = Prelude.Nothing,
sort = Prelude.Nothing,
model = pModel_
}
-- | A list of IDs to use to bind data to a component. Use this property to
-- bind specifically chosen data, rather than data retrieved from a query.
componentDataConfiguration_identifiers :: Lens.Lens' ComponentDataConfiguration (Prelude.Maybe [Prelude.Text])
componentDataConfiguration_identifiers = Lens.lens (\ComponentDataConfiguration' {identifiers} -> identifiers) (\s@ComponentDataConfiguration' {} a -> s {identifiers = a} :: ComponentDataConfiguration) Prelude.. Lens.mapping Lens.coerced
-- | Represents the conditional logic to use when binding data to a
-- component. Use this property to retrieve only a subset of the data in a
-- collection.
componentDataConfiguration_predicate :: Lens.Lens' ComponentDataConfiguration (Prelude.Maybe Predicate)
componentDataConfiguration_predicate = Lens.lens (\ComponentDataConfiguration' {predicate} -> predicate) (\s@ComponentDataConfiguration' {} a -> s {predicate = a} :: ComponentDataConfiguration)
-- | Describes how to sort the component\'s properties.
componentDataConfiguration_sort :: Lens.Lens' ComponentDataConfiguration (Prelude.Maybe [SortProperty])
componentDataConfiguration_sort = Lens.lens (\ComponentDataConfiguration' {sort} -> sort) (\s@ComponentDataConfiguration' {} a -> s {sort = a} :: ComponentDataConfiguration) Prelude.. Lens.mapping Lens.coerced
-- | The name of the data model to use to bind data to a component.
componentDataConfiguration_model :: Lens.Lens' ComponentDataConfiguration Prelude.Text
componentDataConfiguration_model = Lens.lens (\ComponentDataConfiguration' {model} -> model) (\s@ComponentDataConfiguration' {} a -> s {model = a} :: ComponentDataConfiguration)
instance Data.FromJSON ComponentDataConfiguration where
parseJSON =
Data.withObject
"ComponentDataConfiguration"
( \x ->
ComponentDataConfiguration'
Prelude.<$> (x Data..:? "identifiers" Data..!= Prelude.mempty)
Prelude.<*> (x Data..:? "predicate")
Prelude.<*> (x Data..:? "sort" Data..!= Prelude.mempty)
Prelude.<*> (x Data..: "model")
)
instance Prelude.Hashable ComponentDataConfiguration where
hashWithSalt _salt ComponentDataConfiguration' {..} =
_salt
`Prelude.hashWithSalt` identifiers
`Prelude.hashWithSalt` predicate
`Prelude.hashWithSalt` sort
`Prelude.hashWithSalt` model
instance Prelude.NFData ComponentDataConfiguration where
rnf ComponentDataConfiguration' {..} =
Prelude.rnf identifiers
`Prelude.seq` Prelude.rnf predicate
`Prelude.seq` Prelude.rnf sort
`Prelude.seq` Prelude.rnf model
instance Data.ToJSON ComponentDataConfiguration where
toJSON ComponentDataConfiguration' {..} =
Data.object
( Prelude.catMaybes
[ ("identifiers" Data..=) Prelude.<$> identifiers,
("predicate" Data..=) Prelude.<$> predicate,
("sort" Data..=) Prelude.<$> sort,
Prelude.Just ("model" Data..= model)
]
)