You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

133 lines
4.1 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import os
import json
import uuid
from datetime import datetime
# 导入优化后的存储系统适配器
from new_structure.data.storage.schedule_data_adapter import ScheduleDataAdapter
"""
优化的日程数据管理模块
该模块提供了与旧版ScheduleManager兼容的API
同时利用新版存储系统的性能优化。
"""
class ScheduleManager:
"""优化的日程数据管理类
提供与旧版ScheduleManager相同的API
但使用新版存储系统和缓存机制提高性能。
"""
def __init__(self, auth=None, logger=None):
"""初始化日程管理类
Args:
auth: 用户认证对象,用于验证用户身份
logger: 日志对象,用于记录操作日志
"""
self.auth = auth
self.logger = logger
# 初始化适配器
self._adapter = ScheduleDataAdapter(logger=logger)
def _get_schedule_file(self, user_identifier):
"""(兼容方法) 获取用户日程文件路径
Args:
user_identifier: 用户标识符
Returns:
str: 模拟的文件路径
"""
# 这个方法在新版存储系统中不再需要实际文件路径,
# 但为了保持API兼容返回一个模拟路径
username = user_identifier
if isinstance(user_identifier, str) and "_" in user_identifier:
username = user_identifier.split("_")[0]
return f"data/schedule_{username}.json"
def load_schedules(self, user_identifier):
"""加载用户日程数据
Args:
user_identifier: 用户标识符
Returns:
list: 日程数据列表
"""
return self._adapter.load_schedules(user_identifier)
def save_schedules(self, user_identifier, schedules):
"""保存用户日程数据
Args:
user_identifier: 用户标识符
schedules: 日程数据列表
Returns:
bool: 保存成功返回True失败返回False
"""
return self._adapter.save_schedules(user_identifier, schedules)
def create_schedule(self, user_identifier, schedule_data):
"""创建新日程
Args:
user_identifier: 用户标识符
schedule_data: 日程数据
Returns:
tuple: (bool, dict) - (创建成功标志, 创建的日程数据)
"""
return self._adapter.create_schedule(user_identifier, schedule_data)
def update_schedule(self, user_identifier, schedule_id, schedule_data):
"""更新日程信息
Args:
user_identifier: 用户标识符
schedule_id: 要更新的日程ID
schedule_data: 更新后的日程数据
Returns:
tuple: (bool, dict) - (更新成功标志, 更新后的日程数据)
"""
return self._adapter.update_schedule(user_identifier, schedule_id, schedule_data)
def delete_schedule(self, user_identifier, schedule_id):
"""删除指定ID的日程
Args:
user_identifier: 用户标识符
schedule_id: 要删除的日程ID
Returns:
bool: 删除成功返回True失败返回False
"""
return self._adapter.delete_schedule(user_identifier, schedule_id)
def get_schedules_by_date(self, user_identifier, date_str):
"""获取指定日期的所有日程
Args:
user_identifier: 用户标识符
date_str: 日期字符串
Returns:
list: 指定日期的日程列表
"""
return self._adapter.get_schedules_by_date(user_identifier, date_str)
def search_schedules(self, user_identifier, keyword):
"""根据关键字搜索日程
Args:
user_identifier: 用户标识符
keyword: 搜索关键字
Returns:
list: 搜索结果列表
"""
return self._adapter.search_schedules(user_identifier, keyword)