Skip to content

Commit

Permalink
feat(otelgorm): add query formatter option
Browse files Browse the repository at this point in the history
  • Loading branch information
vmihailenco committed Apr 12, 2022
1 parent 01faa43 commit e2d9787
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 2 deletions.
7 changes: 7 additions & 0 deletions otelgorm/option.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,13 @@ func WithoutQueryVariables() Option {
}
}

// WithQueryFormatter configures a query formatter
func WithQueryFormatter(queryFormatter func(query string) string) Option {
return func(p *otelPlugin) {
p.queryFormatter = queryFormatter
}
}

// WithoutMetrics prevents DBStats metrics from being reported.
func WithoutMetrics() Option {
return func(p *otelPlugin) {
Expand Down
13 changes: 11 additions & 2 deletions otelgorm/otelgorm.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ type otelPlugin struct {
attrs []attribute.KeyValue
excludeQueryVars bool
excludeMetrics bool
queryFormatter func(query string) string
}

func NewPlugin(opts ...Option) gorm.Plugin {
Expand Down Expand Up @@ -124,8 +125,7 @@ func (p *otelPlugin) after() gormHookFunc {

query := tx.Dialector.Explain(tx.Statement.SQL.String(), vars...)

attrs = append(attrs, semconv.DBStatementKey.String(query))

attrs = append(attrs, semconv.DBStatementKey.String(p.formatQuery(query)))
if tx.Statement.Table != "" {
attrs = append(attrs, semconv.DBSQLTableKey.String(tx.Statement.Table))
}
Expand All @@ -141,10 +141,19 @@ func (p *otelPlugin) after() gormHookFunc {
}
}

func (p *otelPlugin) formatQuery(query string) string {
if p.queryFormatter != nil {
return p.queryFormatter(query)
}
return query
}

func dbSystem(tx *gorm.DB) attribute.KeyValue {
switch tx.Dialector.Name() {
case "mysql":
return semconv.DBSystemMySQL
case "mssql":
return semconv.DBSystemMSSQL
case "postgres", "postgresql":
return semconv.DBSystemPostgreSQL
case "sqlite":
Expand Down

0 comments on commit e2d9787

Please sign in to comment.