optic-rails 1.3.1 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/optic/rails.rb +24 -16
- data/lib/optic/rails/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f9410ea4eb57b65685d90e10085ae84f5e40607ed9f1a1016c147c1c3c231efe
|
4
|
+
data.tar.gz: adc15f1add9ac36ccdf2ca8be14a369ab2ba6475072e2298c963d52ddd597d97
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 732f7902ece59b40ec446b17615836b490ba2e94bea9f72ff0b75439274e878f32d85fd057d6854077314256141aa6b8e57dd485cc5c61f72732704097a3b31a
|
7
|
+
data.tar.gz: a53b1d9fb359101ae9a51eb90a0e32c292440a19b951aae377c17a328b591e03f84df378fc15589fdb98c6f6acbd705dd5654d47176d40736059552093c2f063
|
data/lib/optic/rails.rb
CHANGED
@@ -52,30 +52,30 @@ module Optic
|
|
52
52
|
joins = join_path.reverse.map(&:to_sym).inject { |acc, elt| { elt => acc } }
|
53
53
|
|
54
54
|
columns = [
|
55
|
-
%Q|#{qualified_primary_key(pivot)} AS
|
56
|
-
%Q|#{
|
55
|
+
%Q|#{qualified_primary_key(connection, pivot)} AS primary_key|,
|
56
|
+
%Q|#{qualified_entity_column(connection, pivot, instruction["pivot_attribute_name"])} AS pivot_attribute_name|,
|
57
57
|
]
|
58
58
|
|
59
59
|
join_select = entity
|
60
60
|
.joins(joins)
|
61
|
-
.group(qualified_primary_key(pivot))
|
62
|
-
.select(*columns, 'COUNT(*) AS
|
61
|
+
.group(qualified_primary_key(connection, pivot))
|
62
|
+
.select(*columns, 'COUNT(*) AS count')
|
63
63
|
.to_sql
|
64
64
|
|
65
65
|
instance_select = pivot
|
66
|
-
.select(*columns, '0 AS
|
66
|
+
.select(*columns, '0 AS count')
|
67
67
|
.to_sql
|
68
68
|
|
69
69
|
union_sql = <<~"SQL"
|
70
|
-
SELECT
|
71
|
-
FROM (#{join_select} UNION ALL #{instance_select}) AS
|
72
|
-
GROUP BY
|
70
|
+
SELECT pivot_values.primary_key, pivot_values.pivot_attribute_name, MAX(pivot_values.count) AS count
|
71
|
+
FROM (#{join_select} UNION ALL #{instance_select}) AS pivot_values
|
72
|
+
GROUP BY pivot_values.primary_key, pivot_values.pivot_attribute_name
|
73
73
|
SQL
|
74
74
|
else
|
75
|
-
entity.select(
|
75
|
+
entity.select('COUNT(*) as count').to_sql
|
76
76
|
end
|
77
77
|
|
78
|
-
{ metric_configuration_id: instruction["metric_configuration_id"], result: connection.
|
78
|
+
{ metric_configuration_id: instruction["metric_configuration_id"], result: connection.exec_query(query).to_a }
|
79
79
|
end
|
80
80
|
end
|
81
81
|
end
|
@@ -89,8 +89,12 @@ module Optic
|
|
89
89
|
def with_connection
|
90
90
|
ActiveRecord::Base.connection_pool.with_connection do |connection|
|
91
91
|
connection.transaction do
|
92
|
-
connection.
|
93
|
-
|
92
|
+
if connection.adapter_name == "PostgreSQL"
|
93
|
+
connection.execute "SET TRANSACTION READ ONLY"
|
94
|
+
connection.execute "SET LOCAL statement_timeout = 100"
|
95
|
+
# TODO support equivalent options for other adapters (such as mysql)
|
96
|
+
end
|
97
|
+
|
94
98
|
yield connection
|
95
99
|
end
|
96
100
|
end
|
@@ -100,12 +104,16 @@ module Optic
|
|
100
104
|
entity_name.constantize.unscoped
|
101
105
|
end
|
102
106
|
|
103
|
-
def
|
104
|
-
|
107
|
+
def qualified_primary_key(connection, entity)
|
108
|
+
qualified_entity_column(connection, entity, entity.primary_key)
|
109
|
+
end
|
110
|
+
|
111
|
+
def qualified_entity_column(connection, entity, attribute)
|
112
|
+
qualified_table_column(connection, entity.table_name, attribute)
|
105
113
|
end
|
106
114
|
|
107
|
-
def
|
108
|
-
|
115
|
+
def qualified_table_column(connection, table_name, column_name)
|
116
|
+
connection.quote_table_name(table_name) + "." + connection.quote_column_name(column_name)
|
109
117
|
end
|
110
118
|
|
111
119
|
def active_record_klasses
|
data/lib/optic/rails/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: optic-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anton Vaynshtok
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-07-
|
11
|
+
date: 2018-07-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: action_cable_client
|