//HandleResult determines whether or not the transaction provided should be rolled //back or if it should be committed. It rolls back when the result value is //a non-http error, if it is an Error and the status code is >= 400. func (self *QbsDefaultOrmTransactionPolicy) HandleResult(tx *qbs.Qbs, value interface{}, err error) (interface{}, error) { if err != nil { switch e := err.(type) { case *Error: if e.StatusCode >= 400 { rerr := tx.Rollback() if rerr != nil { return nil, rerr } } default: rerr := tx.Rollback() if rerr != nil { return nil, rerr } return nil, HTTPError(http.StatusInternalServerError, fmt.Sprintf("%v", err)) } } else { if cerr := tx.Commit(); cerr != nil { return nil, cerr } } return value, err }