-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsqlguard.go
More file actions
40 lines (36 loc) · 1.42 KB
/
sqlguard.go
File metadata and controls
40 lines (36 loc) · 1.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// Package sqlguard is a production-safe SQL query analyzer for Go applications.
//
// It detects slow queries, dangerous SQL patterns, and performance issues
// both at runtime (via a database/sql driver wrapper) and statically
// (via the CLI).
//
// The runtime guard wraps at the driver.Driver layer, so it returns a real
// *sql.DB and analyzes every query — including those issued by ORMs and
// query builders — without a method list to keep in sync.
//
// Register a wrapped driver by name:
//
// sqlguard.Register("sqlguard-pg", "pgx")
// db, _ := sql.Open("sqlguard-pg", dsn)
// db.Query("SELECT * FROM users") // logs warning about SELECT *
//
// Or wrap an existing driver.Connector directly:
//
// db := sqlguard.OpenDB(connector)
package sqlguard
import (
"database/sql"
"database/sql/driver"
"github.com/KARTIKrocks/sqlguard/middleware"
)
// Register wraps the database/sql driver registered under baseDriver and
// registers the analyzed result under name. Afterwards sql.Open(name, dsn)
// yields a *sql.DB whose every query is analyzed.
func Register(name, baseDriver string, opts ...middleware.Option) error {
return middleware.Register(name, baseDriver, opts...)
}
// OpenDB wraps a driver.Connector and returns an analyzed *sql.DB. Use this
// when you already hold a connector (e.g. pgx's stdlib.GetConnector).
func OpenDB(c driver.Connector, opts ...middleware.Option) *sql.DB {
return middleware.OpenDB(c, opts...)
}