2023-12-23 19:27:36 +01:00
|
|
|
use crate::builder::types::Action;
|
|
|
|
use crate::repo::repo::add_pkg;
|
2023-12-23 23:00:30 +01:00
|
|
|
use sea_orm::{ActiveModelTrait, DatabaseConnection, Set};
|
2023-12-23 19:27:36 +01:00
|
|
|
use tokio::sync::broadcast::Sender;
|
|
|
|
|
|
|
|
pub async fn init(db: DatabaseConnection, tx: Sender<Action>) {
|
|
|
|
loop {
|
|
|
|
if let Ok(_result) = tx.subscribe().recv().await {
|
|
|
|
match _result {
|
|
|
|
// add a package to parallel build
|
2023-12-23 23:00:30 +01:00
|
|
|
Action::Build(name, version, url, mut version_model) => {
|
2023-12-23 19:27:36 +01:00
|
|
|
let db = db.clone();
|
2023-12-23 23:00:30 +01:00
|
|
|
|
|
|
|
// spawn new thread for each pkg build
|
2023-12-23 19:27:36 +01:00
|
|
|
tokio::spawn(async move {
|
|
|
|
match add_pkg(url, version, name).await {
|
2023-12-23 23:00:30 +01:00
|
|
|
Ok(pkg_file_name) => {
|
2023-12-23 19:27:36 +01:00
|
|
|
println!("successfully built package");
|
|
|
|
|
2023-12-23 23:00:30 +01:00
|
|
|
// update status
|
|
|
|
version_model.status = Set(Some(1));
|
|
|
|
version_model.file_name = Set(Some(pkg_file_name));
|
|
|
|
version_model.update(&db).await.unwrap();
|
2023-12-23 19:27:36 +01:00
|
|
|
}
|
|
|
|
Err(e) => {
|
2023-12-23 23:00:30 +01:00
|
|
|
version_model.status = Set(Some(2));
|
|
|
|
version_model.update(&db).await.unwrap();
|
|
|
|
|
2023-12-23 19:27:36 +01:00
|
|
|
println!("Error: {e}")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|