update code level
This commit is contained in:
@@ -314,6 +314,8 @@ impl Database {
|
||||
|
||||
/// 把 src_id 的所有相册关联、别名移动到 dst_id,然后删除 src_id
|
||||
pub async fn merge_person_into(&self, src_id: i64, dst_id: i64) {
|
||||
let _guard = self.write_lock.lock().await;
|
||||
|
||||
// 整个合并过程是一个原子操作,用事务包裹避免逐条 autocommit
|
||||
let mut tx = match self.pool.begin().await {
|
||||
Ok(t) => t,
|
||||
@@ -328,9 +330,9 @@ impl Database {
|
||||
sqlx::query("INSERT OR IGNORE INTO person_aliases (person_id, alias_type, alias_name) SELECT ?, alias_type, alias_name FROM person_aliases WHERE person_id = ?")
|
||||
.bind(dst_id).bind(src_id).execute(tx.deref_mut()).await.ok();
|
||||
|
||||
// 3. 把 src 的原名也作为别名加入 dst
|
||||
// 3. 把 src 的原名也作为别名加入 dst(使用事务连接,避免额外占用连接池)
|
||||
if let Some(r) = sqlx::query("SELECT id, name, display_name FROM persons WHERE id = ?")
|
||||
.bind(src_id).fetch_optional(&self.pool).await.ok().flatten()
|
||||
.bind(src_id).fetch_optional(tx.deref_mut()).await.ok().flatten()
|
||||
{
|
||||
let src_name: String = r.get("name");
|
||||
let src_display: Option<String> = r.get("display_name");
|
||||
|
||||
Reference in New Issue
Block a user