From 99fffe639add0da94789f27985174e793af63ae6 Mon Sep 17 00:00:00 2001 From: Nathan <148575555+nathan-artie@users.noreply.github.com> Date: Tue, 18 Jun 2024 16:27:36 -0700 Subject: [PATCH] Add `ColumnNames` function --- lib/typing/columns/columns.go | 27 ++++++++++----------------- lib/typing/columns/columns_test.go | 11 +++++++++++ 2 files changed, 21 insertions(+), 17 deletions(-) diff --git a/lib/typing/columns/columns.go b/lib/typing/columns/columns.go index 0378210f0..dddc3e4eb 100644 --- a/lib/typing/columns/columns.go +++ b/lib/typing/columns/columns.go @@ -181,23 +181,7 @@ func (c *Columns) GetColumn(name string) (Column, bool) { // This is used mostly for the SQL MERGE queries. // TODO: Replace all uses of [GetColumnsToUpdate] with [ValidColumns] func (c *Columns) GetColumnsToUpdate() []string { - if c == nil { - return []string{} - } - - c.RLock() - defer c.RUnlock() - - var cols []string - for _, col := range c.columns { - if col.KindDetails == typing.Invalid { - continue - } - - cols = append(cols, col.Name()) - } - - return cols + return ColumnNames(c.ValidColumns()) } // ValidColumns will filter all the `Invalid` columns so that we do not update them. @@ -266,3 +250,12 @@ func RemoveDeleteColumnMarker(cols []Column) ([]Column, bool) { cols = slices.DeleteFunc(slices.Clone(cols), func(col Column) bool { return col.Name() == constants.DeleteColumnMarker }) return cols, len(cols) != origLength } + +// ColumnNames takes a slice of [Column] and returns the names as a slice of strings. +func ColumnNames(cols []Column) []string { + result := make([]string, len(cols)) + for i, col := range cols { + result[i] = col.Name() + } + return result +} diff --git a/lib/typing/columns/columns_test.go b/lib/typing/columns/columns_test.go index c2a1806c8..ceca8c9d8 100644 --- a/lib/typing/columns/columns_test.go +++ b/lib/typing/columns/columns_test.go @@ -374,3 +374,14 @@ func TestRemoveDeleteColumnMarker(t *testing.T) { assert.Equal(t, []Column{col1, col2, col3}, result) } } + +func TestColumnNames(t *testing.T) { + assert.Equal(t, []string{}, ColumnNames(nil)) + + cols := []Column{ + NewColumn("a", typing.Invalid), + NewColumn("b", typing.Invalid), + NewColumn("c", typing.Invalid), + } + assert.Equal(t, []string{"a", "b", "c"}, ColumnNames(cols)) +}