本文整理汇总了Golang中github.com/qor/qor.Context类的典型用法代码示例。如果您正苦于以下问题:Golang Context类的具体用法?Golang Context怎么用?Golang Context使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Context类的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: findManyHandler
func (res *Resource) findManyHandler(result interface{}, context *qor.Context) error {
if res.HasPermission(roles.Read, context) {
return context.GetDB().Set("gorm:order_by_primary_key", "DESC").Find(result).Error
} else {
return roles.ErrPermissionDenied
}
}
示例2: saveHandler
func (res *Resource) saveHandler(result interface{}, context *qor.Context) error {
if (context.GetDB().NewScope(result).PrimaryKeyZero() &&
res.HasPermission(roles.Create, context)) || // has create permission
res.HasPermission(roles.Update, context) { // has update permission
return context.GetDB().Save(result).Error
} else {
return roles.ErrPermissionDenied
}
}
示例3: deleteHandler
func (res *Resource) deleteHandler(result interface{}, context *qor.Context) error {
if res.HasPermission(roles.Delete, context) {
if !context.GetDB().First(result, context.ResourceID).RecordNotFound() {
return context.GetDB().Delete(result).Error
} else {
return gorm.RecordNotFound
}
} else {
return roles.ErrPermissionDenied
}
}
示例4: finder
func (res *Resource) finder(result interface{}, metaValues *resource.MetaValues, context *qor.Context) error {
var primaryKey string
if metaValues == nil {
primaryKey = context.ResourceID
} else if id := metaValues.Get(res.PrimaryFieldName()); id != nil {
primaryKey = utils.ToString(id.Value)
}
if primaryKey != "" {
if metaValues != nil {
if destroy := metaValues.Get("_destroy"); destroy != nil {
if fmt.Sprintf("%v", destroy.Value) != "0" {
context.GetDB().Delete(result, primaryKey)
return resource.ErrProcessorSkipLeft
}
}
}
return context.GetDB().First(result, primaryKey).Error
}
return nil
}
示例5: findOneHandler
func (res *Resource) findOneHandler(result interface{}, metaValues *MetaValues, context *qor.Context) error {
if res.HasPermission(roles.Read, context) {
var (
scope = context.GetDB().NewScope(res.Value)
primaryField = res.PrimaryField()
primaryKey string
)
if metaValues == nil {
primaryKey = context.ResourceID
} else if primaryField == nil {
return nil
} else if id := metaValues.Get(primaryField.Name); id != nil {
primaryKey = utils.ToString(id.Value)
}
if primaryKey != "" {
if metaValues != nil {
if destroy := metaValues.Get("_destroy"); destroy != nil {
if fmt.Sprint(destroy.Value) != "0" && res.HasPermission(roles.Delete, context) {
context.GetDB().Delete(result, fmt.Sprintf("%v = ?", scope.Quote(primaryField.DBName)), primaryKey)
return ErrProcessorSkipLeft
}
}
}
return context.GetDB().First(result, fmt.Sprintf("%v = ?", scope.Quote(primaryField.DBName)), primaryKey).Error
}
return errors.New("failed to find")
} else {
return roles.ErrPermissionDenied
}
}
示例6: Export
func (res *Resource) Export(container Container, context *qor.Context) error {
results := res.NewSlice()
if err := context.GetDB().Find(results).Error; err == nil {
reflectValue := reflect.Indirect(reflect.ValueOf(results))
if writer, err := container.NewWriter(res, context); err == nil {
writer.WriteHeader()
for i := 0; i < reflectValue.Len(); i++ {
var result = reflectValue.Index(i).Interface()
if err := writer.WriteRow(result); err != nil {
return err
}
}
writer.Flush()
} else {
return err
}
} else {
return err
}
return nil
}
示例7: getNestedModel
func getNestedModel(value interface{}, fieldName string, context *qor.Context) interface{} {
model := reflect.Indirect(reflect.ValueOf(value))
fields := strings.Split(fieldName, ".")
for _, field := range fields[:len(fields)-1] {
if model.CanAddr() {
submodel := model.FieldByName(field)
if key := submodel.FieldByName("Id"); !key.IsValid() || key.Uint() == 0 {
if submodel.CanAddr() {
context.GetDB().Model(model.Addr().Interface()).Related(submodel.Addr().Interface())
model = submodel
} else {
break
}
} else {
model = submodel
}
}
}
if model.CanAddr() {
return model.Addr().Interface()
}
return nil
}
示例8: deleteHandler
func (res *Resource) deleteHandler(result interface{}, context *qor.Context) error {
if res.HasPermission(roles.Delete, context) {
scope := context.GetDB().NewScope(res.Value)
if !context.GetDB().First(result, fmt.Sprintf("%v = ?", scope.Quote(res.PrimaryDBName())), context.ResourceID).RecordNotFound() {
return context.GetDB().Delete(result).Error
}
return gorm.ErrRecordNotFound
}
return roles.ErrPermissionDenied
}
示例9: saveHandler
func (res *Resource) saveHandler(result interface{}, context *qor.Context) error {
if (context.GetDB().NewScope(result).PrimaryKeyZero() &&
res.HasPermission(roles.Create, context)) || // has create permission
res.HasPermission(roles.Update, context) { // has update permission
results := context.GetDB().Save(result)
if results.RowsAffected == 0 {
primaryField := context.GetDB().NewScope(result).PrimaryField()
// if primary field has value and it is not a auto increment field, then create it if nothing updated
if _, ok := primaryField.TagSettings["AUTO_INCREMENT"]; !primaryField.IsBlank && !ok {
return context.GetDB().Create(result).Error
}
}
return results.Error
}
return roles.ErrPermissionDenied
}
示例10: findManyHandler
func (res *Resource) findManyHandler(result interface{}, context *qor.Context) error {
if res.HasPermission(roles.Read, context) {
db := context.GetDB()
if _, ok := db.Get("qor:getting_total_count"); ok {
return context.GetDB().Count(result).Error
} else {
return context.GetDB().Set("gorm:order_by_primary_key", "DESC").Find(result).Error
}
}
return roles.ErrPermissionDenied
}
示例11: callScopes
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
}
示例12: callScopes
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
}
示例13: callScopes
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
}