|
|
#!/usr/bin/env python3
|
|
|
# -*- coding: utf-8 -*-
|
|
|
"""
|
|
|
优化的待办事项数据管理模块
|
|
|
|
|
|
该模块是旧todo_data.py的优化版本,使用新的存储系统和缓存机制,提高性能。
|
|
|
接口与旧版本完全兼容,可以直接替换使用。
|
|
|
"""
|
|
|
|
|
|
import os
|
|
|
import json
|
|
|
import uuid
|
|
|
from datetime import datetime
|
|
|
from new_structure.data.storage.todo_data_adapter import TodoDataAdapter
|
|
|
|
|
|
# 创建全局适配器实例
|
|
|
_todo_adapter = None
|
|
|
|
|
|
def get_todo_adapter(auth=None, logger=None):
|
|
|
"""获取全局适配器实例
|
|
|
|
|
|
Args:
|
|
|
auth: 用户认证对象
|
|
|
logger: 日志对象
|
|
|
|
|
|
Returns:
|
|
|
TodoDataAdapter实例
|
|
|
"""
|
|
|
global _todo_adapter
|
|
|
if _todo_adapter is None:
|
|
|
_todo_adapter = TodoDataAdapter(auth=auth, logger=logger, use_optimized=True)
|
|
|
return _todo_adapter
|
|
|
|
|
|
class TodoManager:
|
|
|
"""待办事项数据管理类(兼容旧接口)
|
|
|
|
|
|
与旧todo_data.py的TodoManager类接口完全兼容,但使用优化的存储和缓存机制。
|
|
|
"""
|
|
|
|
|
|
def __init__(self, auth=None, logger=None):
|
|
|
"""初始化待办事项管理类
|
|
|
|
|
|
Args:
|
|
|
auth: 用户认证对象
|
|
|
logger: 日志对象
|
|
|
"""
|
|
|
self.adapter = get_todo_adapter(auth=auth, logger=logger)
|
|
|
self.auth = auth
|
|
|
self.logger = logger
|
|
|
|
|
|
def _get_todo_file(self, user_identifier):
|
|
|
"""兼容旧接口的文件路径方法
|
|
|
|
|
|
Args:
|
|
|
user_identifier: 用户标识符
|
|
|
|
|
|
Returns:
|
|
|
str: 虚拟文件路径
|
|
|
"""
|
|
|
# 从session_id中提取用户名
|
|
|
username = user_identifier
|
|
|
if isinstance(user_identifier, str) and "_" in user_identifier and self.auth:
|
|
|
valid, username = self.auth.validate_session(user_identifier)
|
|
|
if not valid:
|
|
|
username = user_identifier.split("_")[0] if "_" in user_identifier else user_identifier
|
|
|
|
|
|
# 确保data目录存在
|
|
|
os.makedirs("data", exist_ok=True)
|
|
|
return f"data/todo_{username}.json"
|
|
|
|
|
|
def load_todos(self, user_identifier):
|
|
|
"""加载用户待办事项数据
|
|
|
|
|
|
Args:
|
|
|
user_identifier: 用户标识符
|
|
|
|
|
|
Returns:
|
|
|
list: 待办事项列表
|
|
|
"""
|
|
|
return self.adapter.load_todos(user_identifier)
|
|
|
|
|
|
def save_todos(self, user_identifier, todos):
|
|
|
"""保存用户待办事项
|
|
|
|
|
|
Args:
|
|
|
user_identifier: 用户标识符
|
|
|
todos: 待办事项列表
|
|
|
|
|
|
Returns:
|
|
|
bool: 保存成功返回True
|
|
|
"""
|
|
|
return self.adapter.save_todos(user_identifier, todos)
|
|
|
|
|
|
def create_todo(self, user_identifier, todo_data):
|
|
|
"""创建新待办事项
|
|
|
|
|
|
Args:
|
|
|
user_identifier: 用户标识符
|
|
|
todo_data: 待办事项数据
|
|
|
|
|
|
Returns:
|
|
|
tuple: (bool, dict)
|
|
|
"""
|
|
|
return self.adapter.create_todo(user_identifier, todo_data)
|
|
|
|
|
|
def update_todo(self, user_identifier, todo_id, todo_data):
|
|
|
"""更新待办事项
|
|
|
|
|
|
Args:
|
|
|
user_identifier: 用户标识符
|
|
|
todo_id: 待办事项ID
|
|
|
todo_data: 要更新的数据
|
|
|
|
|
|
Returns:
|
|
|
tuple: (bool, dict)
|
|
|
"""
|
|
|
return self.adapter.update_todo(user_identifier, todo_id, todo_data)
|
|
|
|
|
|
def complete_todo(self, user_identifier, todo_id):
|
|
|
"""标记待办事项为已完成
|
|
|
|
|
|
Args:
|
|
|
user_identifier: 用户标识符
|
|
|
todo_id: 待办事项ID
|
|
|
|
|
|
Returns:
|
|
|
bool: 操作成功返回True
|
|
|
"""
|
|
|
return self.adapter.complete_todo(user_identifier, todo_id)
|
|
|
|
|
|
def delete_todo(self, user_identifier, todo_id):
|
|
|
"""删除待办事项
|
|
|
|
|
|
Args:
|
|
|
user_identifier: 用户标识符
|
|
|
todo_id: 待办事项ID
|
|
|
|
|
|
Returns:
|
|
|
bool: 删除成功返回True
|
|
|
"""
|
|
|
return self.adapter.delete_todo(user_identifier, todo_id)
|
|
|
|
|
|
def get_todos_by_status(self, user_identifier, status):
|
|
|
"""根据状态获取待办事项
|
|
|
|
|
|
Args:
|
|
|
user_identifier: 用户标识符
|
|
|
status: 待办事项状态
|
|
|
|
|
|
Returns:
|
|
|
list: 待办事项列表
|
|
|
"""
|
|
|
return self.adapter.get_todos_by_status(user_identifier, status)
|
|
|
|
|
|
def get_todos_by_priority(self, user_identifier, priority):
|
|
|
"""根据优先级获取待办事项
|
|
|
|
|
|
Args:
|
|
|
user_identifier: 用户标识符
|
|
|
priority: 待办事项优先级
|
|
|
|
|
|
Returns:
|
|
|
list: 待办事项列表
|
|
|
"""
|
|
|
return self.adapter.get_todos_by_priority(user_identifier, priority)
|
|
|
|
|
|
def search_todos(self, user_identifier, keyword):
|
|
|
"""根据关键字搜索待办事项
|
|
|
|
|
|
Args:
|
|
|
user_identifier: 用户标识符
|
|
|
keyword: 搜索关键字
|
|
|
|
|
|
Returns:
|
|
|
list: 搜索结果列表
|
|
|
"""
|
|
|
return self.adapter.search_todos(user_identifier, keyword)
|
|
|
|
|
|
# 兼容性处理:如果旧代码直接导入TodoManager,提供相同的接口
|
|
|
# 这样可以确保旧代码不需要修改即可使用优化版本
|
|
|
__all__ = ['TodoManager'] |