influxdb-arel 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +2 -0
- data/Gemfile +1 -0
- data/README.md +218 -124
- data/lib/influxdb/arel.rb +25 -16
- data/lib/influxdb/arel/builder.rb +209 -0
- data/lib/influxdb/arel/clauses.rb +6 -0
- data/lib/influxdb/arel/clauses/base.rb +34 -0
- data/lib/influxdb/arel/clauses/expressions.rb +75 -0
- data/lib/influxdb/arel/clauses/from_clause.rb +45 -0
- data/lib/influxdb/arel/clauses/group_clause.rb +34 -0
- data/lib/influxdb/arel/clauses/select_clause.rb +37 -0
- data/lib/influxdb/arel/clauses/where_clause.rb +102 -0
- data/lib/influxdb/arel/core_extensions.rb +5 -21
- data/lib/influxdb/arel/delete_manager.rb +50 -0
- data/lib/influxdb/arel/extensions.rb +6 -0
- data/lib/influxdb/arel/extensions/alias_predication.rb +11 -0
- data/lib/influxdb/arel/extensions/boolean_predications.rb +15 -0
- data/lib/influxdb/arel/extensions/expressions.rb +75 -0
- data/lib/influxdb/arel/extensions/joining_merging.rb +21 -0
- data/lib/influxdb/arel/extensions/math.rb +23 -0
- data/lib/influxdb/arel/extensions/predications.rb +144 -0
- data/lib/influxdb/arel/nodes.rb +7 -14
- data/lib/influxdb/arel/nodes/attribute.rb +20 -0
- data/lib/influxdb/arel/nodes/binary.rb +4 -3
- data/lib/influxdb/arel/nodes/delete_statement.rb +37 -0
- data/lib/influxdb/arel/nodes/duration.rb +3 -3
- data/lib/influxdb/arel/nodes/function.rb +2 -2
- data/lib/influxdb/arel/nodes/grouping.rb +3 -3
- data/lib/influxdb/arel/nodes/infix_operation.rb +11 -4
- data/lib/influxdb/arel/nodes/merge.rb +13 -0
- data/lib/influxdb/arel/nodes/node.rb +18 -6
- data/lib/influxdb/arel/nodes/now.rb +1 -1
- data/lib/influxdb/arel/nodes/ordering.rb +15 -0
- data/lib/influxdb/arel/nodes/select_statement.rb +10 -8
- data/lib/influxdb/arel/nodes/sql_literal.rb +5 -8
- data/lib/influxdb/arel/nodes/table.rb +19 -0
- data/lib/influxdb/arel/nodes/table_alias.rb +2 -4
- data/lib/influxdb/arel/nodes/unary.rb +6 -1
- data/lib/influxdb/arel/quoter.rb +85 -0
- data/lib/influxdb/arel/select_manager.rb +111 -64
- data/lib/influxdb/arel/tree_manager.rb +15 -5
- data/lib/influxdb/arel/version.rb +1 -1
- data/lib/influxdb/arel/visitor.rb +96 -126
- data/lib/influxdb/arel/visitor/delete_statement.rb +32 -0
- data/lib/influxdb/arel/visitor/select_statement.rb +59 -0
- data/lib/influxdb/arel/visitor/where_statement.rb +14 -0
- data/spec/lib/influxdb/arel/builder_spec.rb +173 -0
- data/spec/lib/influxdb/arel/core_extensions_spec.rb +0 -21
- data/spec/lib/influxdb/arel/nodes/and_spec.rb +6 -9
- data/spec/lib/influxdb/arel/nodes/attribute_spec.rb +21 -0
- data/spec/lib/influxdb/arel/nodes/binary_spec.rb +0 -4
- data/spec/lib/influxdb/arel/nodes/duration_spec.rb +1 -0
- data/spec/lib/influxdb/arel/nodes/in_spec.rb +1 -0
- data/spec/lib/influxdb/arel/nodes/infix_operation_spec.rb +17 -0
- data/spec/lib/influxdb/arel/nodes/merge_spec.rb +25 -0
- data/spec/lib/influxdb/arel/nodes/now_spec.rb +1 -0
- data/spec/lib/influxdb/arel/nodes/ordering_spec.rb +19 -0
- data/spec/lib/influxdb/arel/nodes/sql_literal_spec.rb +1 -5
- data/spec/lib/influxdb/arel/nodes/table_alias_spec.rb +3 -10
- data/spec/lib/influxdb/arel/nodes/table_spec.rb +8 -0
- data/spec/lib/influxdb/arel/nodes/unary_spec.rb +0 -4
- data/spec/lib/influxdb/arel/quoter/repository_spec.rb +10 -0
- data/spec/lib/influxdb/arel/quoter_spec.rb +33 -0
- data/spec/lib/influxdb/arel/select_manager_spec.rb +356 -156
- data/spec/lib/influxdb/arel_spec.rb +22 -0
- data/spec/spec_helper.rb +15 -0
- data/spec/support/examples/binary_node.rb +1 -0
- data/spec/support/examples/function_node.rb +1 -0
- data/spec/support/examples/infix_operation_node.rb +15 -0
- data/spec/support/examples/node_boolean_predications.rb +21 -0
- data/spec/support/examples/node_joining_merging.rb +53 -0
- data/spec/support/examples/unary_node.rb +1 -0
- data/spec/support/fabrics.rb +3 -3
- metadata +49 -11
- data/lib/influxdb/arel/alias_predication.rb +0 -9
- data/lib/influxdb/arel/attributes.rb +0 -1
- data/lib/influxdb/arel/attributes/attribute.rb +0 -74
- data/lib/influxdb/arel/expressions.rb +0 -73
- data/lib/influxdb/arel/math.rb +0 -21
- data/lib/influxdb/arel/predications.rb +0 -137
- data/lib/influxdb/arel/table.rb +0 -219
- data/spec/lib/influxdb/arel/table_spec.rb +0 -193
@@ -8,4 +8,26 @@ describe Influxdb::Arel do
|
|
8
8
|
describe '.star' do
|
9
9
|
specify{ expect(subject.star).to eq(sql('*')) }
|
10
10
|
end
|
11
|
+
|
12
|
+
describe '.arelize' do
|
13
|
+
let(:array){ ['string', :symbol, node(:Now)] }
|
14
|
+
|
15
|
+
context 'without block' do
|
16
|
+
specify{ expect(subject.arelize('string')).to eq(sql('string')) }
|
17
|
+
specify{ expect(subject.arelize(:symbol)).to eq(sql(:symbol)) }
|
18
|
+
specify{ expect(subject.arelize(node(:Now))).to eq(node(:Now)) }
|
19
|
+
specify{ expect(subject.arelize(array)).to eq([sql('string'), sql(:symbol), node(:Now)]) }
|
20
|
+
end
|
21
|
+
|
22
|
+
context 'with block' do
|
23
|
+
let(:block){ ->(e){ node(:Table, e) } }
|
24
|
+
|
25
|
+
specify{ expect(subject.arelize('string', &block)).to eq(node(:Table, 'string')) }
|
26
|
+
specify{ expect(subject.arelize(:symbol, &block)).to eq(node(:Table, :symbol)) }
|
27
|
+
specify{ expect(subject.arelize(node(:Now), &block)).to eq(node(:Now)) }
|
28
|
+
specify{
|
29
|
+
expect(subject.arelize(array, &block)).to eq([node(:Table, 'string'), node(:Table, :symbol), node(:Now)])
|
30
|
+
}
|
31
|
+
end
|
32
|
+
end
|
11
33
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,6 +1,12 @@
|
|
1
|
+
if ENV['CODECLIMATE_REPO_TOKEN']
|
2
|
+
require "codeclimate-test-reporter"
|
3
|
+
CodeClimate::TestReporter.start
|
4
|
+
end
|
5
|
+
|
1
6
|
require 'bundler'
|
2
7
|
Bundler.require(:default, :test)
|
3
8
|
|
9
|
+
|
4
10
|
Dir["./spec/support/**/*.rb"].each { |f| require f }
|
5
11
|
|
6
12
|
RSpec.configure do |config|
|
@@ -8,6 +14,15 @@ RSpec.configure do |config|
|
|
8
14
|
|
9
15
|
config.include Influxdb::Arel::RspecHelper
|
10
16
|
|
17
|
+
config.around :each do |example|
|
18
|
+
begin
|
19
|
+
old_tz, ENV['TZ'] = ENV['TZ'], 'Europe/Moscow'
|
20
|
+
example.run
|
21
|
+
ensure
|
22
|
+
old_tz ? ENV['TZ'] = old_tz : ENV.delete('TZ')
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
11
26
|
config.around :each, time_freeze: ->(v){ v.is_a?(Date) || v.is_a?(Time) || v.is_a?(String) } do |example|
|
12
27
|
datetime = if example.metadata[:time_freeze].is_a?(String)
|
13
28
|
DateTime.parse(example.metadata[:time_freeze])
|
@@ -2,6 +2,7 @@ shared_examples_for :binary_node do |klass, node_sql = nil|
|
|
2
2
|
let(:described_node){ node(klass, sql('left'), sql('right')) }
|
3
3
|
|
4
4
|
it_should_behave_like :node_to_sql, node_sql if node_sql
|
5
|
+
it_should_behave_like :node_boolean_predications, node_sql if node_sql
|
5
6
|
|
6
7
|
describe '#eql?' do
|
7
8
|
specify{ expect(described_node.eql?(node(klass, sql('left'), sql('right')))).to be_truthy }
|
@@ -6,6 +6,7 @@ shared_examples_for :function_node do |klass, node_sql, args = []|
|
|
6
6
|
it_should_behave_like :node_to_sql, node_sql
|
7
7
|
it_should_behave_like :node_as, node_sql
|
8
8
|
it_should_behave_like :node_math, node_sql
|
9
|
+
it_should_behave_like :node_boolean_predications, node_sql
|
9
10
|
|
10
11
|
describe '#eql?' do
|
11
12
|
specify{ expect(described_node.eql?(node(klass, expressions))).to be_truthy }
|
@@ -0,0 +1,15 @@
|
|
1
|
+
shared_examples_for :infix_operation_node do |klass, node_sql|
|
2
|
+
let(:described_node){ node(klass, sql('left'), sql('right')) }
|
3
|
+
|
4
|
+
it_should_behave_like :binary_node, klass, node_sql
|
5
|
+
it_should_behave_like :node_expressions, node_sql
|
6
|
+
it_should_behave_like :node_predications, node_sql
|
7
|
+
it_should_behave_like :node_math, node_sql
|
8
|
+
|
9
|
+
describe '#as' do
|
10
|
+
subject{ described_node.as(:alias) }
|
11
|
+
|
12
|
+
specify{ expect(subject).to be_instance_of(Influxdb::Arel::Nodes::As) }
|
13
|
+
specify{ expect(subject.to_sql).to eq("(#{node_sql}) AS alias") }
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
shared_examples_for :node_boolean_predications do |node_sql|
|
2
|
+
describe '#and' do
|
3
|
+
let(:another_node){ sql('node') }
|
4
|
+
|
5
|
+
subject{ described_node.and(another_node) }
|
6
|
+
|
7
|
+
specify{ expect(subject).to be_instance_of(Influxdb::Arel::Nodes::And) }
|
8
|
+
specify{ expect(subject.children).to eq([described_node, another_node]) }
|
9
|
+
specify{ expect(subject.to_sql).to eq("#{node_sql} AND node") }
|
10
|
+
end
|
11
|
+
|
12
|
+
describe '#or' do
|
13
|
+
let(:another_node){ sql('node') }
|
14
|
+
|
15
|
+
subject{ described_node.or(another_node) }
|
16
|
+
|
17
|
+
specify{ expect(subject).to be_instance_of(Influxdb::Arel::Nodes::Grouping) }
|
18
|
+
specify{ expect(subject.value).to eq(node(:Or, described_node, another_node)) }
|
19
|
+
specify{ expect(subject.to_sql).to eq("(#{node_sql} OR node)") }
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
shared_examples_for :node_joining_merging do |node_sql|
|
2
|
+
describe '#join' do
|
3
|
+
context 'with string' do
|
4
|
+
subject{ described_node.join('table') }
|
5
|
+
|
6
|
+
specify{ expect(subject).to be_instance_of(Influxdb::Arel::Nodes::Join) }
|
7
|
+
specify{ expect(subject.right).to eq(node(:Table, 'table')) }
|
8
|
+
specify{ expect(subject.to_sql).to eq("#{node_sql} INNER JOIN table") }
|
9
|
+
end
|
10
|
+
|
11
|
+
context 'with symbol' do
|
12
|
+
subject{ described_node.join(:table) }
|
13
|
+
|
14
|
+
specify{ expect(subject).to be_instance_of(Influxdb::Arel::Nodes::Join) }
|
15
|
+
specify{ expect(subject.right).to eq(node(:Table, 'table')) }
|
16
|
+
specify{ expect(subject.to_sql).to eq("#{node_sql} INNER JOIN table") }
|
17
|
+
end
|
18
|
+
|
19
|
+
context 'with node' do
|
20
|
+
subject{ described_node.join(node(:Table, 'table')) }
|
21
|
+
|
22
|
+
specify{ expect(subject).to be_instance_of(Influxdb::Arel::Nodes::Join) }
|
23
|
+
specify{ expect(subject.right).to eq(node(:Table, 'table')) }
|
24
|
+
specify{ expect(subject.to_sql).to eq("#{node_sql} INNER JOIN table") }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '#merge' do
|
29
|
+
context 'with string' do
|
30
|
+
subject{ described_node.merge('table') }
|
31
|
+
|
32
|
+
specify{ expect(subject).to be_instance_of(Influxdb::Arel::Nodes::Merge) }
|
33
|
+
specify{ expect(subject.right).to eq(node(:Table, 'table')) }
|
34
|
+
specify{ expect(subject.to_sql).to eq("#{node_sql} MERGE table") }
|
35
|
+
end
|
36
|
+
|
37
|
+
context 'with symbol' do
|
38
|
+
subject{ described_node.merge(:table) }
|
39
|
+
|
40
|
+
specify{ expect(subject).to be_instance_of(Influxdb::Arel::Nodes::Merge) }
|
41
|
+
specify{ expect(subject.right).to eq(node(:Table, 'table')) }
|
42
|
+
specify{ expect(subject.to_sql).to eq("#{node_sql} MERGE table") }
|
43
|
+
end
|
44
|
+
|
45
|
+
context 'with node' do
|
46
|
+
subject{ described_node.merge(node(:Table, 'table')) }
|
47
|
+
|
48
|
+
specify{ expect(subject).to be_instance_of(Influxdb::Arel::Nodes::Merge) }
|
49
|
+
specify{ expect(subject.right).to eq(node(:Table, 'table')) }
|
50
|
+
specify{ expect(subject.to_sql).to eq("#{node_sql} MERGE table") }
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -2,6 +2,7 @@ shared_examples_for :unary_node do |klass, node_sql = nil|
|
|
2
2
|
let(:described_node){ node(klass, sql('value')) }
|
3
3
|
|
4
4
|
it_should_behave_like :node_to_sql, node_sql if node_sql
|
5
|
+
it_should_behave_like :node_boolean_predications, node_sql if node_sql
|
5
6
|
|
6
7
|
describe '#eql?' do
|
7
8
|
specify{ expect(described_node.eql?(node(klass, sql('value')))).to be_truthy }
|
data/spec/support/fabrics.rb
CHANGED
@@ -2,15 +2,15 @@ module Influxdb
|
|
2
2
|
module Arel
|
3
3
|
module RspecHelper
|
4
4
|
def sql(value)
|
5
|
-
node('SqlLiteral', value)
|
5
|
+
node('SqlLiteral', value.to_s)
|
6
6
|
end
|
7
7
|
|
8
8
|
def node(class_name, *args)
|
9
9
|
Influxdb::Arel::Nodes.const_get(class_name).new(*args)
|
10
10
|
end
|
11
11
|
|
12
|
-
def
|
13
|
-
Influxdb::Arel::
|
12
|
+
def builder(name = nil)
|
13
|
+
Influxdb::Arel::Builder.new(name)
|
14
14
|
end
|
15
15
|
|
16
16
|
def visitor
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: influxdb-arel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- undr
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-10-
|
11
|
+
date: 2014-10-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -70,55 +70,83 @@ files:
|
|
70
70
|
- lib/influxdb-arel.rb
|
71
71
|
- lib/influxdb.rb
|
72
72
|
- lib/influxdb/arel.rb
|
73
|
-
- lib/influxdb/arel/
|
74
|
-
- lib/influxdb/arel/
|
75
|
-
- lib/influxdb/arel/
|
73
|
+
- lib/influxdb/arel/builder.rb
|
74
|
+
- lib/influxdb/arel/clauses.rb
|
75
|
+
- lib/influxdb/arel/clauses/base.rb
|
76
|
+
- lib/influxdb/arel/clauses/expressions.rb
|
77
|
+
- lib/influxdb/arel/clauses/from_clause.rb
|
78
|
+
- lib/influxdb/arel/clauses/group_clause.rb
|
79
|
+
- lib/influxdb/arel/clauses/select_clause.rb
|
80
|
+
- lib/influxdb/arel/clauses/where_clause.rb
|
76
81
|
- lib/influxdb/arel/core_extensions.rb
|
77
|
-
- lib/influxdb/arel/
|
78
|
-
- lib/influxdb/arel/
|
82
|
+
- lib/influxdb/arel/delete_manager.rb
|
83
|
+
- lib/influxdb/arel/extensions.rb
|
84
|
+
- lib/influxdb/arel/extensions/alias_predication.rb
|
85
|
+
- lib/influxdb/arel/extensions/boolean_predications.rb
|
86
|
+
- lib/influxdb/arel/extensions/expressions.rb
|
87
|
+
- lib/influxdb/arel/extensions/joining_merging.rb
|
88
|
+
- lib/influxdb/arel/extensions/math.rb
|
89
|
+
- lib/influxdb/arel/extensions/predications.rb
|
79
90
|
- lib/influxdb/arel/nodes.rb
|
80
91
|
- lib/influxdb/arel/nodes/and.rb
|
92
|
+
- lib/influxdb/arel/nodes/attribute.rb
|
81
93
|
- lib/influxdb/arel/nodes/binary.rb
|
94
|
+
- lib/influxdb/arel/nodes/delete_statement.rb
|
82
95
|
- lib/influxdb/arel/nodes/duration.rb
|
83
96
|
- lib/influxdb/arel/nodes/equality.rb
|
84
97
|
- lib/influxdb/arel/nodes/function.rb
|
85
98
|
- lib/influxdb/arel/nodes/grouping.rb
|
86
99
|
- lib/influxdb/arel/nodes/in.rb
|
87
100
|
- lib/influxdb/arel/nodes/infix_operation.rb
|
101
|
+
- lib/influxdb/arel/nodes/merge.rb
|
88
102
|
- lib/influxdb/arel/nodes/node.rb
|
89
103
|
- lib/influxdb/arel/nodes/now.rb
|
104
|
+
- lib/influxdb/arel/nodes/ordering.rb
|
90
105
|
- lib/influxdb/arel/nodes/select_statement.rb
|
91
106
|
- lib/influxdb/arel/nodes/sql_literal.rb
|
107
|
+
- lib/influxdb/arel/nodes/table.rb
|
92
108
|
- lib/influxdb/arel/nodes/table_alias.rb
|
93
109
|
- lib/influxdb/arel/nodes/time.rb
|
94
110
|
- lib/influxdb/arel/nodes/unary.rb
|
95
|
-
- lib/influxdb/arel/
|
111
|
+
- lib/influxdb/arel/quoter.rb
|
96
112
|
- lib/influxdb/arel/select_manager.rb
|
97
|
-
- lib/influxdb/arel/table.rb
|
98
113
|
- lib/influxdb/arel/tree_manager.rb
|
99
114
|
- lib/influxdb/arel/version.rb
|
100
115
|
- lib/influxdb/arel/visitor.rb
|
116
|
+
- lib/influxdb/arel/visitor/delete_statement.rb
|
117
|
+
- lib/influxdb/arel/visitor/select_statement.rb
|
118
|
+
- lib/influxdb/arel/visitor/where_statement.rb
|
119
|
+
- spec/lib/influxdb/arel/builder_spec.rb
|
101
120
|
- spec/lib/influxdb/arel/core_extensions_spec.rb
|
102
121
|
- spec/lib/influxdb/arel/nodes/and_spec.rb
|
122
|
+
- spec/lib/influxdb/arel/nodes/attribute_spec.rb
|
103
123
|
- spec/lib/influxdb/arel/nodes/binary_spec.rb
|
104
124
|
- spec/lib/influxdb/arel/nodes/duration_spec.rb
|
105
125
|
- spec/lib/influxdb/arel/nodes/equality_spec.rb
|
106
126
|
- spec/lib/influxdb/arel/nodes/function_spec.rb
|
107
127
|
- spec/lib/influxdb/arel/nodes/grouping_spec.rb
|
108
128
|
- spec/lib/influxdb/arel/nodes/in_spec.rb
|
129
|
+
- spec/lib/influxdb/arel/nodes/infix_operation_spec.rb
|
130
|
+
- spec/lib/influxdb/arel/nodes/merge_spec.rb
|
109
131
|
- spec/lib/influxdb/arel/nodes/now_spec.rb
|
132
|
+
- spec/lib/influxdb/arel/nodes/ordering_spec.rb
|
110
133
|
- spec/lib/influxdb/arel/nodes/sql_literal_spec.rb
|
111
134
|
- spec/lib/influxdb/arel/nodes/table_alias_spec.rb
|
135
|
+
- spec/lib/influxdb/arel/nodes/table_spec.rb
|
112
136
|
- spec/lib/influxdb/arel/nodes/time_spec.rb
|
113
137
|
- spec/lib/influxdb/arel/nodes/unary_spec.rb
|
138
|
+
- spec/lib/influxdb/arel/quoter/repository_spec.rb
|
139
|
+
- spec/lib/influxdb/arel/quoter_spec.rb
|
114
140
|
- spec/lib/influxdb/arel/select_manager_spec.rb
|
115
|
-
- spec/lib/influxdb/arel/table_spec.rb
|
116
141
|
- spec/lib/influxdb/arel_spec.rb
|
117
142
|
- spec/spec_helper.rb
|
118
143
|
- spec/support/examples/binary_node.rb
|
119
144
|
- spec/support/examples/function_node.rb
|
145
|
+
- spec/support/examples/infix_operation_node.rb
|
120
146
|
- spec/support/examples/node_as.rb
|
147
|
+
- spec/support/examples/node_boolean_predications.rb
|
121
148
|
- spec/support/examples/node_expressions.rb
|
149
|
+
- spec/support/examples/node_joining_merging.rb
|
122
150
|
- spec/support/examples/node_math.rb
|
123
151
|
- spec/support/examples/node_predications.rb
|
124
152
|
- spec/support/examples/node_to_sql.rb
|
@@ -149,27 +177,37 @@ signing_key:
|
|
149
177
|
specification_version: 4
|
150
178
|
summary: Influxdb SQL AST manager.
|
151
179
|
test_files:
|
180
|
+
- spec/lib/influxdb/arel/builder_spec.rb
|
152
181
|
- spec/lib/influxdb/arel/core_extensions_spec.rb
|
153
182
|
- spec/lib/influxdb/arel/nodes/and_spec.rb
|
183
|
+
- spec/lib/influxdb/arel/nodes/attribute_spec.rb
|
154
184
|
- spec/lib/influxdb/arel/nodes/binary_spec.rb
|
155
185
|
- spec/lib/influxdb/arel/nodes/duration_spec.rb
|
156
186
|
- spec/lib/influxdb/arel/nodes/equality_spec.rb
|
157
187
|
- spec/lib/influxdb/arel/nodes/function_spec.rb
|
158
188
|
- spec/lib/influxdb/arel/nodes/grouping_spec.rb
|
159
189
|
- spec/lib/influxdb/arel/nodes/in_spec.rb
|
190
|
+
- spec/lib/influxdb/arel/nodes/infix_operation_spec.rb
|
191
|
+
- spec/lib/influxdb/arel/nodes/merge_spec.rb
|
160
192
|
- spec/lib/influxdb/arel/nodes/now_spec.rb
|
193
|
+
- spec/lib/influxdb/arel/nodes/ordering_spec.rb
|
161
194
|
- spec/lib/influxdb/arel/nodes/sql_literal_spec.rb
|
162
195
|
- spec/lib/influxdb/arel/nodes/table_alias_spec.rb
|
196
|
+
- spec/lib/influxdb/arel/nodes/table_spec.rb
|
163
197
|
- spec/lib/influxdb/arel/nodes/time_spec.rb
|
164
198
|
- spec/lib/influxdb/arel/nodes/unary_spec.rb
|
199
|
+
- spec/lib/influxdb/arel/quoter/repository_spec.rb
|
200
|
+
- spec/lib/influxdb/arel/quoter_spec.rb
|
165
201
|
- spec/lib/influxdb/arel/select_manager_spec.rb
|
166
|
-
- spec/lib/influxdb/arel/table_spec.rb
|
167
202
|
- spec/lib/influxdb/arel_spec.rb
|
168
203
|
- spec/spec_helper.rb
|
169
204
|
- spec/support/examples/binary_node.rb
|
170
205
|
- spec/support/examples/function_node.rb
|
206
|
+
- spec/support/examples/infix_operation_node.rb
|
171
207
|
- spec/support/examples/node_as.rb
|
208
|
+
- spec/support/examples/node_boolean_predications.rb
|
172
209
|
- spec/support/examples/node_expressions.rb
|
210
|
+
- spec/support/examples/node_joining_merging.rb
|
173
211
|
- spec/support/examples/node_math.rb
|
174
212
|
- spec/support/examples/node_predications.rb
|
175
213
|
- spec/support/examples/node_to_sql.rb
|
@@ -1 +0,0 @@
|
|
1
|
-
require 'influxdb/arel/attributes/attribute'
|
@@ -1,74 +0,0 @@
|
|
1
|
-
module Influxdb
|
2
|
-
module Arel
|
3
|
-
module Attributes
|
4
|
-
class Attribute < Struct.new(:relation, :name)
|
5
|
-
include Expressions
|
6
|
-
include Predications
|
7
|
-
include AliasPredication
|
8
|
-
include Math
|
9
|
-
|
10
|
-
def self.encode(value)
|
11
|
-
"'#{value.to_s}'"
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
class Time < Attribute
|
16
|
-
def self.encode(value)
|
17
|
-
value.to_i * 1_000_000
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
class Date < Time; end
|
22
|
-
class DateTime < Time; end
|
23
|
-
|
24
|
-
class BigDecimal < Attribute
|
25
|
-
def self.encode(value)
|
26
|
-
value.to_s('F')
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
class Boolean < Attribute
|
31
|
-
def self.encode(value)
|
32
|
-
value.inspect
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
class FalseClass < Boolean; end
|
37
|
-
class TrueClass < Boolean; end
|
38
|
-
|
39
|
-
class Float < Attribute
|
40
|
-
def self.encode(value)
|
41
|
-
value
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
class Integer < Attribute
|
46
|
-
def self.encode(value)
|
47
|
-
value
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
class Regexp < Attribute
|
52
|
-
def self.encode(value)
|
53
|
-
value.inspect
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
class Hash < Attribute
|
58
|
-
def self.encode(value)
|
59
|
-
value = value.to_json if value.respond_to?(:to_json)
|
60
|
-
super(value)
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
class NilClass < Attribute
|
65
|
-
def self.encode(value)
|
66
|
-
'null'
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
Attribute = Attributes::Attribute
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
@@ -1,73 +0,0 @@
|
|
1
|
-
module Influxdb
|
2
|
-
module Arel
|
3
|
-
module Expressions
|
4
|
-
def count
|
5
|
-
Nodes::Count.new([self])
|
6
|
-
end
|
7
|
-
|
8
|
-
def sum
|
9
|
-
Nodes::Sum.new([self])
|
10
|
-
end
|
11
|
-
|
12
|
-
def max
|
13
|
-
Nodes::Max.new([self])
|
14
|
-
end
|
15
|
-
|
16
|
-
def min
|
17
|
-
Nodes::Min.new([self])
|
18
|
-
end
|
19
|
-
|
20
|
-
def mean
|
21
|
-
Nodes::Mean.new([self])
|
22
|
-
end
|
23
|
-
|
24
|
-
def mode
|
25
|
-
Nodes::Mode.new([self])
|
26
|
-
end
|
27
|
-
|
28
|
-
def median
|
29
|
-
Nodes::Median.new([self])
|
30
|
-
end
|
31
|
-
|
32
|
-
def distinct
|
33
|
-
Nodes::Distinct.new([self])
|
34
|
-
end
|
35
|
-
|
36
|
-
def percentile(nth)
|
37
|
-
Nodes::Percentile.new([self, nth])
|
38
|
-
end
|
39
|
-
|
40
|
-
def histogram(bucket_size = nil)
|
41
|
-
Nodes::Histogram.new([self, bucket_size || 1.0])
|
42
|
-
end
|
43
|
-
|
44
|
-
def derivative
|
45
|
-
Nodes::Derivative.new([self])
|
46
|
-
end
|
47
|
-
|
48
|
-
def stddev
|
49
|
-
Nodes::Stddev.new([self])
|
50
|
-
end
|
51
|
-
|
52
|
-
def first
|
53
|
-
Nodes::First.new([self])
|
54
|
-
end
|
55
|
-
|
56
|
-
def last
|
57
|
-
Nodes::Last.new([self])
|
58
|
-
end
|
59
|
-
|
60
|
-
def difference
|
61
|
-
Nodes::Difference.new([self])
|
62
|
-
end
|
63
|
-
|
64
|
-
def top(size)
|
65
|
-
Nodes::Top.new([self, size])
|
66
|
-
end
|
67
|
-
|
68
|
-
def bottom(size)
|
69
|
-
Nodes::Bottom.new([self, size])
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|
73
|
-
end
|