Module: Datadog::Contrib::Sequel::Utils

Defined in:
lib/ddtrace/contrib/sequel/utils.rb

Overview

General purpose functions for Sequel

Class Method Summary collapse

Class Method Details

.adapter_name(database) ⇒ Object

Ruby database connector library

e.g. adapter:mysql2 (database:mysql), adapter:jdbc (database:postgres)



13
14
15
16
17
18
19
20
21
22
23
# File 'lib/ddtrace/contrib/sequel/utils.rb', line 13

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_type(database) ⇒ Object

Database engine

e.g. database:mysql (adapter:mysql2), database:postgres (adapter:jdbc)



28
29
30
# File 'lib/ddtrace/contrib/sequel/utils.rb', line 28

def database_type(database)
  Datadog::Utils::Database.normalize_vendor(database.database_type.to_s)
end

.parse_opts(sql, opts, db_opts, dataset = nil) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/ddtrace/contrib/sequel/utils.rb', line 32

def parse_opts(sql, opts, db_opts, dataset = nil)
  # Prepared statements don't provide their sql query in the +sql+ parameter.
  if !sql.is_a?(String) && (dataset && dataset.respond_to?(:prepared_sql) &&
    (resolved_sql = dataset.prepared_sql))
    # The dataset contains the resolved SQL query and prepared statement name.
    prepared_name = dataset.prepared_statement_name
    sql = resolved_sql
  end

  {
    name: opts[:type],
    query: sql,
    prepared_name: prepared_name,
    database: db_opts[:database],
    host: db_opts[:host]
  }
end

.set_common_tags(span) ⇒ Object



50
51
52
53
54
55
56
# File 'lib/ddtrace/contrib/sequel/utils.rb', line 50

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