summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/mattermost/gorp/table.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/mattermost/gorp/table.go')
-rw-r--r--vendor/github.com/mattermost/gorp/table.go23
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
}