cc-backend/internal/repository/hooks.go

29 lines
965 B
Go
Raw Normal View History

2023-02-13 13:52:17 +01:00
// Copyright (C) 2022 NHR@FAU, University Erlangen-Nuremberg.
// All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package repository
import (
"context"
"time"
"github.com/ClusterCockpit/cc-backend/pkg/log"
)
// Hooks satisfies the sqlhook.Hooks interface
type Hooks struct{}
// Before hook will print the query with it's args and return the context with the timestamp
func (h *Hooks) Before(ctx context.Context, query string, args ...interface{}) (context.Context, error) {
2023-06-20 15:47:38 +02:00
log.Debugf("SQL query %s %q", query, args)
2023-02-13 13:52:17 +01:00
return context.WithValue(ctx, "begin", time.Now()), nil
}
// After hook will get the timestamp registered on the Before hook and print the elapsed time
func (h *Hooks) After(ctx context.Context, query string, args ...interface{}) (context.Context, error) {
begin := ctx.Value("begin").(time.Time)
2023-06-20 15:47:38 +02:00
log.Debugf("Took: %s\n", time.Since(begin))
2023-02-13 13:52:17 +01:00
return ctx, nil
}