bug/config_id
This commit is contained in:
@@ -28,33 +28,7 @@ def resolve_config_id(config_id: UUID | int | str, db: Session) -> UUID:
|
|||||||
if isinstance(config_id, UUID):
|
if isinstance(config_id, UUID):
|
||||||
return config_id
|
return config_id
|
||||||
|
|
||||||
# 2. 如果是字符串类型
|
# 2. 如果是整数类型,通过 config_id_old 查找
|
||||||
if isinstance(config_id, str):
|
|
||||||
config_id_stripped = config_id.strip()
|
|
||||||
|
|
||||||
# 2.1 尝试解析为 UUID(标准 UUID 字符串长度为 36)
|
|
||||||
try:
|
|
||||||
return uuid_module.UUID(config_id_stripped)
|
|
||||||
except ValueError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
# 2.2 尝试解析为整数(用于查询 config_id_old)
|
|
||||||
try:
|
|
||||||
old_id = int(config_id_stripped)
|
|
||||||
if old_id > 0:
|
|
||||||
memory_config = db.query(MemoryConfig).filter(
|
|
||||||
MemoryConfig.config_id_old == old_id
|
|
||||||
).first()
|
|
||||||
if not memory_config:
|
|
||||||
raise ValueError(f"未找到 config_id_old={old_id} 对应的配置")
|
|
||||||
return memory_config.config_id
|
|
||||||
except ValueError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
# 2.3 无法解析的字符串格式
|
|
||||||
raise ValueError(f"无效的 config_id 格式: '{config_id}'(必须是 UUID 或正整数)")
|
|
||||||
|
|
||||||
# 3. 如果是整数类型,通过 config_id_old 查找
|
|
||||||
if isinstance(config_id, int):
|
if isinstance(config_id, int):
|
||||||
if config_id <= 0:
|
if config_id <= 0:
|
||||||
raise ValueError(f"config_id 必须是正整数: {config_id}")
|
raise ValueError(f"config_id 必须是正整数: {config_id}")
|
||||||
@@ -68,5 +42,33 @@ def resolve_config_id(config_id: UUID | int | str, db: Session) -> UUID:
|
|||||||
|
|
||||||
return memory_config.config_id
|
return memory_config.config_id
|
||||||
|
|
||||||
|
# 3. 如果是字符串类型
|
||||||
|
if isinstance(config_id, str):
|
||||||
|
config_id_stripped = config_id.strip()
|
||||||
|
|
||||||
|
# 3.1 先尝试解析为整数(用于查询 config_id_old)
|
||||||
|
# 这样可以处理 "17" 这样的字符串
|
||||||
|
try:
|
||||||
|
old_id = int(config_id_stripped)
|
||||||
|
if old_id > 0:
|
||||||
|
memory_config = db.query(MemoryConfig).filter(
|
||||||
|
MemoryConfig.config_id_old == old_id
|
||||||
|
).first()
|
||||||
|
if not memory_config:
|
||||||
|
raise ValueError(f"未找到 config_id_old={old_id} 对应的配置")
|
||||||
|
return memory_config.config_id
|
||||||
|
except ValueError:
|
||||||
|
# 不是整数,继续尝试 UUID
|
||||||
|
pass
|
||||||
|
|
||||||
|
# 3.2 尝试解析为 UUID
|
||||||
|
try:
|
||||||
|
return uuid_module.UUID(config_id_stripped)
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
# 3.3 无法解析的字符串格式
|
||||||
|
raise ValueError(f"无效的 config_id 格式: '{config_id}'(必须是 UUID 或正整数)")
|
||||||
|
|
||||||
# 4. 不支持的类型
|
# 4. 不支持的类型
|
||||||
raise ValueError(f"不支持的 config_id 类型: {type(config_id).__name__}")
|
raise ValueError(f"不支持的 config_id 类型: {type(config_id).__name__}")
|
||||||
|
|||||||
Reference in New Issue
Block a user