fix: 远程→本地迁移用旧环境远程配置(而非空的新data)
This commit is contained in:
parent
7e0a3d1d93
commit
17b90c8c12
@ -158,11 +158,12 @@ async def set_work_env(sor, owner_type: str, owner_id: str, mode: str,
|
||||
if not remote_config.get("remote_dir"):
|
||||
return {"ok": False, "error": "远程模式需要 remote_dir"}
|
||||
|
||||
# 查旧环境(用于判断是否需要迁移)
|
||||
# 查旧环境(完整记录,迁移时需要用旧的远程配置)
|
||||
old_recs = await sor.sqlExe(
|
||||
"SELECT mode FROM sd_work_envs WHERE owner_type=${t}$ AND owner_id=${o}$ LIMIT 1",
|
||||
"SELECT * FROM sd_work_envs WHERE owner_type=${t}$ AND owner_id=${o}$ LIMIT 1",
|
||||
{"t": owner_type, "o": owner_id})
|
||||
old_mode = getattr(old_recs[0], "mode", "local") if old_recs else "local"
|
||||
old_env = _row_to_env(old_recs[0]) if old_recs else None
|
||||
|
||||
# upsert
|
||||
from appPublic.uniqueID import getID
|
||||
@ -191,8 +192,12 @@ async def set_work_env(sor, owner_type: str, owner_id: str, mode: str,
|
||||
# 触发迁移(模式切换 + 提供了 account_name 时)
|
||||
migrated = {"migrated": False}
|
||||
if account_name and old_mode != mode:
|
||||
env = _row_to_env_from_dict(data)
|
||||
migrated = await migrate_work_dir(account_name, old_mode, mode, env)
|
||||
# remote → local 用旧的远程配置;local → remote 用新的远程配置
|
||||
if old_mode == "remote" and mode == "local":
|
||||
migrate_env = old_env or _row_to_env_from_dict(data)
|
||||
else:
|
||||
migrate_env = _row_to_env_from_dict(data)
|
||||
migrated = await migrate_work_dir(account_name, old_mode, mode, migrate_env)
|
||||
|
||||
return {"ok": True, "mode": mode, "old_mode": old_mode, "migration": migrated}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user