实现实时双写同步并接入核心写操作

This commit is contained in:
JSR
2026-03-19 18:04:41 +08:00
parent 141d073cc3
commit ec3929d65d
5 changed files with 199 additions and 138 deletions
+14 -6
View File
@@ -8,6 +8,7 @@ use crate::db::entities::reasons;
use crate::services::PermissionLevel;
use crate::state::AppState;
use super::database::realtime_dual_write_sync;
use super::response::IpcResponse;
#[derive(Debug, Clone, Serialize, Deserialize)]
@@ -116,11 +117,14 @@ pub async fn reason_create(
updated_at: Set(now),
};
match new_reason.insert(conn).await {
Ok(inserted) => Ok(IpcResponse::success(inserted.id)),
Err(e) => Ok(IpcResponse::error(&format!(
"Failed to create reason: {}",
e
match new_reason.insert(conn).await {
Ok(inserted) => {
realtime_dual_write_sync(state.inner()).await?;
Ok(IpcResponse::success(inserted.id))
}
Err(e) => Ok(IpcResponse::error(&format!(
"Failed to create reason: {}",
e
))),
}
} else {
@@ -165,7 +169,10 @@ pub async fn reason_update(
}
match active.update(conn).await {
Ok(_) => Ok(IpcResponse::success_empty()),
Ok(_) => {
realtime_dual_write_sync(state.inner()).await?;
Ok(IpcResponse::success_empty())
}
Err(e) => Ok(IpcResponse::error(&format!(
"Failed to update reason: {}",
e
@@ -205,6 +212,7 @@ pub async fn reason_delete(
if result.rows_affected == 0 {
Ok(IpcResponse::error("记录不存在"))
} else {
realtime_dual_write_sync(state.inner()).await?;
Ok(IpcResponse::success(DeleteResult {
changes: result.rows_affected as i32,
}))