mirror of
https://github.com/asdine/storm.git
synced 2025-09-27 03:06:16 +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 {
|
switch tag {
|
||||||
case "id":
|
case "id":
|
||||||
f.IsID = true
|
f.IsID = true
|
||||||
|
f.Index = tagUniqueIdx
|
||||||
case tagUniqueIdx, tagIdx:
|
case tagUniqueIdx, tagIdx:
|
||||||
f.Index = tag
|
f.Index = tag
|
||||||
case tagInline:
|
case tagInline:
|
||||||
@@ -163,6 +164,7 @@ func extractField(value *reflect.Value, field *reflect.StructField, m *structCon
|
|||||||
if m.ID == nil && field.Name == "ID" {
|
if m.ID == nil && field.Name == "ID" {
|
||||||
if f == nil {
|
if f == nil {
|
||||||
f = &fieldConfig{
|
f = &fieldConfig{
|
||||||
|
Index: tagUniqueIdx,
|
||||||
Name: field.Name,
|
Name: field.Name,
|
||||||
IsZero: isZero(value),
|
IsZero: isZero(value),
|
||||||
IsInteger: isInteger(value),
|
IsInteger: isInteger(value),
|
||||||
|
@@ -45,7 +45,7 @@ func TestExtractUniqueTags(t *testing.T) {
|
|||||||
require.False(t, infos.ID.IsZero)
|
require.False(t, infos.ID.IsZero)
|
||||||
require.Equal(t, "ClassicUnique", infos.Name)
|
require.Equal(t, "ClassicUnique", infos.Name)
|
||||||
require.Len(t, allByType(infos, "index"), 0)
|
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) {
|
func TestExtractIndexTags(t *testing.T) {
|
||||||
@@ -58,7 +58,7 @@ func TestExtractIndexTags(t *testing.T) {
|
|||||||
require.False(t, infos.ID.IsZero)
|
require.False(t, infos.ID.IsZero)
|
||||||
require.Equal(t, "ClassicIndex", infos.Name)
|
require.Equal(t, "ClassicIndex", infos.Name)
|
||||||
require.Len(t, allByType(infos, "index"), 5)
|
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) {
|
func TestExtractInlineWithIndex(t *testing.T) {
|
||||||
@@ -70,7 +70,7 @@ func TestExtractInlineWithIndex(t *testing.T) {
|
|||||||
require.NotNil(t, infos.ID)
|
require.NotNil(t, infos.ID)
|
||||||
require.Equal(t, "ClassicInline", infos.Name)
|
require.Equal(t, "ClassicInline", infos.Name)
|
||||||
require.Len(t, allByType(infos, "index"), 3)
|
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) {
|
func TestExtractMultipleTags(t *testing.T) {
|
||||||
@@ -90,7 +90,7 @@ func TestExtractMultipleTags(t *testing.T) {
|
|||||||
require.NotNil(t, infos.ID)
|
require.NotNil(t, infos.ID)
|
||||||
require.Equal(t, "User", infos.Name)
|
require.Equal(t, "User", infos.Name)
|
||||||
require.Len(t, allByType(infos, "index"), 2)
|
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.True(t, infos.Fields["Age"].Increment)
|
||||||
require.Equal(t, int64(1), infos.Fields["Age"].IncrementStart)
|
require.Equal(t, int64(1), infos.Fields["Age"].IncrementStart)
|
||||||
|
@@ -685,3 +685,20 @@ func TestPrefix(t *testing.T) {
|
|||||||
err = db.Prefix("Group", "group3", &users)
|
err = db.Prefix("Group", "group3", &users)
|
||||||
require.Equal(t, ErrNotFound, err)
|
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