feat(database): 实现数据库功能并优化数据导出
- 新增数据库相关 API 和服务 - 实现数据导出功能,支持导出到 JSON 文件 - 优化数据导入流程,增加数据校验 - 新增数据库页面,展示解析数据和统计信息 - 更新捕获页面,支持导入数据到数据库
This commit is contained in:
82
internal/service/database_service.go
Normal file
82
internal/service/database_service.go
Normal file
@@ -0,0 +1,82 @@
|
||||
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
|
||||
}
|
||||
|
||||
// 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
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user