Fix missing index kind information on ID.

This commit is contained in:
Asdine El Hrychy
2018-01-06 15:43:59 +01:00
parent fa32729dda
commit 68fc73b635
3 changed files with 23 additions and 4 deletions

View File

@@ -115,6 +115,7 @@ func extractField(value *reflect.Value, field *reflect.StructField, m *structCon
switch tag {
case "id":
f.IsID = true
f.Index = tagUniqueIdx
case tagUniqueIdx, tagIdx:
f.Index = tag
case tagInline:
@@ -163,6 +164,7 @@ func extractField(value *reflect.Value, field *reflect.StructField, m *structCon
if m.ID == nil && field.Name == "ID" {
if f == nil {
f = &fieldConfig{
Index: tagUniqueIdx,
Name: field.Name,
IsZero: isZero(value),
IsInteger: isInteger(value),

View File

@@ -45,7 +45,7 @@ func TestExtractUniqueTags(t *testing.T) {
require.False(t, infos.ID.IsZero)
require.Equal(t, "ClassicUnique", infos.Name)
require.Len(t, allByType(infos, "index"), 0)
require.Len(t, allByType(infos, "unique"), 4)
require.Len(t, allByType(infos, "unique"), 5)
}
func TestExtractIndexTags(t *testing.T) {
@@ -58,7 +58,7 @@ func TestExtractIndexTags(t *testing.T) {
require.False(t, infos.ID.IsZero)
require.Equal(t, "ClassicIndex", infos.Name)
require.Len(t, allByType(infos, "index"), 5)
require.Len(t, allByType(infos, "unique"), 0)
require.Len(t, allByType(infos, "unique"), 1)
}
func TestExtractInlineWithIndex(t *testing.T) {
@@ -70,7 +70,7 @@ func TestExtractInlineWithIndex(t *testing.T) {
require.NotNil(t, infos.ID)
require.Equal(t, "ClassicInline", infos.Name)
require.Len(t, allByType(infos, "index"), 3)
require.Len(t, allByType(infos, "unique"), 2)
require.Len(t, allByType(infos, "unique"), 3)
}
func TestExtractMultipleTags(t *testing.T) {
@@ -90,7 +90,7 @@ func TestExtractMultipleTags(t *testing.T) {
require.NotNil(t, infos.ID)
require.Equal(t, "User", infos.Name)
require.Len(t, allByType(infos, "index"), 2)
require.Len(t, allByType(infos, "unique"), 1)
require.Len(t, allByType(infos, "unique"), 2)
require.True(t, infos.Fields["Age"].Increment)
require.Equal(t, int64(1), infos.Fields["Age"].IncrementStart)

View File

@@ -685,3 +685,20 @@ func TestPrefix(t *testing.T) {
err = db.Prefix("Group", "group3", &users)
require.Equal(t, ErrNotFound, err)
}
func TestPrefixWithID(t *testing.T) {
db, cleanup := createDB(t)
defer cleanup()
type User struct {
ID string
}
require.NoError(t, db.Save(&User{ID: "1"}))
require.NoError(t, db.Save(&User{ID: "10"}))
var users []User
require.NoError(t, db.Prefix("ID", "1", &users))
require.Len(t, users, 2)
}