mirror of
https://gitee.com/rainbond/Rainbond.git
synced 2024-12-03 20:27:46 +08:00
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...)
|
|
}
|
|
}
|
|
}
|