1.2.7
This commit is contained in:
parent
bc4e426b02
commit
5f3a501387
754
Cargo.lock
generated
754
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "sr_download"
|
name = "sr_download"
|
||||||
version = "1.2.6"
|
version = "1.2.7"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
default-run = "sr_download"
|
default-run = "sr_download"
|
||||||
|
|
||||||
|
@ -3,9 +3,10 @@ use sea_orm::{
|
|||||||
ActiveModelTrait, ColumnTrait, ConnectionTrait, DatabaseConnection, EntityTrait,
|
ActiveModelTrait, ColumnTrait, ConnectionTrait, DatabaseConnection, EntityTrait,
|
||||||
IntoActiveModel, ModelTrait, QueryFilter, QuerySelect, Statement, TransactionTrait,
|
IntoActiveModel, ModelTrait, QueryFilter, QuerySelect, Statement, TransactionTrait,
|
||||||
};
|
};
|
||||||
// use tracing::{event, Level};
|
use tracing::{event, Level};
|
||||||
|
|
||||||
use crate::model;
|
use crate::model;
|
||||||
|
use crate::config::ConfigFile;
|
||||||
pub use crate::model::sea_orm_active_enums::SaveType;
|
pub use crate::model::sea_orm_active_enums::SaveType;
|
||||||
use migration::{SaveId, FULL_DATA_VIEW, TEXT_DATA_MAX_LEN};
|
use migration::{SaveId, FULL_DATA_VIEW, TEXT_DATA_MAX_LEN};
|
||||||
|
|
||||||
@ -16,6 +17,20 @@ pub mod utils;
|
|||||||
|
|
||||||
pub use utils::{connect, connect_server, migrate};
|
pub use utils::{connect, connect_server, migrate};
|
||||||
|
|
||||||
|
pub async fn full_update(db: &DatabaseConnection, conf: &ConfigFile) {
|
||||||
|
// sea_orm 的迁移
|
||||||
|
if let Err(e) = migrate(db).await {
|
||||||
|
event!(Level::ERROR, "sea_orm 迁移失败: {:?}", e);
|
||||||
|
};
|
||||||
|
|
||||||
|
// 自己的迁移
|
||||||
|
updates::update_db(db, conf).await;
|
||||||
|
|
||||||
|
// 数据更新
|
||||||
|
utils::check_null_data(db).await;
|
||||||
|
utils::update_xml_tested(db).await;
|
||||||
|
}
|
||||||
|
|
||||||
#[allow(unused)]
|
#[allow(unused)]
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct DbData {
|
pub struct DbData {
|
||||||
|
@ -1 +1,55 @@
|
|||||||
|
use sea_orm::{ConnectionTrait, DatabaseBackend, DatabaseConnection, Statement, TransactionTrait};
|
||||||
|
use tracing::{event, Level};
|
||||||
|
|
||||||
|
use crate::config::ConfigFile;
|
||||||
|
|
||||||
|
pub mod pre_local {
|
||||||
|
use super::*;
|
||||||
|
use crate::db_part::defines::check_sea_orm_exists;
|
||||||
|
|
||||||
|
pub async fn try_merge(db: &DatabaseConnection, conf: &ConfigFile) {
|
||||||
|
event!(Level::INFO, "尝试从 sea_orm 表迁移数据");
|
||||||
|
if !check_sea_orm_exists(db, conf).await {
|
||||||
|
// 如果没有这个表, 那就说明已经是 merge 过了
|
||||||
|
event!(Level::DEBUG, "sea_orm 表不存在, 不需要迁移");
|
||||||
|
}
|
||||||
|
event!(Level::DEBUG, "sea_orm 表存在, 开始迁移");
|
||||||
|
// 先开个事物
|
||||||
|
let transaction = match db.begin().await {
|
||||||
|
Ok(t) => t,
|
||||||
|
Err(e) => {
|
||||||
|
event!(Level::ERROR, "无法开启事务: {:?}", e);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 迁移数据
|
||||||
|
|
||||||
|
// 提交事务
|
||||||
|
if let Err(e) = transaction.commit().await {
|
||||||
|
event!(Level::ERROR, "无法提交事务: {:?}", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub async fn update_db(db: &DatabaseConnection, conf: &ConfigFile) {
|
||||||
|
event!(Level::INFO, "开始更新数据库");
|
||||||
|
|
||||||
|
// 开启全局事务
|
||||||
|
let global_transaction = match db.begin().await {
|
||||||
|
Ok(t) => t,
|
||||||
|
Err(e) => {
|
||||||
|
event!(Level::ERROR, "无法开启全局事务: {:?}", e);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
pre_local::try_merge(db, conf).await;
|
||||||
|
|
||||||
|
// 提交全局事务
|
||||||
|
if let Err(e) = global_transaction.commit().await {
|
||||||
|
event!(Level::ERROR, "无法提交全局事务, 更新失败: {:?}", e);
|
||||||
|
}
|
||||||
|
|
||||||
|
event!(Level::INFO, "更新完成");
|
||||||
|
}
|
||||||
|
@ -79,9 +79,7 @@ pub async fn main(mut stop_receiver: Receiver<()>) -> anyhow::Result<()> {
|
|||||||
let conf = config::ConfigFile::try_read()?;
|
let conf = config::ConfigFile::try_read()?;
|
||||||
|
|
||||||
let db_connect = db_part::connect(&conf).await?;
|
let db_connect = db_part::connect(&conf).await?;
|
||||||
db_part::migrate(&db_connect).await?;
|
db_part::full_update(&db_connect, &conf).await;
|
||||||
db_part::utils::check_null_data(&db_connect).await;
|
|
||||||
db_part::utils::update_xml_tested(&db_connect).await;
|
|
||||||
|
|
||||||
tokio::time::sleep(std::time::Duration::from_secs(2)).await;
|
tokio::time::sleep(std::time::Duration::from_secs(2)).await;
|
||||||
|
|
||||||
|
@ -93,15 +93,10 @@ async fn async_main(run_mode: RunMode) -> anyhow::Result<()> {
|
|||||||
stop_sender.send(()).unwrap();
|
stop_sender.send(()).unwrap();
|
||||||
});
|
});
|
||||||
|
|
||||||
let job_waiter;
|
let job_waiter = match run_mode {
|
||||||
match run_mode {
|
RunMode::Serve => tokio::spawn(serve_mode::main(stop_receiver)),
|
||||||
RunMode::Serve => {
|
RunMode::Fast => tokio::spawn(fast_mode::main(stop_receiver)),
|
||||||
job_waiter = tokio::spawn(serve_mode::main(stop_receiver));
|
};
|
||||||
}
|
|
||||||
RunMode::Fast => {
|
|
||||||
job_waiter = tokio::spawn(fast_mode::main(stop_receiver));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
job_waiter.await??;
|
job_waiter.await??;
|
||||||
let _ = stop_waiter.await;
|
let _ = stop_waiter.await;
|
||||||
Ok(())
|
Ok(())
|
||||||
|
@ -14,9 +14,7 @@ pub async fn main(mut stop_receiver: Receiver<()>) -> anyhow::Result<()> {
|
|||||||
let conf = config::ConfigFile::try_read()?;
|
let conf = config::ConfigFile::try_read()?;
|
||||||
|
|
||||||
let db_connect = db_part::connect(&conf).await?;
|
let db_connect = db_part::connect(&conf).await?;
|
||||||
db_part::migrate(&db_connect).await?;
|
db_part::full_update(&db_connect, &conf).await;
|
||||||
db_part::utils::check_null_data(&db_connect).await;
|
|
||||||
db_part::utils::update_xml_tested(&db_connect).await;
|
|
||||||
let mut db_max_id = db_part::search::max_id(&db_connect).await;
|
let mut db_max_id = db_part::search::max_id(&db_connect).await;
|
||||||
|
|
||||||
let mut web_waiter = None;
|
let mut web_waiter = None;
|
||||||
|
Loading…
Reference in New Issue
Block a user