func (s *Searcher) callScopes(context *qor.Context) *qor.Context { db := context.GetDB() // call default scopes for _, scope := range s.Resource.scopes { if scope.Default { db = scope.Handle(db, context) } } // call scopes for _, scope := range s.scopes { db = scope.Handle(db, context) } // call filters if s.filters != nil { for key, value := range s.filters { filter := s.Resource.filters[key] if filter != nil && filter.Handler != nil { db = filter.Handler(key, value, db, context) } else { db = DefaultHandler(key, value, db, context) } } } // add order by if order_by := context.Request.Form.Get("order_by"); order_by != "" { if regexp.MustCompile("^[a-zA-Z_]+$").MatchString(order_by) { if field, ok := db.NewScope(s.Context.Resource.Value).FieldByName(strings.TrimSuffix(order_by, "_desc")); ok { if strings.HasSuffix(order_by, "_desc") { db = db.Order(field.DBName+" DESC", true) } else { db = db.Order(field.DBName, true) } } } } // call search var keyword string if keyword = context.Request.Form.Get("keyword"); keyword == "" { keyword = context.Request.URL.Query().Get("keyword") } if keyword != "" && s.Resource.SearchHandler != nil { context.SetDB(s.Resource.SearchHandler(keyword, context).Debug()) return context } context.SetDB(db) return context }
func (s *Searcher) callScopes(context *qor.Context) *qor.Context { db := context.GetDB() // call default scopes for _, scope := range s.Resource.scopes { if scope.Default { db = scope.Handle(db, context) } } // call scopes for _, scope := range s.scopes { db = scope.Handle(db, context) } // call filters if s.filters != nil { for key, value := range s.filters { filter := s.Resource.filters[key] if filter != nil && filter.Handler != nil { db = filter.Handler(key, value, db, context) } else { db = DefaultHandler(key, value, db, context) } } } // add order by if order_by := context.Request.Form.Get("order_by"); order_by != "" { if regexp.MustCompile("^[a-zA-Z_]+$").MatchString(order_by) { if strings.HasSuffix(order_by, "_desc") { db = db.Order(strings.TrimSuffix(order_by, "_desc")+" DESC", true) } else { db = db.Order(order_by, true) } } } // call search if keyword := context.Request.Form.Get("keyword"); keyword != "" { if s.Resource.SearchHandler != nil { context.SetDB(s.Resource.SearchHandler(keyword, context)) return context } } context.SetDB(db) return context }
func (s *Searcher) callScopes(context *qor.Context) *qor.Context { db := context.GetDB() // call default scopes for _, scope := range s.Resource.scopes { if scope.Default { db = scope.Handle(db, context) } } // call scopes for _, scope := range s.scopes { db = scope.Handle(db, context) } // call filters if s.filters != nil { for key, value := range s.filters { filter := s.Resource.filters[key] if filter != nil && filter.Handler != nil { db = filter.Handler(key, value, db, context) } else { db = DefaultHandler(key, value, db, context) } } } context.SetDB(db) // call search if keyword := context.Request.Form.Get("keyword"); keyword != "" { if s.Resource.SearchHandler != nil { context.SetDB(s.Resource.SearchHandler(keyword, context)) } } return context }