- 替换 Field(max_length=X) 为 StrX/TextX 类型别名(21 个 sqlmodels 文件) - 替换 get + 404 检查为 get_exist_one()(17 个路由文件,约 50 处) - 替换 save + session.refresh 为 save(load=...) - 替换 session.add + commit 为 save()(dav/provider.py) - 更新所有依赖至最新版本 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -147,7 +147,7 @@ async def migrate_single_file(
|
||||
# 4. 更新 Object
|
||||
obj.policy_id = dest_policy.id
|
||||
obj.physical_file_id = new_physical.id
|
||||
await obj.save(session)
|
||||
obj = await obj.save(session)
|
||||
|
||||
# 5. 旧 PhysicalFile 引用计数 -1
|
||||
old_physical.decrement_reference()
|
||||
@@ -159,7 +159,7 @@ async def migrate_single_file(
|
||||
l.warning(f"删除源文件失败(不影响迁移结果): {old_physical.storage_path}: {e}")
|
||||
await PhysicalFile.delete(session, old_physical)
|
||||
else:
|
||||
await old_physical.save(session)
|
||||
old_physical = await old_physical.save(session)
|
||||
|
||||
l.info(f"文件迁移完成: {obj.name} ({obj.id}), {src_policy.name} → {dest_policy.name}")
|
||||
|
||||
@@ -187,12 +187,12 @@ async def migrate_file_with_task(
|
||||
|
||||
task.status = TaskStatus.COMPLETED
|
||||
task.progress = 100
|
||||
await task.save(session)
|
||||
task = await task.save(session)
|
||||
except Exception as e:
|
||||
l.error(f"文件迁移任务失败: {obj.id}: {e}")
|
||||
task.status = TaskStatus.ERROR
|
||||
task.error = str(e)[:500]
|
||||
await task.save(session)
|
||||
task = await task.save(session)
|
||||
|
||||
|
||||
async def migrate_directory_files(
|
||||
@@ -244,7 +244,7 @@ async def migrate_directory_files(
|
||||
# 更新所有子目录的 policy_id
|
||||
for sub_folder in folders_to_update:
|
||||
sub_folder.policy_id = dest_policy.id
|
||||
await sub_folder.save(session)
|
||||
sub_folder = await sub_folder.save(session)
|
||||
|
||||
# 完成任务
|
||||
if errors:
|
||||
@@ -254,7 +254,7 @@ async def migrate_directory_files(
|
||||
task.status = TaskStatus.COMPLETED
|
||||
|
||||
task.progress = 100
|
||||
await task.save(session)
|
||||
task = await task.save(session)
|
||||
|
||||
l.info(
|
||||
f"目录迁移完成: {folder.name} ({folder.id}), "
|
||||
@@ -264,7 +264,7 @@ async def migrate_directory_files(
|
||||
l.error(f"目录迁移任务失败: {folder.id}: {e}")
|
||||
task.status = TaskStatus.ERROR
|
||||
task.error = str(e)[:500]
|
||||
await task.save(session)
|
||||
task = await task.save(session)
|
||||
|
||||
|
||||
async def _collect_objects_recursive(
|
||||
|
||||
@@ -287,7 +287,7 @@ async def permanently_delete_objects(
|
||||
await PhysicalFile.delete(session, physical_file, commit=False)
|
||||
l.debug(f"物理文件记录已删除: {physical_file.storage_path}")
|
||||
else:
|
||||
await physical_file.save(session, commit=False)
|
||||
physical_file = await physical_file.save(session, commit=False)
|
||||
l.debug(f"物理文件仍有 {physical_file.reference_count} 个引用: {physical_file.storage_path}")
|
||||
|
||||
# 更新用户存储配额
|
||||
@@ -399,7 +399,7 @@ async def delete_object_recursive(
|
||||
await PhysicalFile.delete(session, physical_file, commit=False)
|
||||
l.debug(f"物理文件记录已删除: {physical_file.storage_path}")
|
||||
else:
|
||||
await physical_file.save(session, commit=False)
|
||||
physical_file = await physical_file.save(session, commit=False)
|
||||
l.debug(f"物理文件仍有 {physical_file.reference_count} 个引用: {physical_file.storage_path}")
|
||||
|
||||
# 阶段三:更新用户存储配额(与删除在同一事务中)
|
||||
@@ -458,7 +458,7 @@ async def _copy_object_recursive(
|
||||
physical_file = await PhysicalFile.get(session, PhysicalFile.id == src_physical_file_id)
|
||||
if physical_file:
|
||||
physical_file.increment_reference()
|
||||
await physical_file.save(session)
|
||||
physical_file = await physical_file.save(session)
|
||||
total_copied_size += src_size
|
||||
|
||||
new_obj = await new_obj.save(session)
|
||||
|
||||
@@ -192,7 +192,7 @@ async def _login_oauth(
|
||||
# 已绑定 → 更新 OAuth 信息并返回关联用户
|
||||
identity.display_name = nickname
|
||||
identity.avatar_url = avatar_url
|
||||
await identity.save(session)
|
||||
identity = await identity.save(session)
|
||||
|
||||
user: User = await User.get(session, User.id == identity.user_id, load=User.group)
|
||||
if not user:
|
||||
@@ -254,7 +254,7 @@ async def _auto_register_oauth_user(
|
||||
is_verified=True,
|
||||
user_id=new_user_id,
|
||||
)
|
||||
await identity.save(session)
|
||||
identity = await identity.save(session)
|
||||
|
||||
# 创建用户根目录
|
||||
default_policy = await Policy.get(session, Policy.name == "本地存储")
|
||||
@@ -335,7 +335,7 @@ async def _login_passkey(
|
||||
|
||||
# 更新签名计数
|
||||
authn.sign_count = verification.new_sign_count
|
||||
await authn.save(session)
|
||||
authn = await authn.save(session)
|
||||
|
||||
# 加载用户
|
||||
user: User = await User.get(session, User.id == authn.user_id, load=User.group)
|
||||
@@ -392,7 +392,7 @@ async def _login_magic_link(
|
||||
# 标记邮箱已验证
|
||||
if not identity.is_verified:
|
||||
identity.is_verified = True
|
||||
await identity.save(session)
|
||||
identity = await identity.save(session)
|
||||
|
||||
return user
|
||||
|
||||
|
||||
Reference in New Issue
Block a user