mirror of
https://github.com/ClusterCockpit/cc-backend
synced 2024-12-25 12:59:06 +01:00
29 lines
963 B
Go
29 lines
963 B
Go
// 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) {
|
|
log.Infof("SQL query %s %q", query, args)
|
|
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)
|
|
log.Infof("Took: %s\n", time.Since(begin))
|
|
return ctx, nil
|
|
}
|