88 lines
2.8 KiB
Rust
88 lines
2.8 KiB
Rust
|
use actix::Addr;
|
||
|
use config::SharedAppConfig;
|
||
|
use database_manager::{query_db, Database};
|
||
|
use fake::{Fake, Faker};
|
||
|
use model::{ProductCategory, ProductName};
|
||
|
|
||
|
use crate::product_photos::create_product_photos;
|
||
|
use crate::{Result, SharedState};
|
||
|
|
||
|
async fn create_product(
|
||
|
db: Addr<Database>,
|
||
|
seed: SharedState,
|
||
|
name: &'static str,
|
||
|
category: &'static str,
|
||
|
) -> crate::Result<()> {
|
||
|
let seed = seed.clone();
|
||
|
let db = db.clone();
|
||
|
let product = query_db!(
|
||
|
db,
|
||
|
database_manager::CreateProduct {
|
||
|
name: ProductName::from(String::from(name)),
|
||
|
short_description: Faker.fake(),
|
||
|
long_description: Faker.fake(),
|
||
|
category: Some(ProductCategory::new(category)),
|
||
|
price: Faker.fake(),
|
||
|
deliver_days_flag: Faker.fake(),
|
||
|
},
|
||
|
crate::Error::DbProduct
|
||
|
);
|
||
|
|
||
|
seed.lock().unwrap().products.push(product);
|
||
|
|
||
|
Ok(())
|
||
|
}
|
||
|
|
||
|
pub(crate) async fn create_products(
|
||
|
db: Addr<Database>,
|
||
|
seed: SharedState,
|
||
|
config: SharedAppConfig,
|
||
|
) -> Result<()> {
|
||
|
crate::photos::create_photos(db.clone(), seed.clone(), config.clone())
|
||
|
.await
|
||
|
.unwrap();
|
||
|
|
||
|
let products = query_db!(db, database_manager::AllProducts, default vec![]);
|
||
|
if products.len() >= 10 {
|
||
|
{
|
||
|
seed.lock().unwrap().products = products;
|
||
|
}
|
||
|
if let Err(e) = create_product_photos(db.clone(), seed.clone(), config.clone()).await {
|
||
|
log::error!("{e:?}");
|
||
|
}
|
||
|
return Ok(());
|
||
|
}
|
||
|
|
||
|
let results = tokio::join!(
|
||
|
create_product(db.clone(), seed.clone(), "Nikon", "Cameras",),
|
||
|
create_product(db.clone(), seed.clone(), "Bonoid CBD", "Drugstore",),
|
||
|
create_product(db.clone(), seed.clone(), "Casio Speaker", "Speakers",),
|
||
|
create_product(db.clone(), seed.clone(), "Eprism Studio", "Drugstore",),
|
||
|
create_product(db.clone(), seed.clone(), "Best Phones 2022", "Phones",),
|
||
|
create_product(db.clone(), seed.clone(), "Sweet cake", "Sweets",),
|
||
|
create_product(db.clone(), seed.clone(), "Lexal 128G", "Memory",),
|
||
|
create_product(db.clone(), seed.clone(), "Fujifilm X-T10", "Cameras",),
|
||
|
create_product(db.clone(), seed.clone(), "Sweet Tower", "Sweets",),
|
||
|
create_product(db.clone(), seed.clone(), "Nikon Lenses", "Cameras",),
|
||
|
create_product(
|
||
|
db.clone(),
|
||
|
seed.clone(),
|
||
|
"Venus HD Professional",
|
||
|
"Drugstore",
|
||
|
)
|
||
|
);
|
||
|
results.0.unwrap();
|
||
|
results.1.unwrap();
|
||
|
results.2.unwrap();
|
||
|
results.3.unwrap();
|
||
|
results.4.unwrap();
|
||
|
results.5.unwrap();
|
||
|
results.6.unwrap();
|
||
|
results.7.unwrap();
|
||
|
results.8.unwrap();
|
||
|
results.9.unwrap();
|
||
|
results.10.unwrap();
|
||
|
|
||
|
create_product_photos(db.clone(), seed.clone(), config.clone()).await
|
||
|
}
|