package service import ( "fmt" "equipment-analyzer/internal/model" "equipment-analyzer/internal/utils" ) // DatabaseService 数据库服务 type DatabaseService struct { db *model.Database logger *utils.Logger } // NewDatabaseService 创建数据库服务 func NewDatabaseService(db *model.Database, logger *utils.Logger) *DatabaseService { return &DatabaseService{ db: db, logger: logger, } } // SaveParsedDataToDatabase 保存解析后的数据到数据库 func (s *DatabaseService) SaveParsedDataToDatabase(sessionName string, itemsJSON, heroesJSON string) error { err := s.db.SaveParsedData(sessionName, itemsJSON, heroesJSON) if err != nil { s.logger.Error("保存解析数据到数据库失败", "error", err, "session_name", sessionName) return fmt.Errorf("保存解析数据失败: %w", err) } s.logger.Info("解析数据保存成功", "session_name", sessionName) return nil } // GetLatestParsedDataFromDatabase 从数据库获取最新的解析数据 func (s *DatabaseService) GetLatestParsedDataFromDatabase() (string, string, error) { itemsJSON, heroesJSON, err := s.db.GetLatestParsedData() if err != nil { s.logger.Error("从数据库获取最新解析数据失败", "error", err) return "", "", fmt.Errorf("获取解析数据失败: %w", err) } s.logger.Info("最新解析数据获取成功") return itemsJSON, heroesJSON, nil } // GetParsedSessions 从数据库获取所有解析会话 func (s *DatabaseService) GetParsedSessions() ([]model.ParsedSession, error) { sessions, err := s.db.GetParsedSessions() if err != nil { s.logger.Error("从数据库获取解析会话失败", "error", err) return nil, fmt.Errorf("获取解析会话失败: %w", err) } return sessions, nil } // GetParsedDataByID 从数据库获取指定会话数据 func (s *DatabaseService) GetParsedDataByID(id int64) (string, string, error) { itemsJSON, heroesJSON, err := s.db.GetParsedDataByID(id) if err != nil { s.logger.Error("从数据库获取解析数据失败", "error", err, "id", id) return "", "", fmt.Errorf("获取解析数据失败: %w", err) } return itemsJSON, heroesJSON, nil } // UpdateParsedSessionName 更新解析会话名称 func (s *DatabaseService) UpdateParsedSessionName(id int64, name string) error { if err := s.db.UpdateParsedSessionName(id, name); err != nil { s.logger.Error("更新解析会话名称失败", "error", err, "id", id) return fmt.Errorf("更新解析会话名称失败: %w", err) } return nil } // DeleteParsedSession 删除解析会话 func (s *DatabaseService) DeleteParsedSession(id int64) error { if err := s.db.DeleteParsedSession(id); err != nil { s.logger.Error("删除解析会话失败", "error", err, "id", id) return fmt.Errorf("删除解析会话失败: %w", err) } return nil } // SaveAppSetting 保存应用设置 func (s *DatabaseService) SaveAppSetting(key, value string) error { err := s.db.SaveSetting(key, value) if err != nil { s.logger.Error("保存应用设置失败", "error", err, "key", key) return fmt.Errorf("保存设置失败: %w", err) } s.logger.Info("应用设置保存成功", "key", key) return nil } // GetAppSetting 获取应用设置 func (s *DatabaseService) GetAppSetting(key string) (string, error) { value, err := s.db.GetSetting(key) if err != nil { s.logger.Error("获取应用设置失败", "error", err, "key", key) return "", fmt.Errorf("获取设置失败: %w", err) } return value, nil } // GetAllAppSettings 获取所有应用设置 func (s *DatabaseService) GetAllAppSettings() (map[string]string, error) { settings, err := s.db.GetAllSettings() if err != nil { s.logger.Error("获取所有应用设置失败", "error", err) return nil, fmt.Errorf("获取设置失败: %w", err) } return settings, nil }