diff --git a/coderd/database/dbgen/generator.go b/coderd/database/dbgen/dbgen.go similarity index 96% rename from coderd/database/dbgen/generator.go rename to coderd/database/dbgen/dbgen.go index c21a795290..604873fa2a 100644 --- a/coderd/database/dbgen/generator.go +++ b/coderd/database/dbgen/dbgen.go @@ -525,3 +525,40 @@ func must[V any](v V, err error) V { } return v } + +func takeFirstIP(values ...net.IPNet) net.IPNet { + return takeFirstF(values, func(v net.IPNet) bool { + return len(v.IP) != 0 && len(v.Mask) != 0 + }) +} + +// takeFirstSlice implements takeFirst for []any. +// []any is not a comparable type. +func takeFirstSlice[T any](values ...[]T) []T { + return takeFirstF(values, func(v []T) bool { + return len(v) != 0 + }) +} + +// takeFirstF takes the first value that returns true +func takeFirstF[Value any](values []Value, take func(v Value) bool) Value { + for _, v := range values { + if take(v) { + return v + } + } + // If all empty, return the last element + if len(values) > 0 { + return values[len(values)-1] + } + var empty Value + return empty +} + +// takeFirst will take the first non-empty value. +func takeFirst[Value comparable](values ...Value) Value { + var empty Value + return takeFirstF(values, func(v Value) bool { + return v != empty + }) +} diff --git a/coderd/database/dbgen/generator_test.go b/coderd/database/dbgen/dbgen_test.go similarity index 100% rename from coderd/database/dbgen/generator_test.go rename to coderd/database/dbgen/dbgen_test.go diff --git a/coderd/database/dbgen/take.go b/coderd/database/dbgen/take.go deleted file mode 100644 index 6792e5bb83..0000000000 --- a/coderd/database/dbgen/take.go +++ /dev/null @@ -1,40 +0,0 @@ -package dbgen - -import "net" - -func takeFirstIP(values ...net.IPNet) net.IPNet { - return takeFirstF(values, func(v net.IPNet) bool { - return len(v.IP) != 0 && len(v.Mask) != 0 - }) -} - -// takeFirstSlice implements takeFirst for []any. -// []any is not a comparable type. -func takeFirstSlice[T any](values ...[]T) []T { - return takeFirstF(values, func(v []T) bool { - return len(v) != 0 - }) -} - -// takeFirstF takes the first value that returns true -func takeFirstF[Value any](values []Value, take func(v Value) bool) Value { - for _, v := range values { - if take(v) { - return v - } - } - // If all empty, return the last element - if len(values) > 0 { - return values[len(values)-1] - } - var empty Value - return empty -} - -// takeFirst will take the first non-empty value. -func takeFirst[Value comparable](values ...Value) Value { - var empty Value - return takeFirstF(values, func(v Value) bool { - return v != empty - }) -}