forked from mirror/gorm
31 lines
730 B
Go
31 lines
730 B
Go
|
package gorm
|
||
|
|
||
|
import "database/sql"
|
||
|
|
||
|
// Define callbacks for row query
|
||
|
func init() {
|
||
|
DefaultCallback.RowQuery().Register("gorm:row_query", rowQueryCallback)
|
||
|
}
|
||
|
|
||
|
type RowQueryResult struct {
|
||
|
Row *sql.Row
|
||
|
}
|
||
|
|
||
|
type RowsQueryResult struct {
|
||
|
Rows *sql.Rows
|
||
|
Error error
|
||
|
}
|
||
|
|
||
|
// queryCallback used to query data from database
|
||
|
func rowQueryCallback(scope *Scope) {
|
||
|
if result, ok := scope.InstanceGet("row_query_result"); ok {
|
||
|
scope.prepareQuerySQL()
|
||
|
|
||
|
if rowResult, ok := result.(*RowQueryResult); ok {
|
||
|
rowResult.Row = scope.SQLDB().QueryRow(scope.SQL, scope.SQLVars...)
|
||
|
} else if rowsResult, ok := result.(*RowsQueryResult); ok {
|
||
|
rowsResult.Rows, rowsResult.Error = scope.SQLDB().Query(scope.SQL, scope.SQLVars...)
|
||
|
}
|
||
|
}
|
||
|
}
|