mirror of
https://github.com/asdine/storm.git
synced 2025-09-26 19:01:14 +08:00
Fix missing index kind information on ID.
This commit is contained in:
@@ -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),
|
||||
|
@@ -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)
|
||||
|
@@ -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)
|
||||
}
|
||||
|
Reference in New Issue
Block a user