-
Notifications
You must be signed in to change notification settings - Fork 369
/
utils.rb
70 lines (59 loc) · 2.08 KB
/
utils.rb
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
require 'ddtrace/ext/integration'
module Datadog
module Contrib
module Sequel
# General purpose functions for Sequel
module Utils
class << self
# Ruby database connector library
#
# e.g. adapter:mysql2 (database:mysql), adapter:jdbc (database:postgres)
def adapter_name(database)
scheme = database.adapter_scheme.to_s
if scheme == 'jdbc'.freeze
# The subtype is more important in this case,
# otherwise all database adapters will be 'jdbc'.
database_type(database)
else
Datadog::Utils::Database.normalize_vendor(scheme)
end
end
# Database engine
#
# e.g. database:mysql (adapter:mysql2), database:postgres (adapter:jdbc)
def database_type(database)
Datadog::Utils::Database.normalize_vendor(database.database_type.to_s)
end
def parse_opts(sql, opts, db_opts)
if ::Sequel::VERSION >= '4.37.0' && !sql.is_a?(String)
# In 4.37.0, sql was converted to a prepared statement object
sql = sql.prepared_sql unless sql.is_a?(Symbol)
end
{
name: opts[:type],
query: sql,
database: db_opts[:database],
host: db_opts[:host]
}
end
def set_common_tags(span)
# Tag as an external peer service
span.set_tag(Datadog::Ext::Integration::TAG_PEER_SERVICE, span.service)
# Set analytics sample rate
Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled?
end
private
def datadog_configuration
Datadog.configuration[:sequel]
end
def analytics_enabled?
Contrib::Analytics.enabled?(datadog_configuration[:analytics_enabled])
end
def analytics_sample_rate
datadog_configuration[:analytics_sample_rate]
end
end
end
end
end
end