From 42dee40a4e7f14d19da3f4c6428ba7a1b31be5f4 Mon Sep 17 00:00:00 2001 From: piyongcai Date: Mon, 16 May 2022 10:22:04 +0800 Subject: [PATCH] =?UTF-8?q?in=20schema/field.go=201.Add=20UniqueIndex=20fi?= =?UTF-8?q?eld=20to=20Field's=20struct=E3=80=82=202.Resolve=20UniqueIndex?= =?UTF-8?q?=20value=20from=20StructField.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit in migrator/migrator.go -> MigrateColumn 1.check unique, Check for the uniqueIndex and unique simultaneously --- migrator/migrator.go | 2 +- schema/field.go | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/migrator/migrator.go b/migrator/migrator.go index d4989410..130c2a79 100644 --- a/migrator/migrator.go +++ b/migrator/migrator.go @@ -440,7 +440,7 @@ func (m Migrator) MigrateColumn(value interface{}, field *schema.Field, columnTy } // check unique - if unique, ok := columnType.Unique(); ok && unique != field.Unique { + if unique, ok := columnType.Unique(); ok && !(unique == field.Unique || unique == field.UniqueIndex) { // not primary key if !field.PrimaryKey { alterColumn = true diff --git a/schema/field.go b/schema/field.go index d6df6596..4d25c56a 100644 --- a/schema/field.go +++ b/schema/field.go @@ -69,6 +69,7 @@ type Field struct { DefaultValueInterface interface{} NotNull bool Unique bool + UniqueIndex bool Comment string Size int Precision int @@ -114,6 +115,7 @@ func (schema *Schema) ParseField(fieldStruct reflect.StructField) *Field { HasDefaultValue: utils.CheckTruth(tagSetting["AUTOINCREMENT"]), NotNull: utils.CheckTruth(tagSetting["NOT NULL"], tagSetting["NOTNULL"]), Unique: utils.CheckTruth(tagSetting["UNIQUE"]), + UniqueIndex: utils.CheckTruth(tagSetting["UNIQUEINDEX"]), Comment: tagSetting["COMMENT"], AutoIncrementIncrement: 1, }