diff options
Diffstat (limited to 'vendor/github.com/mattermost/gorp/table.go')
-rw-r--r-- | vendor/github.com/mattermost/gorp/table.go | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/vendor/github.com/mattermost/gorp/table.go b/vendor/github.com/mattermost/gorp/table.go index 5c513909a..138f761ec 100644 --- a/vendor/github.com/mattermost/gorp/table.go +++ b/vendor/github.com/mattermost/gorp/table.go @@ -87,12 +87,29 @@ func (t *TableMap) SetUniqueTogether(fieldNames ...string) *TableMap { "gorp: SetUniqueTogether: must provide at least two fieldNames to set uniqueness constraint.")) } - columns := make([]string, 0) + columns := make([]string, 0, len(fieldNames)) for _, name := range fieldNames { columns = append(columns, name) } - t.uniqueTogether = append(t.uniqueTogether, columns) - t.ResetSql() + + alreadyExists := false +checkDuplicates: + for _, existingColumns := range t.uniqueTogether { + if len(existingColumns) == len(columns) { + for i := range columns { + if existingColumns[i] != columns[i] { + continue checkDuplicates + } + } + + alreadyExists = true + break checkDuplicates + } + } + if !alreadyExists { + t.uniqueTogether = append(t.uniqueTogether, columns) + t.ResetSql() + } return t } |