Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
张磊
/
FileStorageBeego
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
167ad203
authored
2013-11-08 22:19:01 +0800
by
slene
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
orm #276
1 parent
558738ad
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
35 additions
and
4 deletions
orm/db.go
orm/orm_test.go
orm/db.go
View file @
167ad20
...
...
@@ -705,8 +705,14 @@ func (d *dbBase) ReadBatch(q dbQuerier, qs *querySet, mi *modelInfo, cond *Condi
ind
.
Set
(
mind
)
}
else
{
if
cnt
==
0
{
// you can use a empty & caped container list
// orm will not replace it
if
ind
.
Len
()
!=
0
{
// if container is not empty
// create a new one
slice
=
reflect
.
New
(
ind
.
Type
())
.
Elem
()
}
}
if
isPtr
{
slice
=
reflect
.
Append
(
slice
,
mind
.
Addr
())
...
...
@@ -718,8 +724,16 @@ func (d *dbBase) ReadBatch(q dbQuerier, qs *querySet, mi *modelInfo, cond *Condi
cnt
++
}
if
one
==
false
&&
cnt
>
0
{
if
one
==
false
{
if
cnt
>
0
{
ind
.
Set
(
slice
)
}
else
{
// when a result is empty and container is nil
// to set a empty container
if
ind
.
IsNil
()
{
ind
.
Set
(
reflect
.
MakeSlice
(
ind
.
Type
(),
0
,
0
))
}
}
}
return
cnt
,
nil
...
...
@@ -1058,12 +1072,24 @@ func (d *dbBase) ReadValues(q dbQuerier, qs *querySet, mi *modelInfo, cond *Cond
)
typ
:=
0
switch
container
.
(
type
)
{
switch
v
:=
container
.
(
type
)
{
case
*
[]
Params
:
d
:=
*
v
if
len
(
d
)
==
0
{
maps
=
d
}
typ
=
1
case
*
[]
ParamsList
:
d
:=
*
v
if
len
(
d
)
==
0
{
lists
=
d
}
typ
=
2
case
*
ParamsList
:
d
:=
*
v
if
len
(
d
)
==
0
{
list
=
d
}
typ
=
3
default
:
panic
(
fmt
.
Errorf
(
"unsupport read values type `%T`"
,
container
))
...
...
orm/orm_test.go
View file @
167ad20
...
...
@@ -696,8 +696,13 @@ func TestAll(t *testing.T) {
qs
=
dORM
.
QueryTable
(
"user"
)
num
,
err
=
qs
.
Filter
(
"user_name"
,
"nothing"
)
.
All
(
&
users
)
throwFail
(
t
,
err
)
throwFail
(
t
,
AssertIs
(
num
,
0
))
throwFailNow
(
t
,
err
)
throwFailNow
(
t
,
AssertIs
(
num
,
0
))
var
users3
[]
*
User
qs
=
dORM
.
QueryTable
(
"user"
)
num
,
err
=
qs
.
Filter
(
"user_name"
,
"nothing"
)
.
All
(
&
users3
)
throwFailNow
(
t
,
AssertIs
(
users3
==
nil
,
false
))
}
func
TestOne
(
t
*
testing
.
T
)
{
...
...
Write
Preview
Styling with
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment