{-# LANGUAGE DeriveAnyClass #-}
{-# LANGUAGE DerivingStrategies #-}

module Hercules.API.Organizations.BillingInfo where

import Data.OpenApi qualified as O3
import Hercules.API.Accounts.Account (Account)
import Hercules.API.Prelude

data BillingInfo = BillingInfo
  { BillingInfo -> Maybe UTCTime
nextPayment :: Maybe UTCTime,
    BillingInfo -> [Account]
activeUsers :: [Account]
  }
  deriving ((forall x. BillingInfo -> Rep BillingInfo x)
-> (forall x. Rep BillingInfo x -> BillingInfo)
-> Generic BillingInfo
forall x. Rep BillingInfo x -> BillingInfo
forall x. BillingInfo -> Rep BillingInfo x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. BillingInfo -> Rep BillingInfo x
from :: forall x. BillingInfo -> Rep BillingInfo x
$cto :: forall x. Rep BillingInfo x -> BillingInfo
to :: forall x. Rep BillingInfo x -> BillingInfo
Generic, Int -> BillingInfo -> ShowS
[BillingInfo] -> ShowS
BillingInfo -> String
(Int -> BillingInfo -> ShowS)
-> (BillingInfo -> String)
-> ([BillingInfo] -> ShowS)
-> Show BillingInfo
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> BillingInfo -> ShowS
showsPrec :: Int -> BillingInfo -> ShowS
$cshow :: BillingInfo -> String
show :: BillingInfo -> String
$cshowList :: [BillingInfo] -> ShowS
showList :: [BillingInfo] -> ShowS
Show, BillingInfo -> BillingInfo -> Bool
(BillingInfo -> BillingInfo -> Bool)
-> (BillingInfo -> BillingInfo -> Bool) -> Eq BillingInfo
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: BillingInfo -> BillingInfo -> Bool
== :: BillingInfo -> BillingInfo -> Bool
$c/= :: BillingInfo -> BillingInfo -> Bool
/= :: BillingInfo -> BillingInfo -> Bool
Eq)
  deriving anyclass (BillingInfo -> ()
(BillingInfo -> ()) -> NFData BillingInfo
forall a. (a -> ()) -> NFData a
$crnf :: BillingInfo -> ()
rnf :: BillingInfo -> ()
NFData, [BillingInfo] -> Value
[BillingInfo] -> Encoding
BillingInfo -> Value
BillingInfo -> Encoding
(BillingInfo -> Value)
-> (BillingInfo -> Encoding)
-> ([BillingInfo] -> Value)
-> ([BillingInfo] -> Encoding)
-> ToJSON BillingInfo
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
$ctoJSON :: BillingInfo -> Value
toJSON :: BillingInfo -> Value
$ctoEncoding :: BillingInfo -> Encoding
toEncoding :: BillingInfo -> Encoding
$ctoJSONList :: [BillingInfo] -> Value
toJSONList :: [BillingInfo] -> Value
$ctoEncodingList :: [BillingInfo] -> Encoding
toEncodingList :: [BillingInfo] -> Encoding
ToJSON, Value -> Parser [BillingInfo]
Value -> Parser BillingInfo
(Value -> Parser BillingInfo)
-> (Value -> Parser [BillingInfo]) -> FromJSON BillingInfo
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
$cparseJSON :: Value -> Parser BillingInfo
parseJSON :: Value -> Parser BillingInfo
$cparseJSONList :: Value -> Parser [BillingInfo]
parseJSONList :: Value -> Parser [BillingInfo]
FromJSON, Proxy BillingInfo -> Declare (Definitions Schema) NamedSchema
(Proxy BillingInfo -> Declare (Definitions Schema) NamedSchema)
-> ToSchema BillingInfo
forall a.
(Proxy a -> Declare (Definitions Schema) NamedSchema) -> ToSchema a
$cdeclareNamedSchema :: Proxy BillingInfo -> Declare (Definitions Schema) NamedSchema
declareNamedSchema :: Proxy BillingInfo -> Declare (Definitions Schema) NamedSchema
ToSchema, Typeable BillingInfo
Typeable BillingInfo =>
(Proxy BillingInfo -> Declare (Definitions Schema) NamedSchema)
-> ToSchema BillingInfo
Proxy BillingInfo -> Declare (Definitions Schema) NamedSchema
forall a.
Typeable a =>
(Proxy a -> Declare (Definitions Schema) NamedSchema) -> ToSchema a
$cdeclareNamedSchema :: Proxy BillingInfo -> Declare (Definitions Schema) NamedSchema
declareNamedSchema :: Proxy BillingInfo -> Declare (Definitions Schema) NamedSchema
O3.ToSchema)