module TD.Query.DeleteLanguagePack
  (DeleteLanguagePack(..)
  ) where

import qualified Data.Aeson as A
import qualified Data.Aeson.Types as AT
import qualified TD.Lib.Internal as I
import qualified Data.Text as T

-- | Deletes all information about a language pack in the current localization target. The language pack which is currently in use (including base language pack) or is being synchronized can't be deleted. Can be called before authorization. Returns 'TD.Data.Ok.Ok'
data DeleteLanguagePack
  = DeleteLanguagePack
    { DeleteLanguagePack -> Maybe Text
language_pack_id :: Maybe T.Text -- ^ Identifier of the language pack to delete
    }
  deriving (DeleteLanguagePack -> DeleteLanguagePack -> Bool
(DeleteLanguagePack -> DeleteLanguagePack -> Bool)
-> (DeleteLanguagePack -> DeleteLanguagePack -> Bool)
-> Eq DeleteLanguagePack
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DeleteLanguagePack -> DeleteLanguagePack -> Bool
== :: DeleteLanguagePack -> DeleteLanguagePack -> Bool
$c/= :: DeleteLanguagePack -> DeleteLanguagePack -> Bool
/= :: DeleteLanguagePack -> DeleteLanguagePack -> Bool
Eq, Int -> DeleteLanguagePack -> ShowS
[DeleteLanguagePack] -> ShowS
DeleteLanguagePack -> String
(Int -> DeleteLanguagePack -> ShowS)
-> (DeleteLanguagePack -> String)
-> ([DeleteLanguagePack] -> ShowS)
-> Show DeleteLanguagePack
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> DeleteLanguagePack -> ShowS
showsPrec :: Int -> DeleteLanguagePack -> ShowS
$cshow :: DeleteLanguagePack -> String
show :: DeleteLanguagePack -> String
$cshowList :: [DeleteLanguagePack] -> ShowS
showList :: [DeleteLanguagePack] -> ShowS
Show)

instance I.ShortShow DeleteLanguagePack where
  shortShow :: DeleteLanguagePack -> String
shortShow
    DeleteLanguagePack
      { language_pack_id :: DeleteLanguagePack -> Maybe Text
language_pack_id = Maybe Text
language_pack_id_
      }
        = String
"DeleteLanguagePack"
          String -> ShowS
forall a. [a] -> [a] -> [a]
++ [String] -> String
I.cc
          [ String
"language_pack_id" String -> Maybe Text -> String
forall a. ShortShow a => String -> Maybe a -> String
`I.p` Maybe Text
language_pack_id_
          ]

instance AT.ToJSON DeleteLanguagePack where
  toJSON :: DeleteLanguagePack -> Value
toJSON
    DeleteLanguagePack
      { language_pack_id :: DeleteLanguagePack -> Maybe Text
language_pack_id = Maybe Text
language_pack_id_
      }
        = [Pair] -> Value
A.object
          [ Key
"@type"            Key -> Value -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
A..= Text -> Value
AT.String Text
"deleteLanguagePack"
          , Key
"language_pack_id" Key -> Maybe Text -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
forall v. ToJSON v => Key -> v -> Pair
A..= Maybe Text
language_pack_id_
          ]