{-# 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.RedshiftServerLess.Types.Namespace -- 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.RedshiftServerLess.Types.Namespace 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 import Amazonka.RedshiftServerLess.Types.LogExport import Amazonka.RedshiftServerLess.Types.NamespaceStatus -- | A collection of database objects and users. -- -- /See:/ 'newNamespace' smart constructor. data Namespace = Namespace' { -- | The username of the administrator for the first database created in the -- namespace. adminUsername :: Prelude.Maybe (Data.Sensitive Prelude.Text), -- | The date of when the namespace was created. creationDate :: Prelude.Maybe Data.ISO8601, -- | The name of the first database created in the namespace. dbName :: Prelude.Maybe Prelude.Text, -- | The Amazon Resource Name (ARN) of the IAM role to set as a default in -- the namespace. defaultIamRoleArn :: Prelude.Maybe Prelude.Text, -- | A list of IAM roles to associate with the namespace. iamRoles :: Prelude.Maybe [Prelude.Text], -- | The ID of the Amazon Web Services Key Management Service key used to -- encrypt your data. kmsKeyId :: Prelude.Maybe Prelude.Text, -- | The types of logs the namespace can export. Available export types are -- User log, Connection log, and User activity log. logExports :: Prelude.Maybe [LogExport], -- | The Amazon Resource Name (ARN) associated with a namespace. namespaceArn :: Prelude.Maybe Prelude.Text, -- | The unique identifier of a namespace. namespaceId :: Prelude.Maybe Prelude.Text, -- | The name of the namespace. Must be between 3-64 alphanumeric characters -- in lowercase, and it cannot be a reserved word. A list of reserved words -- can be found in -- -- in the Amazon Redshift Database Developer Guide. namespaceName :: Prelude.Maybe Prelude.Text, -- | The status of the namespace. status :: Prelude.Maybe NamespaceStatus } deriving (Prelude.Eq, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'Namespace' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'adminUsername', 'namespace_adminUsername' - The username of the administrator for the first database created in the -- namespace. -- -- 'creationDate', 'namespace_creationDate' - The date of when the namespace was created. -- -- 'dbName', 'namespace_dbName' - The name of the first database created in the namespace. -- -- 'defaultIamRoleArn', 'namespace_defaultIamRoleArn' - The Amazon Resource Name (ARN) of the IAM role to set as a default in -- the namespace. -- -- 'iamRoles', 'namespace_iamRoles' - A list of IAM roles to associate with the namespace. -- -- 'kmsKeyId', 'namespace_kmsKeyId' - The ID of the Amazon Web Services Key Management Service key used to -- encrypt your data. -- -- 'logExports', 'namespace_logExports' - The types of logs the namespace can export. Available export types are -- User log, Connection log, and User activity log. -- -- 'namespaceArn', 'namespace_namespaceArn' - The Amazon Resource Name (ARN) associated with a namespace. -- -- 'namespaceId', 'namespace_namespaceId' - The unique identifier of a namespace. -- -- 'namespaceName', 'namespace_namespaceName' - The name of the namespace. Must be between 3-64 alphanumeric characters -- in lowercase, and it cannot be a reserved word. A list of reserved words -- can be found in -- -- in the Amazon Redshift Database Developer Guide. -- -- 'status', 'namespace_status' - The status of the namespace. newNamespace :: Namespace newNamespace = Namespace' { adminUsername = Prelude.Nothing, creationDate = Prelude.Nothing, dbName = Prelude.Nothing, defaultIamRoleArn = Prelude.Nothing, iamRoles = Prelude.Nothing, kmsKeyId = Prelude.Nothing, logExports = Prelude.Nothing, namespaceArn = Prelude.Nothing, namespaceId = Prelude.Nothing, namespaceName = Prelude.Nothing, status = Prelude.Nothing } -- | The username of the administrator for the first database created in the -- namespace. namespace_adminUsername :: Lens.Lens' Namespace (Prelude.Maybe Prelude.Text) namespace_adminUsername = Lens.lens (\Namespace' {adminUsername} -> adminUsername) (\s@Namespace' {} a -> s {adminUsername = a} :: Namespace) Prelude.. Lens.mapping Data._Sensitive -- | The date of when the namespace was created. namespace_creationDate :: Lens.Lens' Namespace (Prelude.Maybe Prelude.UTCTime) namespace_creationDate = Lens.lens (\Namespace' {creationDate} -> creationDate) (\s@Namespace' {} a -> s {creationDate = a} :: Namespace) Prelude.. Lens.mapping Data._Time -- | The name of the first database created in the namespace. namespace_dbName :: Lens.Lens' Namespace (Prelude.Maybe Prelude.Text) namespace_dbName = Lens.lens (\Namespace' {dbName} -> dbName) (\s@Namespace' {} a -> s {dbName = a} :: Namespace) -- | The Amazon Resource Name (ARN) of the IAM role to set as a default in -- the namespace. namespace_defaultIamRoleArn :: Lens.Lens' Namespace (Prelude.Maybe Prelude.Text) namespace_defaultIamRoleArn = Lens.lens (\Namespace' {defaultIamRoleArn} -> defaultIamRoleArn) (\s@Namespace' {} a -> s {defaultIamRoleArn = a} :: Namespace) -- | A list of IAM roles to associate with the namespace. namespace_iamRoles :: Lens.Lens' Namespace (Prelude.Maybe [Prelude.Text]) namespace_iamRoles = Lens.lens (\Namespace' {iamRoles} -> iamRoles) (\s@Namespace' {} a -> s {iamRoles = a} :: Namespace) Prelude.. Lens.mapping Lens.coerced -- | The ID of the Amazon Web Services Key Management Service key used to -- encrypt your data. namespace_kmsKeyId :: Lens.Lens' Namespace (Prelude.Maybe Prelude.Text) namespace_kmsKeyId = Lens.lens (\Namespace' {kmsKeyId} -> kmsKeyId) (\s@Namespace' {} a -> s {kmsKeyId = a} :: Namespace) -- | The types of logs the namespace can export. Available export types are -- User log, Connection log, and User activity log. namespace_logExports :: Lens.Lens' Namespace (Prelude.Maybe [LogExport]) namespace_logExports = Lens.lens (\Namespace' {logExports} -> logExports) (\s@Namespace' {} a -> s {logExports = a} :: Namespace) Prelude.. Lens.mapping Lens.coerced -- | The Amazon Resource Name (ARN) associated with a namespace. namespace_namespaceArn :: Lens.Lens' Namespace (Prelude.Maybe Prelude.Text) namespace_namespaceArn = Lens.lens (\Namespace' {namespaceArn} -> namespaceArn) (\s@Namespace' {} a -> s {namespaceArn = a} :: Namespace) -- | The unique identifier of a namespace. namespace_namespaceId :: Lens.Lens' Namespace (Prelude.Maybe Prelude.Text) namespace_namespaceId = Lens.lens (\Namespace' {namespaceId} -> namespaceId) (\s@Namespace' {} a -> s {namespaceId = a} :: Namespace) -- | The name of the namespace. Must be between 3-64 alphanumeric characters -- in lowercase, and it cannot be a reserved word. A list of reserved words -- can be found in -- -- in the Amazon Redshift Database Developer Guide. namespace_namespaceName :: Lens.Lens' Namespace (Prelude.Maybe Prelude.Text) namespace_namespaceName = Lens.lens (\Namespace' {namespaceName} -> namespaceName) (\s@Namespace' {} a -> s {namespaceName = a} :: Namespace) -- | The status of the namespace. namespace_status :: Lens.Lens' Namespace (Prelude.Maybe NamespaceStatus) namespace_status = Lens.lens (\Namespace' {status} -> status) (\s@Namespace' {} a -> s {status = a} :: Namespace) instance Data.FromJSON Namespace where parseJSON = Data.withObject "Namespace" ( \x -> Namespace' Prelude.<$> (x Data..:? "adminUsername") Prelude.<*> (x Data..:? "creationDate") Prelude.<*> (x Data..:? "dbName") Prelude.<*> (x Data..:? "defaultIamRoleArn") Prelude.<*> (x Data..:? "iamRoles" Data..!= Prelude.mempty) Prelude.<*> (x Data..:? "kmsKeyId") Prelude.<*> (x Data..:? "logExports" Data..!= Prelude.mempty) Prelude.<*> (x Data..:? "namespaceArn") Prelude.<*> (x Data..:? "namespaceId") Prelude.<*> (x Data..:? "namespaceName") Prelude.<*> (x Data..:? "status") ) instance Prelude.Hashable Namespace where hashWithSalt _salt Namespace' {..} = _salt `Prelude.hashWithSalt` adminUsername `Prelude.hashWithSalt` creationDate `Prelude.hashWithSalt` dbName `Prelude.hashWithSalt` defaultIamRoleArn `Prelude.hashWithSalt` iamRoles `Prelude.hashWithSalt` kmsKeyId `Prelude.hashWithSalt` logExports `Prelude.hashWithSalt` namespaceArn `Prelude.hashWithSalt` namespaceId `Prelude.hashWithSalt` namespaceName `Prelude.hashWithSalt` status instance Prelude.NFData Namespace where rnf Namespace' {..} = Prelude.rnf adminUsername `Prelude.seq` Prelude.rnf creationDate `Prelude.seq` Prelude.rnf dbName `Prelude.seq` Prelude.rnf defaultIamRoleArn `Prelude.seq` Prelude.rnf iamRoles `Prelude.seq` Prelude.rnf kmsKeyId `Prelude.seq` Prelude.rnf logExports `Prelude.seq` Prelude.rnf namespaceArn `Prelude.seq` Prelude.rnf namespaceId `Prelude.seq` Prelude.rnf namespaceName `Prelude.seq` Prelude.rnf status