{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DeriveAnyClass #-}

module Faker.Internal.Types where

import Data.Hashable
import Data.Text (Text)
import GHC.Generics

data SourceData
  = Address
  | Name
  | Ancient
  | Adjective
  | Animal
  | App
  | Appliance
  | ATHF
  | Artist
  | Basketball
  | BTTF
  | Bank
  | Bird
  | Beer
  | BoJackHorseman
  | BigBangTheory
  | Book
  | Blood
  | Camera
  | ClashOfClans
  | Chiquito
  | Computer
  | Control
  | Conan
  | DnD
  | Doraemon
  | PearlJam
  | Departed
  | BossaNova
  | BreakingBad
  | Buffy
  | Business
  | Cannabis
  | Cat
  | ChuckNorris
  | Code
  | Coffee
  | Coin
  | Color
  | Commerce
  | Community
  | Company
  | Construction
  | Cosmere
  | Compass
  | CryptoCoin
  | CultureSeries
  | Currency
  | DcComics
  | Demographic
  | Dessert
  | Device
  | Dog
  | Dota
  | DrWho
  | DragonBall
  | DumbAndDumber
  | Dune
  | Educator
  | ElderScrolls
  | ElectricalComponents
  | Esport
  | Fallout
  | FamilyGuy
  | File
  | FinalSpace
  | Finance
  | Food
  | Football
  | FreshPrinceOfBelAir
  | Friends
  | FunnyName
  | GameOfThrones
  | Gender
  | GhostBusters
  | GratefulDead
  | GreekPhilosophers
  | Hacker
  | HalfLife
  | HarryPotter
  | Heroes
  | HeroesOfTheStorm
  | HeyArnold
  | Hipster
  | HitchhikersGuideToTheGalaxy
  | Hobbit
  | House
  | HowIMetYourMother
  | HowToTrainYourDragon
  | JackHandey
  | IdNumber
  | IndustrySegments
  | Internet
  | Invoice
  | Job
  | Kpop
  | LeagueOfLegends
  | Lebowski
  | LordOfTheRings
  | Lorem
  | LoveCraft
  | Markdown
  | Marketing
  | Measurement
  | MichaelScott
  | Military
  | Movie
  | Mountain
  | Music
  | Myst
  | Nation
  | Naruto
  | NatoPhoneticAlphabet
  | NewGirl
  | OnePiece
  | Horse
  | OverWatch
  | ParksAndRec
  | Phish
  | PhoneNumber
  | Pokemon
  | PrincessBride
  | ProgrammingLanguage
  | Quote
  | Relationship
  | Restaurant
  | RickAndMorty
  | RockBand
  | Room
  | Rupaul
  | Science
  | Seinfeld
  | Shakespeare
  | SiliconValley
  | Simpsons
  | SlackEmoji
  | SonicTheHedgehog
  | Source
  | SouthPark
  | Space
  | StarTrek
  | StarWars
  | StarGate
  | StrangerThings
  | Stripe
  | Subscription
  | SuperSmashBros
  | SuperMario
  | SuperHero
  | SwordArtOnline
  | Tea
  | Team
  | TheExpanse
  | TheItCrowd
  | TheThickOfIt
  | TwinPeaks
  | Tolkien
  | Touhou
  | UmphreysMcgee
  | University
  | VForVendetta
  | Vehicle
  | VentureBros
  | Verbs
  | Volleyball
  | Witcher
  | WorldCup
  | WorldOfWarcraft
  | Yoda
  | Zelda
  | Opera
  | Rajnikanth
  | Show
  | Suits
  | WarhammerFantasy
  | Barcode
  | DrivingLicense
  | Drone
  | Futurama
  | Minecraft
  | Prince
  | Rush
  | StreetFighter
  | StudioGhibli
  | CustomSourceEnglish String
  deriving (Int -> SourceData -> ShowS
[SourceData] -> ShowS
SourceData -> String
(Int -> SourceData -> ShowS)
-> (SourceData -> String)
-> ([SourceData] -> ShowS)
-> Show SourceData
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SourceData] -> ShowS
$cshowList :: [SourceData] -> ShowS
show :: SourceData -> String
$cshow :: SourceData -> String
showsPrec :: Int -> SourceData -> ShowS
$cshowsPrec :: Int -> SourceData -> ShowS
Show, SourceData -> SourceData -> Bool
(SourceData -> SourceData -> Bool)
-> (SourceData -> SourceData -> Bool) -> Eq SourceData
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SourceData -> SourceData -> Bool
$c/= :: SourceData -> SourceData -> Bool
== :: SourceData -> SourceData -> Bool
$c== :: SourceData -> SourceData -> Bool
Eq, Eq SourceData
Eq SourceData
-> (SourceData -> SourceData -> Ordering)
-> (SourceData -> SourceData -> Bool)
-> (SourceData -> SourceData -> Bool)
-> (SourceData -> SourceData -> Bool)
-> (SourceData -> SourceData -> Bool)
-> (SourceData -> SourceData -> SourceData)
-> (SourceData -> SourceData -> SourceData)
-> Ord SourceData
SourceData -> SourceData -> Bool
SourceData -> SourceData -> Ordering
SourceData -> SourceData -> SourceData
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: SourceData -> SourceData -> SourceData
$cmin :: SourceData -> SourceData -> SourceData
max :: SourceData -> SourceData -> SourceData
$cmax :: SourceData -> SourceData -> SourceData
>= :: SourceData -> SourceData -> Bool
$c>= :: SourceData -> SourceData -> Bool
> :: SourceData -> SourceData -> Bool
$c> :: SourceData -> SourceData -> Bool
<= :: SourceData -> SourceData -> Bool
$c<= :: SourceData -> SourceData -> Bool
< :: SourceData -> SourceData -> Bool
$c< :: SourceData -> SourceData -> Bool
compare :: SourceData -> SourceData -> Ordering
$ccompare :: SourceData -> SourceData -> Ordering
$cp1Ord :: Eq SourceData
Ord, (forall x. SourceData -> Rep SourceData x)
-> (forall x. Rep SourceData x -> SourceData) -> Generic SourceData
forall x. Rep SourceData x -> SourceData
forall x. SourceData -> Rep SourceData x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep SourceData x -> SourceData
$cfrom :: forall x. SourceData -> Rep SourceData x
Generic, Int -> SourceData -> Int
SourceData -> Int
(Int -> SourceData -> Int)
-> (SourceData -> Int) -> Hashable SourceData
forall a. (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: SourceData -> Int
$chash :: SourceData -> Int
hashWithSalt :: Int -> SourceData -> Int
$chashWithSalt :: Int -> SourceData -> Int
Hashable)

data CacheFieldKey =
  CacheFieldKey
    { CacheFieldKey -> Text
ckSource :: !Text
    , CacheFieldKey -> Text
ckField :: !Text
    , CacheFieldKey -> Text
ckLocale :: !Text
    }
  deriving (Int -> CacheFieldKey -> ShowS
[CacheFieldKey] -> ShowS
CacheFieldKey -> String
(Int -> CacheFieldKey -> ShowS)
-> (CacheFieldKey -> String)
-> ([CacheFieldKey] -> ShowS)
-> Show CacheFieldKey
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CacheFieldKey] -> ShowS
$cshowList :: [CacheFieldKey] -> ShowS
show :: CacheFieldKey -> String
$cshow :: CacheFieldKey -> String
showsPrec :: Int -> CacheFieldKey -> ShowS
$cshowsPrec :: Int -> CacheFieldKey -> ShowS
Show, CacheFieldKey -> CacheFieldKey -> Bool
(CacheFieldKey -> CacheFieldKey -> Bool)
-> (CacheFieldKey -> CacheFieldKey -> Bool) -> Eq CacheFieldKey
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CacheFieldKey -> CacheFieldKey -> Bool
$c/= :: CacheFieldKey -> CacheFieldKey -> Bool
== :: CacheFieldKey -> CacheFieldKey -> Bool
$c== :: CacheFieldKey -> CacheFieldKey -> Bool
Eq, Eq CacheFieldKey
Eq CacheFieldKey
-> (CacheFieldKey -> CacheFieldKey -> Ordering)
-> (CacheFieldKey -> CacheFieldKey -> Bool)
-> (CacheFieldKey -> CacheFieldKey -> Bool)
-> (CacheFieldKey -> CacheFieldKey -> Bool)
-> (CacheFieldKey -> CacheFieldKey -> Bool)
-> (CacheFieldKey -> CacheFieldKey -> CacheFieldKey)
-> (CacheFieldKey -> CacheFieldKey -> CacheFieldKey)
-> Ord CacheFieldKey
CacheFieldKey -> CacheFieldKey -> Bool
CacheFieldKey -> CacheFieldKey -> Ordering
CacheFieldKey -> CacheFieldKey -> CacheFieldKey
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: CacheFieldKey -> CacheFieldKey -> CacheFieldKey
$cmin :: CacheFieldKey -> CacheFieldKey -> CacheFieldKey
max :: CacheFieldKey -> CacheFieldKey -> CacheFieldKey
$cmax :: CacheFieldKey -> CacheFieldKey -> CacheFieldKey
>= :: CacheFieldKey -> CacheFieldKey -> Bool
$c>= :: CacheFieldKey -> CacheFieldKey -> Bool
> :: CacheFieldKey -> CacheFieldKey -> Bool
$c> :: CacheFieldKey -> CacheFieldKey -> Bool
<= :: CacheFieldKey -> CacheFieldKey -> Bool
$c<= :: CacheFieldKey -> CacheFieldKey -> Bool
< :: CacheFieldKey -> CacheFieldKey -> Bool
$c< :: CacheFieldKey -> CacheFieldKey -> Bool
compare :: CacheFieldKey -> CacheFieldKey -> Ordering
$ccompare :: CacheFieldKey -> CacheFieldKey -> Ordering
$cp1Ord :: Eq CacheFieldKey
Ord, (forall x. CacheFieldKey -> Rep CacheFieldKey x)
-> (forall x. Rep CacheFieldKey x -> CacheFieldKey)
-> Generic CacheFieldKey
forall x. Rep CacheFieldKey x -> CacheFieldKey
forall x. CacheFieldKey -> Rep CacheFieldKey x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CacheFieldKey x -> CacheFieldKey
$cfrom :: forall x. CacheFieldKey -> Rep CacheFieldKey x
Generic, Int -> CacheFieldKey -> Int
CacheFieldKey -> Int
(Int -> CacheFieldKey -> Int)
-> (CacheFieldKey -> Int) -> Hashable CacheFieldKey
forall a. (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: CacheFieldKey -> Int
$chash :: CacheFieldKey -> Int
hashWithSalt :: Int -> CacheFieldKey -> Int
$chashWithSalt :: Int -> CacheFieldKey -> Int
Hashable)

data CacheFileKey =
  CacheFileKey
    { CacheFileKey -> SourceData
cfkSource :: !SourceData
    , CacheFileKey -> Text
cfkLocale :: !Text
    }
  deriving (Int -> CacheFileKey -> ShowS
[CacheFileKey] -> ShowS
CacheFileKey -> String
(Int -> CacheFileKey -> ShowS)
-> (CacheFileKey -> String)
-> ([CacheFileKey] -> ShowS)
-> Show CacheFileKey
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CacheFileKey] -> ShowS
$cshowList :: [CacheFileKey] -> ShowS
show :: CacheFileKey -> String
$cshow :: CacheFileKey -> String
showsPrec :: Int -> CacheFileKey -> ShowS
$cshowsPrec :: Int -> CacheFileKey -> ShowS
Show, CacheFileKey -> CacheFileKey -> Bool
(CacheFileKey -> CacheFileKey -> Bool)
-> (CacheFileKey -> CacheFileKey -> Bool) -> Eq CacheFileKey
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CacheFileKey -> CacheFileKey -> Bool
$c/= :: CacheFileKey -> CacheFileKey -> Bool
== :: CacheFileKey -> CacheFileKey -> Bool
$c== :: CacheFileKey -> CacheFileKey -> Bool
Eq, Eq CacheFileKey
Eq CacheFileKey
-> (CacheFileKey -> CacheFileKey -> Ordering)
-> (CacheFileKey -> CacheFileKey -> Bool)
-> (CacheFileKey -> CacheFileKey -> Bool)
-> (CacheFileKey -> CacheFileKey -> Bool)
-> (CacheFileKey -> CacheFileKey -> Bool)
-> (CacheFileKey -> CacheFileKey -> CacheFileKey)
-> (CacheFileKey -> CacheFileKey -> CacheFileKey)
-> Ord CacheFileKey
CacheFileKey -> CacheFileKey -> Bool
CacheFileKey -> CacheFileKey -> Ordering
CacheFileKey -> CacheFileKey -> CacheFileKey
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: CacheFileKey -> CacheFileKey -> CacheFileKey
$cmin :: CacheFileKey -> CacheFileKey -> CacheFileKey
max :: CacheFileKey -> CacheFileKey -> CacheFileKey
$cmax :: CacheFileKey -> CacheFileKey -> CacheFileKey
>= :: CacheFileKey -> CacheFileKey -> Bool
$c>= :: CacheFileKey -> CacheFileKey -> Bool
> :: CacheFileKey -> CacheFileKey -> Bool
$c> :: CacheFileKey -> CacheFileKey -> Bool
<= :: CacheFileKey -> CacheFileKey -> Bool
$c<= :: CacheFileKey -> CacheFileKey -> Bool
< :: CacheFileKey -> CacheFileKey -> Bool
$c< :: CacheFileKey -> CacheFileKey -> Bool
compare :: CacheFileKey -> CacheFileKey -> Ordering
$ccompare :: CacheFileKey -> CacheFileKey -> Ordering
$cp1Ord :: Eq CacheFileKey
Ord, (forall x. CacheFileKey -> Rep CacheFileKey x)
-> (forall x. Rep CacheFileKey x -> CacheFileKey)
-> Generic CacheFileKey
forall x. Rep CacheFileKey x -> CacheFileKey
forall x. CacheFileKey -> Rep CacheFileKey x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep CacheFileKey x -> CacheFileKey
$cfrom :: forall x. CacheFileKey -> Rep CacheFileKey x
Generic, Int -> CacheFileKey -> Int
CacheFileKey -> Int
(Int -> CacheFileKey -> Int)
-> (CacheFileKey -> Int) -> Hashable CacheFileKey
forall a. (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: CacheFileKey -> Int
$chash :: CacheFileKey -> Int
hashWithSalt :: Int -> CacheFileKey -> Int
$chashWithSalt :: Int -> CacheFileKey -> Int
Hashable)