From bb4369582235f1493731d43f7a362857cc4949f1 Mon Sep 17 00:00:00 2001 From: Evan Hosinski Date: Thu, 15 May 2025 14:44:10 -0400 Subject: [PATCH] fixed db query and export --- cmd/db.go | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 65 insertions(+), 2 deletions(-) diff --git a/cmd/db.go b/cmd/db.go index 3c9abe2..0193d01 100644 --- a/cmd/db.go +++ b/cmd/db.go @@ -3,6 +3,7 @@ package cmd import ( "dehasher/internal/pretty" "dehasher/internal/sqlite" + "encoding/json" "fmt" "github.com/spf13/cobra" "go.uber.org/zap" @@ -151,7 +152,38 @@ func tableQuery(table Table) { if value == nil { rowStrings[i] = " " } else { - rowStrings[i] = fmt.Sprintf("%v", value) + // Check if the value is a slice or array + switch v := value.(type) { + case []string: + // Join string slices with commas, no brackets + rowStrings[i] = strings.Join(v, ", ") + case []interface{}: + // Convert interface slice to strings and join + strSlice := make([]string, len(v)) + for j, item := range v { + if item == nil { + strSlice[j] = "" + } else { + strSlice[j] = fmt.Sprintf("%v", item) + } + } + rowStrings[i] = strings.Join(strSlice, ", ") + case string: + // Handle JSON strings that might be arrays + if strings.HasPrefix(v, "[") && strings.HasSuffix(v, "]") { + // Try to unmarshal JSON array + var strArray []string + if err := json.Unmarshal([]byte(v), &strArray); err == nil { + rowStrings[i] = strings.Join(strArray, ", ") + } else { + rowStrings[i] = v + } + } else { + rowStrings[i] = v + } + default: + rowStrings[i] = fmt.Sprintf("%v", v) + } } } tableRows = append(tableRows, rowStrings) @@ -207,7 +239,38 @@ func rawDBQuery() { if value == nil { rowStrings[i] = " " } else { - rowStrings[i] = fmt.Sprintf("%v", value) + // Check if the value is a slice or array + switch v := value.(type) { + case []string: + // Join string slices with commas, no brackets + rowStrings[i] = strings.Join(v, ", ") + case []interface{}: + // Convert interface slice to strings and join + strSlice := make([]string, len(v)) + for j, item := range v { + if item == nil { + strSlice[j] = "" + } else { + strSlice[j] = fmt.Sprintf("%v", item) + } + } + rowStrings[i] = strings.Join(strSlice, ", ") + case string: + // Handle JSON strings that might be arrays + if strings.HasPrefix(v, "[") && strings.HasSuffix(v, "]") { + // Try to unmarshal JSON array + var strArray []string + if err := json.Unmarshal([]byte(v), &strArray); err == nil { + rowStrings[i] = strings.Join(strArray, ", ") + } else { + rowStrings[i] = v + } + } else { + rowStrings[i] = v + } + default: + rowStrings[i] = fmt.Sprintf("%v", v) + } } } tableRows = append(tableRows, rowStrings)