package mirko

import (
	"context"
	"database/sql"
	"database/sql/driver"
	"time"

	"github.com/gchaincl/sqlhooks"
	"golang.org/x/net/trace"
)

type sqlHooks struct{}

func (h *sqlHooks) Before(ctx context.Context, query string, args ...interface{}) (context.Context, error) {
	tr, ok := trace.FromContext(ctx)
	if ok {
		tr.LazyPrintf("SQL query: %s", query)
		tr.LazyPrintf("SQL  args: %+v", args)
	}
	return context.WithValue(ctx, "begin", time.Now()), nil
}

func (h *sqlHooks) After(ctx context.Context, query string, args ...interface{}) (context.Context, error) {
	begin := ctx.Value("begin").(time.Time)
	tr, ok := trace.FromContext(ctx)
	if ok {
		tr.LazyPrintf("SQL  took: %s", time.Since(begin).String())
	}
	return ctx, nil
}

func TraceSQL(driver driver.Driver, wrapped string) {
	sql.Register(wrapped, sqlhooks.Wrap(driver, &sqlHooks{}))
}
