Есть ли способ подсчитать каждый вызов sql.Exec? - PullRequest
0 голосов
/ 07 февраля 2019

Я пишу бэкэнд в go для углового приложения.Я хочу регистрировать для каждого запроса, сколько запросов к базе данных было выполнено.

Для этого я хочу увеличивать целое число каждый раз, когда вызывается sql.Exec.Как мне сделать это, не добавляя его вручную в каждое место, где я использую sql.Exec?Или есть лучший способ сделать это?

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Как мне сделать это, не добавляя его вручную в каждое место, где я использую sql.Exec?

Обернуть ваш объект доступа SQL.Например:

type MyDB struct {
    *sql.DB
    count int
}

func (db *MyDB) Exec(query string, args ...interface{}) (sql.Result,error) {
    db.count++
    return db.DB.Exec(query, args...)
}

Тогда везде используйте ваш упакованный тип.Это (вероятно) будет означать обновление большого количества кода для использования интерфейса, а не переменной *sql.DB.

Единственным другим вариантом является написание оболочки вокруг драйвера SQL (а не клиента).Но вы бы использовали тот же подход.Этот метод требует более глубокого понимания внутренних элементов Go * sql.

0 голосов
/ 07 февраля 2019

Как мне это сделать, не добавляя его вручную в каждое место, где я использую sql.Exec?

Совсем нет.Go не предлагает магии.Если вы хотите, чтобы что-то было сделано, вы должны сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...