Skip to content

Commit 50bb3e1

Browse files
authored
fix: Fix cache bug and query nil error (#56)
1 parent 9f96444 commit 50bb3e1

File tree

2 files changed

+14
-5
lines changed

2 files changed

+14
-5
lines changed

gplus/dao.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -266,10 +266,10 @@ func paginate[T any](p *Page[T]) func(db *gorm.DB) *gorm.DB {
266266

267267
func buildCondition[T any](q *QueryCond[T], opts ...OptionFunc) *gorm.DB {
268268
db := getDb(opts...)
269-
// 这里清空参数,避免用户重复使用一个query条件
270-
q.queryArgs = make([]any, 0)
271269
resultDb := db.Model(new(T))
272270
if q != nil {
271+
// 这里清空参数,避免用户重复使用一个query条件
272+
q.queryArgs = make([]any, 0)
273273

274274
if len(q.distinctColumns) > 0 {
275275
resultDb.Distinct(q.distinctColumns)

gplus/query.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,10 @@ func NewQuery[T any]() (*QueryCond[T], *T) {
4949

5050
modelTypeStr := reflect.TypeOf((*T)(nil)).Elem().String()
5151
if model, ok := modelInstanceCache.Load(modelTypeStr); ok {
52-
return q, model.(*T)
52+
m, isReal := model.(*T)
53+
if isReal {
54+
return q, m
55+
}
5356
}
5457
m := new(T)
5558
Cache(m)
@@ -63,12 +66,18 @@ func NewQueryModel[T any, R any]() (*QueryCond[T], *T, *R) {
6366
var r *R
6467
entityTypeStr := reflect.TypeOf((*T)(nil)).Elem().String()
6568
if model, ok := modelInstanceCache.Load(entityTypeStr); ok {
66-
t = model.(*T)
69+
m, isReal := model.(*T)
70+
if isReal {
71+
t = m
72+
}
6773
}
6874

6975
modelTypeStr := reflect.TypeOf((*R)(nil)).Elem().String()
7076
if model, ok := modelInstanceCache.Load(modelTypeStr); ok {
71-
r = model.(*R)
77+
m, isReal := model.(*R)
78+
if isReal {
79+
r = m
80+
}
7281
}
7382

7483
if t == nil {

0 commit comments

Comments
 (0)