feat(database): add gearTxt field to parsed results and update related functions

This commit is contained in:
kever
2026-02-17 22:42:59 +08:00
parent 5dba3d9930
commit 8c4c4e77d7
13 changed files with 658 additions and 226 deletions

View File

@@ -365,7 +365,7 @@ func (a *App) StopAndParseCapture() (*model.ParsedResult, error) {
}
sessionName := fmt.Sprintf("capture_%d", time.Now().Unix())
if err := a.databaseService.SaveParsedDataToDatabase(sessionName, itemsJSON, heroesJSON); err != nil {
if err := a.databaseService.SaveParsedDataToDatabase(sessionName, itemsJSON, heroesJSON, result.GearTxt); err != nil {
a.logger.Error("save parsed data failed", "error", err)
} else {
a.logger.Info("parsed data saved", "session_name", sessionName)
@@ -376,11 +376,42 @@ func (a *App) StopAndParseCapture() (*model.ParsedResult, error) {
}
// SaveParsedDataToDatabase saves parsed data.
func (a *App) SaveParsedDataToDatabase(sessionName string, itemsJSON, heroesJSON string) error {
func (a *App) SaveParsedDataToDatabase(sessionName string, itemsJSON, heroesJSON, gearTxt string) error {
if a.databaseService == nil {
return fmt.Errorf("database service not initialized")
}
return a.databaseService.SaveParsedDataToDatabase(sessionName, itemsJSON, heroesJSON)
return a.databaseService.SaveParsedDataToDatabase(sessionName, itemsJSON, heroesJSON, gearTxt)
}
// ParseAndSaveRawJson parses raw gear json and saves to database.
func (a *App) ParseAndSaveRawJson(sessionName string, rawJson string) (*model.ParsedResult, error) {
if a.databaseService == nil {
return nil, fmt.Errorf("database service not initialized")
}
if sessionName == "" {
return nil, fmt.Errorf("session name cannot be empty")
}
result, err := a.parserService.ReadRawJsonFile(rawJson)
if err != nil {
return nil, err
}
itemsJSON := "[]"
if result.Items != nil {
if jsonData, err := json.Marshal(result.Items); err == nil {
itemsJSON = string(jsonData)
}
}
heroesJSON := "[]"
if result.Heroes != nil {
if jsonData, err := json.Marshal(result.Heroes); err == nil {
heroesJSON = string(jsonData)
}
}
if err := a.databaseService.SaveParsedDataToDatabase(sessionName, itemsJSON, heroesJSON, result.GearTxt); err != nil {
a.logger.Error("save parsed data failed", "error", err, "session_name", sessionName)
}
return result, nil
}
// GetLatestParsedDataFromDatabase returns latest parsed data from database.
@@ -389,7 +420,7 @@ func (a *App) GetLatestParsedDataFromDatabase() (*model.ParsedResult, error) {
return nil, fmt.Errorf("database service not initialized")
}
itemsJSON, heroesJSON, err := a.databaseService.GetLatestParsedDataFromDatabase()
itemsJSON, heroesJSON, gearTxt, err := a.databaseService.GetLatestParsedDataFromDatabase()
if err != nil {
return nil, err
}
@@ -412,6 +443,7 @@ func (a *App) GetLatestParsedDataFromDatabase() (*model.ParsedResult, error) {
return &model.ParsedResult{
Items: items,
Heroes: heroes,
GearTxt: gearTxt,
}, nil
}
@@ -428,7 +460,7 @@ func (a *App) GetParsedDataByID(id int64) (*model.ParsedResult, error) {
if a.databaseService == nil {
return nil, fmt.Errorf("database service not initialized")
}
itemsJSON, heroesJSON, err := a.databaseService.GetParsedDataByID(id)
itemsJSON, heroesJSON, gearTxt, err := a.databaseService.GetParsedDataByID(id)
if err != nil {
return nil, err
}
@@ -450,6 +482,7 @@ func (a *App) GetParsedDataByID(id int64) (*model.ParsedResult, error) {
return &model.ParsedResult{
Items: items,
Heroes: heroes,
GearTxt: gearTxt,
}, nil
}