Skip to content

Commit ae0364a

Browse files
authored
add more test for join find (go-xorm#922)
1 parent a491afa commit ae0364a

File tree

3 files changed

+17
-4
lines changed

3 files changed

+17
-4
lines changed

error.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,18 @@ var (
2626
ErrNotImplemented = errors.New("Not implemented")
2727
// ErrConditionType condition type unsupported
2828
ErrConditionType = errors.New("Unsupported condition type")
29-
// ErrFieldIsNotExist columns does not exist
30-
ErrFieldIsNotExist = errors.New("Field does not exist")
3129
)
3230

31+
// ErrFieldIsNotExist columns does not exist
32+
type ErrFieldIsNotExist struct {
33+
FieldName string
34+
TableName string
35+
}
36+
37+
func (e ErrFieldIsNotExist) Error() string {
38+
return fmt.Sprintf("field %s is not valid on table %s", e.FieldName, e.TableName)
39+
}
40+
3341
// ErrFieldIsNotValid is not valid
3442
type ErrFieldIsNotValid struct {
3543
FieldName string

session.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ func (session *Session) doPrepare(db *core.DB, sqlStr string) (stmt *core.Stmt,
281281
func (session *Session) getField(dataStruct *reflect.Value, key string, table *core.Table, idx int) (*reflect.Value, error) {
282282
var col *core.Column
283283
if col = table.GetColumnIdx(key, idx); col == nil {
284-
return nil, ErrFieldIsNotExist
284+
return nil, ErrFieldIsNotExist{key, table.Name}
285285
}
286286

287287
fieldValue, err := col.ValueOfV(dataStruct)

session_find_test.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -770,7 +770,7 @@ func TestFindCacheLimit(t *testing.T) {
770770

771771
func TestFindJoin(t *testing.T) {
772772
type SceneItem struct {
773-
Type int
773+
Type int
774774
DeviceId int64
775775
}
776776

@@ -786,4 +786,9 @@ func TestFindJoin(t *testing.T) {
786786
err := testEngine.Join("LEFT OUTER", "device_user_privrels", "device_user_privrels.device_id=scene_item.device_id").
787787
Where("scene_item.type=?", 3).Or("device_user_privrels.user_id=?", 339).Find(&scenes)
788788
assert.NoError(t, err)
789+
790+
scenes = make([]SceneItem, 0)
791+
err = testEngine.Join("LEFT OUTER", new(DeviceUserPrivrels), "device_user_privrels.device_id=scene_item.device_id").
792+
Where("scene_item.type=?", 3).Or("device_user_privrels.user_id=?", 339).Find(&scenes)
793+
assert.NoError(t, err)
789794
}

0 commit comments

Comments
 (0)