use fake::Fake;
use fake::faker::internet::en::SafeEmail;
use fake::faker::lorem::en::{Sentence, Word};
use fake::faker::name::en::Name;
use rand::Rng;
use rand::seq::SliceRandom;
pub mod cognito;
pub mod dynamodb;
pub mod s3;
pub mod secrets;
pub mod sqs;
pub fn fake_name() -> String {
Name().fake()
}
pub fn fake_email() -> String {
SafeEmail().fake()
}
#[allow(dead_code)] pub fn fake_word() -> String {
Word().fake()
}
#[allow(dead_code)] pub fn fake_sentence() -> String {
Sentence(3..7).fake()
}
#[allow(dead_code)] pub fn fake_slug(n: usize) -> String {
let mut rng = rand::thread_rng();
(0..n)
.map(|_| Word().fake::<String>())
.collect::<Vec<_>>()
.join("-")
+ "-"
+ &rng.gen_range(100..999).to_string()
}
pub fn pick<T>(items: &[T]) -> &T {
let mut rng = rand::thread_rng();
items.choose(&mut rng).unwrap_or(&items[0])
}
pub fn probability(p: f64) -> bool {
rand::thread_rng().gen_bool(p.clamp(0.0, 1.0))
}