| 
					
				 | 
			
			
				@@ -32,42 +32,52 @@ var rLogSpacesAll = regexp.MustCompile(`[\s\t]+`) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var rLogSpacesEnd = regexp.MustCompile(`[\s\t]+;$`) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 var rSqlParam = regexp.MustCompile(`\$\d+`) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-func log(w io.Writer, m string, s time.Time, e error, tx bool, query string, args ...any) string { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	var tmsg string 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func log(w io.Writer, fname string, start time.Time, err error, tx bool, query string, args ...any) string { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	var values []string 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	bold := "0" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	color := "33" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// Transaction or not 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if tx { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		tmsg = " [TX]" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		bold = "1" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		values = append(values, "[TX]") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if m != "" { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		tmsg = tmsg + " " + m 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// Function name 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if fname != "" { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		values = append(values, fname) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	qmsg := query 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if qmsg != "" { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		qmsg = strings.Trim(rLogSpacesAll.ReplaceAllString(qmsg, " "), " ") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		qmsg = rLogSpacesEnd.ReplaceAllString(qmsg, ";") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		qmsg = " " + qmsg 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// SQL query 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if query != "" { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		values = append(values, rLogSpacesEnd.ReplaceAllString( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			strings.Trim(rLogSpacesAll.ReplaceAllString(query, " "), " "), ";", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	astr := " (empty)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// Params 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	if len(args) > 0 { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		astr = fmt.Sprintf(" (%v)", args) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		values = append(values, fmt.Sprintf("(%v)", args)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		values = append(values, "(empty)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	bold := "0" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	color := "33" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	estr := " (nil)" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if e != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// Error 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 		color = "31" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		estr = " (" + e.Error() + ")" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		values = append(values, "("+err.Error()+")") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		values = append(values, "(nil)") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	if tx { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-		bold = "1" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// Execute time with close color symbols 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	values = append(values, fmt.Sprintf("%.3f ms\033[0m", time.Since(start).Seconds())) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	// Prepend start caption with colors 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	values = append([]string{"\033[" + bold + ";" + color + "m[SQL]"}, values...) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	res := fmt.Sprintln("\033[" + bold + ";" + color + "m[SQL]" + tmsg + qmsg + astr + estr + fmt.Sprintf(" %.3f ms", time.Since(s).Seconds()) + "\033[0m") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	res := fmt.Sprintln(strings.Join(values, " ")) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	fmt.Fprint(w, res) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	return res 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |