{-# 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.IoTRoboRunner.Types.Worker
-- 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.IoTRoboRunner.Types.Worker where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.IoTRoboRunner.Types.Orientation
import Amazonka.IoTRoboRunner.Types.PositionCoordinates
import Amazonka.IoTRoboRunner.Types.VendorProperties
import qualified Amazonka.Prelude as Prelude

-- | A unit capable of performing tasks.
--
-- /See:/ 'newWorker' smart constructor.
data Worker = Worker'
  { Worker -> Maybe Text
additionalFixedProperties :: Prelude.Maybe Prelude.Text,
    Worker -> Maybe Text
additionalTransientProperties :: Prelude.Maybe Prelude.Text,
    Worker -> Maybe Orientation
orientation :: Prelude.Maybe Orientation,
    Worker -> Maybe PositionCoordinates
position :: Prelude.Maybe PositionCoordinates,
    Worker -> Maybe VendorProperties
vendorProperties :: Prelude.Maybe VendorProperties,
    Worker -> Text
arn :: Prelude.Text,
    Worker -> Text
id :: Prelude.Text,
    Worker -> Text
fleet :: Prelude.Text,
    Worker -> POSIX
createdAt :: Data.POSIX,
    Worker -> POSIX
updatedAt :: Data.POSIX,
    Worker -> Text
name :: Prelude.Text,
    Worker -> Text
site :: Prelude.Text
  }
  deriving (Worker -> Worker -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Worker -> Worker -> Bool
$c/= :: Worker -> Worker -> Bool
== :: Worker -> Worker -> Bool
$c== :: Worker -> Worker -> Bool
Prelude.Eq, ReadPrec [Worker]
ReadPrec Worker
Int -> ReadS Worker
ReadS [Worker]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Worker]
$creadListPrec :: ReadPrec [Worker]
readPrec :: ReadPrec Worker
$creadPrec :: ReadPrec Worker
readList :: ReadS [Worker]
$creadList :: ReadS [Worker]
readsPrec :: Int -> ReadS Worker
$creadsPrec :: Int -> ReadS Worker
Prelude.Read, Int -> Worker -> ShowS
[Worker] -> ShowS
Worker -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Worker] -> ShowS
$cshowList :: [Worker] -> ShowS
show :: Worker -> String
$cshow :: Worker -> String
showsPrec :: Int -> Worker -> ShowS
$cshowsPrec :: Int -> Worker -> ShowS
Prelude.Show, forall x. Rep Worker x -> Worker
forall x. Worker -> Rep Worker x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Worker x -> Worker
$cfrom :: forall x. Worker -> Rep Worker x
Prelude.Generic)

-- |
-- Create a value of 'Worker' 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:
--
-- 'additionalFixedProperties', 'worker_additionalFixedProperties' - Undocumented member.
--
-- 'additionalTransientProperties', 'worker_additionalTransientProperties' - Undocumented member.
--
-- 'orientation', 'worker_orientation' - Undocumented member.
--
-- 'position', 'worker_position' - Undocumented member.
--
-- 'vendorProperties', 'worker_vendorProperties' - Undocumented member.
--
-- 'arn', 'worker_arn' - Undocumented member.
--
-- 'id', 'worker_id' - Undocumented member.
--
-- 'fleet', 'worker_fleet' - Undocumented member.
--
-- 'createdAt', 'worker_createdAt' - Undocumented member.
--
-- 'updatedAt', 'worker_updatedAt' - Undocumented member.
--
-- 'name', 'worker_name' - Undocumented member.
--
-- 'site', 'worker_site' - Undocumented member.
newWorker ::
  -- | 'arn'
  Prelude.Text ->
  -- | 'id'
  Prelude.Text ->
  -- | 'fleet'
  Prelude.Text ->
  -- | 'createdAt'
  Prelude.UTCTime ->
  -- | 'updatedAt'
  Prelude.UTCTime ->
  -- | 'name'
  Prelude.Text ->
  -- | 'site'
  Prelude.Text ->
  Worker
newWorker :: Text
-> Text -> Text -> UTCTime -> UTCTime -> Text -> Text -> Worker
newWorker
  Text
pArn_
  Text
pId_
  Text
pFleet_
  UTCTime
pCreatedAt_
  UTCTime
pUpdatedAt_
  Text
pName_
  Text
pSite_ =
    Worker'
      { $sel:additionalFixedProperties:Worker' :: Maybe Text
additionalFixedProperties =
          forall a. Maybe a
Prelude.Nothing,
        $sel:additionalTransientProperties:Worker' :: Maybe Text
additionalTransientProperties = forall a. Maybe a
Prelude.Nothing,
        $sel:orientation:Worker' :: Maybe Orientation
orientation = forall a. Maybe a
Prelude.Nothing,
        $sel:position:Worker' :: Maybe PositionCoordinates
position = forall a. Maybe a
Prelude.Nothing,
        $sel:vendorProperties:Worker' :: Maybe VendorProperties
vendorProperties = forall a. Maybe a
Prelude.Nothing,
        $sel:arn:Worker' :: Text
arn = Text
pArn_,
        $sel:id:Worker' :: Text
id = Text
pId_,
        $sel:fleet:Worker' :: Text
fleet = Text
pFleet_,
        $sel:createdAt:Worker' :: POSIX
createdAt = forall (a :: Format). Iso' (Time a) UTCTime
Data._Time forall t b. AReview t b -> b -> t
Lens.# UTCTime
pCreatedAt_,
        $sel:updatedAt:Worker' :: POSIX
updatedAt = forall (a :: Format). Iso' (Time a) UTCTime
Data._Time forall t b. AReview t b -> b -> t
Lens.# UTCTime
pUpdatedAt_,
        $sel:name:Worker' :: Text
name = Text
pName_,
        $sel:site:Worker' :: Text
site = Text
pSite_
      }

-- | Undocumented member.
worker_additionalFixedProperties :: Lens.Lens' Worker (Prelude.Maybe Prelude.Text)
worker_additionalFixedProperties :: Lens' Worker (Maybe Text)
worker_additionalFixedProperties = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Worker' {Maybe Text
additionalFixedProperties :: Maybe Text
$sel:additionalFixedProperties:Worker' :: Worker -> Maybe Text
additionalFixedProperties} -> Maybe Text
additionalFixedProperties) (\s :: Worker
s@Worker' {} Maybe Text
a -> Worker
s {$sel:additionalFixedProperties:Worker' :: Maybe Text
additionalFixedProperties = Maybe Text
a} :: Worker)

-- | Undocumented member.
worker_additionalTransientProperties :: Lens.Lens' Worker (Prelude.Maybe Prelude.Text)
worker_additionalTransientProperties :: Lens' Worker (Maybe Text)
worker_additionalTransientProperties = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Worker' {Maybe Text
additionalTransientProperties :: Maybe Text
$sel:additionalTransientProperties:Worker' :: Worker -> Maybe Text
additionalTransientProperties} -> Maybe Text
additionalTransientProperties) (\s :: Worker
s@Worker' {} Maybe Text
a -> Worker
s {$sel:additionalTransientProperties:Worker' :: Maybe Text
additionalTransientProperties = Maybe Text
a} :: Worker)

-- | Undocumented member.
worker_orientation :: Lens.Lens' Worker (Prelude.Maybe Orientation)
worker_orientation :: Lens' Worker (Maybe Orientation)
worker_orientation = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Worker' {Maybe Orientation
orientation :: Maybe Orientation
$sel:orientation:Worker' :: Worker -> Maybe Orientation
orientation} -> Maybe Orientation
orientation) (\s :: Worker
s@Worker' {} Maybe Orientation
a -> Worker
s {$sel:orientation:Worker' :: Maybe Orientation
orientation = Maybe Orientation
a} :: Worker)

-- | Undocumented member.
worker_position :: Lens.Lens' Worker (Prelude.Maybe PositionCoordinates)
worker_position :: Lens' Worker (Maybe PositionCoordinates)
worker_position = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Worker' {Maybe PositionCoordinates
position :: Maybe PositionCoordinates
$sel:position:Worker' :: Worker -> Maybe PositionCoordinates
position} -> Maybe PositionCoordinates
position) (\s :: Worker
s@Worker' {} Maybe PositionCoordinates
a -> Worker
s {$sel:position:Worker' :: Maybe PositionCoordinates
position = Maybe PositionCoordinates
a} :: Worker)

-- | Undocumented member.
worker_vendorProperties :: Lens.Lens' Worker (Prelude.Maybe VendorProperties)
worker_vendorProperties :: Lens' Worker (Maybe VendorProperties)
worker_vendorProperties = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Worker' {Maybe VendorProperties
vendorProperties :: Maybe VendorProperties
$sel:vendorProperties:Worker' :: Worker -> Maybe VendorProperties
vendorProperties} -> Maybe VendorProperties
vendorProperties) (\s :: Worker
s@Worker' {} Maybe VendorProperties
a -> Worker
s {$sel:vendorProperties:Worker' :: Maybe VendorProperties
vendorProperties = Maybe VendorProperties
a} :: Worker)

-- | Undocumented member.
worker_arn :: Lens.Lens' Worker Prelude.Text
worker_arn :: Lens' Worker Text
worker_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Worker' {Text
arn :: Text
$sel:arn:Worker' :: Worker -> Text
arn} -> Text
arn) (\s :: Worker
s@Worker' {} Text
a -> Worker
s {$sel:arn:Worker' :: Text
arn = Text
a} :: Worker)

-- | Undocumented member.
worker_id :: Lens.Lens' Worker Prelude.Text
worker_id :: Lens' Worker Text
worker_id = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Worker' {Text
id :: Text
$sel:id:Worker' :: Worker -> Text
id} -> Text
id) (\s :: Worker
s@Worker' {} Text
a -> Worker
s {$sel:id:Worker' :: Text
id = Text
a} :: Worker)

-- | Undocumented member.
worker_fleet :: Lens.Lens' Worker Prelude.Text
worker_fleet :: Lens' Worker Text
worker_fleet = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Worker' {Text
fleet :: Text
$sel:fleet:Worker' :: Worker -> Text
fleet} -> Text
fleet) (\s :: Worker
s@Worker' {} Text
a -> Worker
s {$sel:fleet:Worker' :: Text
fleet = Text
a} :: Worker)

-- | Undocumented member.
worker_createdAt :: Lens.Lens' Worker Prelude.UTCTime
worker_createdAt :: Lens' Worker UTCTime
worker_createdAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Worker' {POSIX
createdAt :: POSIX
$sel:createdAt:Worker' :: Worker -> POSIX
createdAt} -> POSIX
createdAt) (\s :: Worker
s@Worker' {} POSIX
a -> Worker
s {$sel:createdAt:Worker' :: POSIX
createdAt = POSIX
a} :: Worker) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | Undocumented member.
worker_updatedAt :: Lens.Lens' Worker Prelude.UTCTime
worker_updatedAt :: Lens' Worker UTCTime
worker_updatedAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Worker' {POSIX
updatedAt :: POSIX
$sel:updatedAt:Worker' :: Worker -> POSIX
updatedAt} -> POSIX
updatedAt) (\s :: Worker
s@Worker' {} POSIX
a -> Worker
s {$sel:updatedAt:Worker' :: POSIX
updatedAt = POSIX
a} :: Worker) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | Undocumented member.
worker_name :: Lens.Lens' Worker Prelude.Text
worker_name :: Lens' Worker Text
worker_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Worker' {Text
name :: Text
$sel:name:Worker' :: Worker -> Text
name} -> Text
name) (\s :: Worker
s@Worker' {} Text
a -> Worker
s {$sel:name:Worker' :: Text
name = Text
a} :: Worker)

-- | Undocumented member.
worker_site :: Lens.Lens' Worker Prelude.Text
worker_site :: Lens' Worker Text
worker_site = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Worker' {Text
site :: Text
$sel:site:Worker' :: Worker -> Text
site} -> Text
site) (\s :: Worker
s@Worker' {} Text
a -> Worker
s {$sel:site:Worker' :: Text
site = Text
a} :: Worker)

instance Data.FromJSON Worker where
  parseJSON :: Value -> Parser Worker
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"Worker"
      ( \Object
x ->
          Maybe Text
-> Maybe Text
-> Maybe Orientation
-> Maybe PositionCoordinates
-> Maybe VendorProperties
-> Text
-> Text
-> Text
-> POSIX
-> POSIX
-> Text
-> Text
-> Worker
Worker'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"additionalFixedProperties")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"additionalTransientProperties")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"orientation")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"position")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"vendorProperties")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"arn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"id")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"fleet")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"createdAt")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"updatedAt")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"name")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"site")
      )

instance Prelude.Hashable Worker where
  hashWithSalt :: Int -> Worker -> Int
hashWithSalt Int
_salt Worker' {Maybe Text
Maybe Orientation
Maybe PositionCoordinates
Maybe VendorProperties
Text
POSIX
site :: Text
name :: Text
updatedAt :: POSIX
createdAt :: POSIX
fleet :: Text
id :: Text
arn :: Text
vendorProperties :: Maybe VendorProperties
position :: Maybe PositionCoordinates
orientation :: Maybe Orientation
additionalTransientProperties :: Maybe Text
additionalFixedProperties :: Maybe Text
$sel:site:Worker' :: Worker -> Text
$sel:name:Worker' :: Worker -> Text
$sel:updatedAt:Worker' :: Worker -> POSIX
$sel:createdAt:Worker' :: Worker -> POSIX
$sel:fleet:Worker' :: Worker -> Text
$sel:id:Worker' :: Worker -> Text
$sel:arn:Worker' :: Worker -> Text
$sel:vendorProperties:Worker' :: Worker -> Maybe VendorProperties
$sel:position:Worker' :: Worker -> Maybe PositionCoordinates
$sel:orientation:Worker' :: Worker -> Maybe Orientation
$sel:additionalTransientProperties:Worker' :: Worker -> Maybe Text
$sel:additionalFixedProperties:Worker' :: Worker -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
additionalFixedProperties
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
additionalTransientProperties
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Orientation
orientation
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PositionCoordinates
position
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe VendorProperties
vendorProperties
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
arn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
id
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
fleet
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` POSIX
createdAt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` POSIX
updatedAt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
site

instance Prelude.NFData Worker where
  rnf :: Worker -> ()
rnf Worker' {Maybe Text
Maybe Orientation
Maybe PositionCoordinates
Maybe VendorProperties
Text
POSIX
site :: Text
name :: Text
updatedAt :: POSIX
createdAt :: POSIX
fleet :: Text
id :: Text
arn :: Text
vendorProperties :: Maybe VendorProperties
position :: Maybe PositionCoordinates
orientation :: Maybe Orientation
additionalTransientProperties :: Maybe Text
additionalFixedProperties :: Maybe Text
$sel:site:Worker' :: Worker -> Text
$sel:name:Worker' :: Worker -> Text
$sel:updatedAt:Worker' :: Worker -> POSIX
$sel:createdAt:Worker' :: Worker -> POSIX
$sel:fleet:Worker' :: Worker -> Text
$sel:id:Worker' :: Worker -> Text
$sel:arn:Worker' :: Worker -> Text
$sel:vendorProperties:Worker' :: Worker -> Maybe VendorProperties
$sel:position:Worker' :: Worker -> Maybe PositionCoordinates
$sel:orientation:Worker' :: Worker -> Maybe Orientation
$sel:additionalTransientProperties:Worker' :: Worker -> Maybe Text
$sel:additionalFixedProperties:Worker' :: Worker -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
additionalFixedProperties
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
additionalTransientProperties
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Orientation
orientation
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe PositionCoordinates
position
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe VendorProperties
vendorProperties
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
arn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
id
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
fleet
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf POSIX
createdAt
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf POSIX
updatedAt
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
site