119 lines
3.8 KiB
Go
119 lines
3.8 KiB
Go
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, gearTxt string) error {
|
|
err := s.db.SaveParsedData(sessionName, itemsJSON, heroesJSON, gearTxt)
|
|
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, string, error) {
|
|
itemsJSON, heroesJSON, gearTxt, err := s.db.GetLatestParsedData()
|
|
if err != nil {
|
|
s.logger.Error("从数据库获取最新解析数据失败", "error", err)
|
|
return "", "", "", fmt.Errorf("获取解析数据失败: %w", err)
|
|
}
|
|
|
|
s.logger.Info("最新解析数据获取成功")
|
|
return itemsJSON, heroesJSON, gearTxt, 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, string, error) {
|
|
itemsJSON, heroesJSON, gearTxt, err := s.db.GetParsedDataByID(id)
|
|
if err != nil {
|
|
s.logger.Error("从数据库获取解析数据失败", "error", err, "id", id)
|
|
return "", "", "", fmt.Errorf("获取解析数据失败: %w", err)
|
|
}
|
|
return itemsJSON, heroesJSON, gearTxt, 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
|
|
}
|