callback_row_query.go 853 B

123456789101112131415161718192021222324252627282930313233343536
  1. package gorm
  2. import (
  3. "database/sql"
  4. "fmt"
  5. )
  6. // Define callbacks for row query
  7. func init() {
  8. DefaultCallback.RowQuery().Register("gorm:row_query", rowQueryCallback)
  9. }
  10. type RowQueryResult struct {
  11. Row *sql.Row
  12. }
  13. type RowsQueryResult struct {
  14. Rows *sql.Rows
  15. Error error
  16. }
  17. // queryCallback used to query data from database
  18. func rowQueryCallback(scope *Scope) {
  19. if result, ok := scope.InstanceGet("row_query_result"); ok {
  20. scope.prepareQuerySQL()
  21. if str, ok := scope.Get("gorm:query_option"); ok {
  22. scope.SQL += addExtraSpaceIfExist(fmt.Sprint(str))
  23. }
  24. if rowResult, ok := result.(*RowQueryResult); ok {
  25. rowResult.Row = scope.SQLDB().QueryRow(scope.SQL, scope.SQLVars...)
  26. } else if rowsResult, ok := result.(*RowsQueryResult); ok {
  27. rowsResult.Rows, rowsResult.Error = scope.SQLDB().Query(scope.SQL, scope.SQLVars...)
  28. }
  29. }
  30. }