move micro-wrapper-sql to core micro Co-authored-by: Vasiliy Tolstov <v.tolstov@unistack.org> Reviewed-on: #400 Co-authored-by: Evstigneev Denis <danteevstigneev@yandex.ru> Co-committed-by: Evstigneev Denis <danteevstigneev@yandex.ru>
		
			
				
	
	
		
			52 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package sql
 | |
| 
 | |
| import (
 | |
| 	"database/sql/driver"
 | |
| 	"errors"
 | |
| 	"fmt"
 | |
| 	"runtime"
 | |
| )
 | |
| 
 | |
| //go:generate sh -c "go run gen.go > wrap_gen.go"
 | |
| 
 | |
| // namedValueToValue converts driver arguments of NamedValue format to Value format. Implemented in the same way as in
 | |
| // database/sql ctxutil.go.
 | |
| func namedValueToValue(named []driver.NamedValue) ([]driver.Value, error) {
 | |
| 	dargs := make([]driver.Value, len(named))
 | |
| 	for n, param := range named {
 | |
| 		if len(param.Name) > 0 {
 | |
| 			return nil, errors.New("sql: driver does not support the use of Named Parameters")
 | |
| 		}
 | |
| 		dargs[n] = param.Value
 | |
| 	}
 | |
| 	return dargs, nil
 | |
| }
 | |
| 
 | |
| // namedValueToLabels convert driver arguments to interface{} slice
 | |
| func namedValueToLabels(named []driver.NamedValue) []interface{} {
 | |
| 	largs := make([]interface{}, 0, len(named)*2)
 | |
| 	var name string
 | |
| 	for _, param := range named {
 | |
| 		if param.Name != "" {
 | |
| 			name = param.Name
 | |
| 		} else {
 | |
| 			name = fmt.Sprintf("$%d", param.Ordinal)
 | |
| 		}
 | |
| 		largs = append(largs, fmt.Sprintf("%s=%v", name, param.Value))
 | |
| 	}
 | |
| 	return largs
 | |
| }
 | |
| 
 | |
| // getCallerName get the name of the function A where A() -> B() -> GetFunctionCallerName()
 | |
| func getCallerName() string {
 | |
| 	pc, _, _, ok := runtime.Caller(3)
 | |
| 	details := runtime.FuncForPC(pc)
 | |
| 	var callerName string
 | |
| 	if ok && details != nil {
 | |
| 		callerName = details.Name()
 | |
| 	} else {
 | |
| 		callerName = labelUnknown
 | |
| 	}
 | |
| 	return callerName
 | |
| }
 |