summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <pbuetow@mimecast.com>2021-12-23 15:46:22 +0000
committerPaul Buetow <pbuetow@mimecast.com>2021-12-23 15:46:22 +0000
commitcc6f19f69d0fb34af96e17147b2030c352d46845 (patch)
tree4bbc1a03ad3f2c70e4ff3f85d06fc49c82848ffa
parent91a1067eb024eae19155c2c242e1a70541096b42 (diff)
refactor
-rw-r--r--internal/mapr/groupsetresult.go99
1 files changed, 57 insertions, 42 deletions
diff --git a/internal/mapr/groupsetresult.go b/internal/mapr/groupsetresult.go
index 0e8e6e3..6d0ac1f 100644
--- a/internal/mapr/groupsetresult.go
+++ b/internal/mapr/groupsetresult.go
@@ -28,7 +28,7 @@ func (g *GroupSet) Result(query *Query, rowsLimit int) (string, int, error) {
defer pool.RecycleBuilderBuffer(sb)
g.resultWriteFormattedHeader(query, sb, lastColumn, rowsLimit, columnWidths)
- g.resultWriteFormattedHeaderSeparator(query, sb, lastColumn, columnWidths)
+ g.resultWriteFormattedHeaderRowSeparator(query, sb, lastColumn, columnWidths)
g.resultWriteFormattedData(query, sb, lastColumn, rowsLimit, columnWidths, rows)
return sb.String(), len(rows), nil
@@ -41,44 +41,54 @@ func (g *GroupSet) resultWriteFormattedHeader(query *Query, sb *strings.Builder,
for i, sc := range query.Select {
format := fmt.Sprintf(" %%%ds ", columnWidths[i])
str := fmt.Sprintf(format, sc.FieldStorage)
- if config.Client.TermColorsEnable {
- attrs := []color.Attribute{config.Client.TermColors.MaprTable.HeaderAttr}
- if sc.FieldStorage == query.OrderBy {
- attrs = append(attrs, config.Client.TermColors.MaprTable.HeaderSortKeyAttr)
- }
-
- for _, groupBy := range query.GroupBy {
- if sc.FieldStorage == groupBy {
- attrs = append(attrs, config.Client.TermColors.MaprTable.HeaderGroupKeyAttr)
- break
- }
- }
-
- color.PaintWithAttrs(sb, str,
- config.Client.TermColors.MaprTable.HeaderFg,
- config.Client.TermColors.MaprTable.HeaderBg,
- attrs)
- } else {
- sb.WriteString(str)
- }
+ g.resultWriteFormattedHeaderEntry(query, sb, sc, str)
if i == lastColumn {
continue
}
- if config.Client.TermColorsEnable {
- color.PaintWithAttr(sb, protocol.FieldDelimiter,
- config.Client.TermColors.MaprTable.HeaderDelimiterFg,
- config.Client.TermColors.MaprTable.HeaderDelimiterBg,
- config.Client.TermColors.MaprTable.HeaderDelimiterAttr)
- } else {
- sb.WriteString(protocol.FieldDelimiter)
- }
+ g.resultWriteFormattedHeaderEntrySeparator(query, sb)
+
}
sb.WriteString("\n")
}
+func (g *GroupSet) resultWriteFormattedHeaderEntry(query *Query, sb *strings.Builder,
+ sc selectCondition, str string) {
+
+ if config.Client.TermColorsEnable {
+ attrs := []color.Attribute{config.Client.TermColors.MaprTable.HeaderAttr}
+ if sc.FieldStorage == query.OrderBy {
+ attrs = append(attrs, config.Client.TermColors.MaprTable.HeaderSortKeyAttr)
+ }
+ for _, groupBy := range query.GroupBy {
+ if sc.FieldStorage == groupBy {
+ attrs = append(attrs, config.Client.TermColors.MaprTable.HeaderGroupKeyAttr)
+ break
+ }
+ }
+ color.PaintWithAttrs(sb, str,
+ config.Client.TermColors.MaprTable.HeaderFg,
+ config.Client.TermColors.MaprTable.HeaderBg,
+ attrs)
+
+ } else {
+ sb.WriteString(str)
+ }
+}
+
+func (g *GroupSet) resultWriteFormattedHeaderEntrySeparator(query *Query, sb *strings.Builder) {
+ if config.Client.TermColorsEnable {
+ color.PaintWithAttr(sb, protocol.FieldDelimiter,
+ config.Client.TermColors.MaprTable.HeaderDelimiterFg,
+ config.Client.TermColors.MaprTable.HeaderDelimiterBg,
+ config.Client.TermColors.MaprTable.HeaderDelimiterAttr)
+ } else {
+ sb.WriteString(protocol.FieldDelimiter)
+ }
+}
+
// This writes a nicely formatted line separating the header and the data.
-func (g *GroupSet) resultWriteFormattedHeaderSeparator(query *Query, sb *strings.Builder,
+func (g *GroupSet) resultWriteFormattedHeaderRowSeparator(query *Query, sb *strings.Builder,
lastColumn int, columnWidths []int) {
for i := 0; i < len(query.Select); i++ {
@@ -115,20 +125,11 @@ func (g *GroupSet) resultWriteFormattedData(query *Query, sb *strings.Builder,
break
}
for j, value := range r.values {
- format := fmt.Sprintf(" %%%ds ", columnWidths[j])
- str := fmt.Sprintf(format, value)
- if config.Client.TermColorsEnable {
- color.PaintWithAttr(sb, str,
- config.Client.TermColors.MaprTable.DataFg,
- config.Client.TermColors.MaprTable.DataBg,
- config.Client.TermColors.MaprTable.DataAttr)
- } else {
- sb.WriteString(str)
- }
-
+ g.resultWriteFormattedDataEntry(query, sb, columnWidths, j, value)
if j == lastColumn {
continue
}
+ // Now, write the data entry separator.
if config.Client.TermColorsEnable {
color.PaintWithAttr(sb, protocol.FieldDelimiter,
config.Client.TermColors.MaprTable.DelimiterFg,
@@ -142,6 +143,21 @@ func (g *GroupSet) resultWriteFormattedData(query *Query, sb *strings.Builder,
}
}
+func (g *GroupSet) resultWriteFormattedDataEntry(query *Query, sb *strings.Builder,
+ columnWidths []int, j int, value string) {
+
+ format := fmt.Sprintf(" %%%ds ", columnWidths[j])
+ str := fmt.Sprintf(format, value)
+ if config.Client.TermColorsEnable {
+ color.PaintWithAttr(sb, str,
+ config.Client.TermColors.MaprTable.DataFg,
+ config.Client.TermColors.MaprTable.DataBg,
+ config.Client.TermColors.MaprTable.DataAttr)
+ } else {
+ sb.WriteString(str)
+ }
+}
+
func (*GroupSet) writeQueryFile(query *Query) error {
queryFile := fmt.Sprintf("%s.query", query.Outfile)
tmpQueryFile := fmt.Sprintf("%s.tmp", queryFile)
@@ -166,7 +182,6 @@ func (g *GroupSet) WriteResult(query *Query) error {
if err := g.writeQueryFile(query); err != nil {
return err
}
-
rows, _, err := g.result(query, false)
if err != nil {
return err