query_builder 0.0.1
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 +7 -0
- data/.coveralls.yml +2 -0
- data/.gitignore +9 -0
- data/.metrics +9 -0
- data/.rspec +2 -0
- data/.rubocop.yml +2 -0
- data/.travis.yml +25 -0
- data/.yardopts +3 -0
- data/CHANGELOG.md +5 -0
- data/Gemfile +7 -0
- data/Guardfile +14 -0
- data/LICENSE +21 -0
- data/README.md +95 -0
- data/Rakefile +34 -0
- data/config/metrics/STYLEGUIDE +230 -0
- data/config/metrics/cane.yml +5 -0
- data/config/metrics/churn.yml +6 -0
- data/config/metrics/flay.yml +2 -0
- data/config/metrics/metric_fu.yml +14 -0
- data/config/metrics/reek.yml +1 -0
- data/config/metrics/roodi.yml +24 -0
- data/config/metrics/rubocop.yml +80 -0
- data/config/metrics/saikuro.yml +3 -0
- data/config/metrics/simplecov.yml +6 -0
- data/config/metrics/yardstick.yml +37 -0
- data/lib/query_builder.rb +9 -0
- data/lib/query_builder/core.rb +19 -0
- data/lib/query_builder/core/attribute.rb +54 -0
- data/lib/query_builder/core/attribute_error.rb +25 -0
- data/lib/query_builder/core/base.rb +102 -0
- data/lib/query_builder/core/clause.rb +46 -0
- data/lib/query_builder/core/statement.rb +55 -0
- data/lib/query_builder/cql.rb +80 -0
- data/lib/query_builder/cql/contexts.rb +21 -0
- data/lib/query_builder/cql/contexts/aggregate.rb +42 -0
- data/lib/query_builder/cql/contexts/column.rb +59 -0
- data/lib/query_builder/cql/contexts/field.rb +48 -0
- data/lib/query_builder/cql/contexts/function.rb +46 -0
- data/lib/query_builder/cql/contexts/index.rb +44 -0
- data/lib/query_builder/cql/contexts/keyspace.rb +107 -0
- data/lib/query_builder/cql/contexts/permission.rb +59 -0
- data/lib/query_builder/cql/contexts/role.rb +51 -0
- data/lib/query_builder/cql/contexts/table.rb +140 -0
- data/lib/query_builder/cql/contexts/trigger.rb +42 -0
- data/lib/query_builder/cql/contexts/type.rb +52 -0
- data/lib/query_builder/cql/contexts/user.rb +53 -0
- data/lib/query_builder/cql/modifiers.rb +61 -0
- data/lib/query_builder/cql/modifiers/add_column.rb +50 -0
- data/lib/query_builder/cql/modifiers/add_field.rb +49 -0
- data/lib/query_builder/cql/modifiers/allow_filtering.rb +45 -0
- data/lib/query_builder/cql/modifiers/alter.rb +44 -0
- data/lib/query_builder/cql/modifiers/called_on_null.rb +47 -0
- data/lib/query_builder/cql/modifiers/clustering_order.rb +51 -0
- data/lib/query_builder/cql/modifiers/column.rb +59 -0
- data/lib/query_builder/cql/modifiers/compact_storage.rb +46 -0
- data/lib/query_builder/cql/modifiers/count.rb +47 -0
- data/lib/query_builder/cql/modifiers/counter.rb +45 -0
- data/lib/query_builder/cql/modifiers/delete.rb +48 -0
- data/lib/query_builder/cql/modifiers/distinct.rb +45 -0
- data/lib/query_builder/cql/modifiers/finalfunc.rb +47 -0
- data/lib/query_builder/cql/modifiers/if.rb +44 -0
- data/lib/query_builder/cql/modifiers/if_exists.rb +46 -0
- data/lib/query_builder/cql/modifiers/if_not_exists.rb +46 -0
- data/lib/query_builder/cql/modifiers/initcond.rb +49 -0
- data/lib/query_builder/cql/modifiers/insert.rb +68 -0
- data/lib/query_builder/cql/modifiers/limit.rb +49 -0
- data/lib/query_builder/cql/modifiers/norecursive.rb +45 -0
- data/lib/query_builder/cql/modifiers/or_replace.rb +44 -0
- data/lib/query_builder/cql/modifiers/order.rb +50 -0
- data/lib/query_builder/cql/modifiers/password.rb +49 -0
- data/lib/query_builder/cql/modifiers/primary_key.rb +51 -0
- data/lib/query_builder/cql/modifiers/returns.rb +49 -0
- data/lib/query_builder/cql/modifiers/selected.rb +54 -0
- data/lib/query_builder/cql/modifiers/sfunc.rb +47 -0
- data/lib/query_builder/cql/modifiers/statement.rb +47 -0
- data/lib/query_builder/cql/modifiers/stype.rb +47 -0
- data/lib/query_builder/cql/modifiers/superuser.rb +54 -0
- data/lib/query_builder/cql/modifiers/timestamp.rb +50 -0
- data/lib/query_builder/cql/modifiers/unlogged.rb +45 -0
- data/lib/query_builder/cql/modifiers/update.rb +44 -0
- data/lib/query_builder/cql/modifiers/using.rb +48 -0
- data/lib/query_builder/cql/modifiers/using_options.rb +51 -0
- data/lib/query_builder/cql/modifiers/where.rb +44 -0
- data/lib/query_builder/cql/modifiers/where_clustered.rb +51 -0
- data/lib/query_builder/cql/modifiers/with.rb +44 -0
- data/lib/query_builder/cql/modifiers/with_options.rb +42 -0
- data/lib/query_builder/cql/operators.rb +29 -0
- data/lib/query_builder/cql/operators/cql.rb +23 -0
- data/lib/query_builder/cql/operators/cql_composite.rb +20 -0
- data/lib/query_builder/cql/operators/cql_dec.rb +21 -0
- data/lib/query_builder/cql/operators/cql_element.rb +23 -0
- data/lib/query_builder/cql/operators/cql_entries.rb +20 -0
- data/lib/query_builder/cql/operators/cql_frozen.rb +20 -0
- data/lib/query_builder/cql/operators/cql_full.rb +20 -0
- data/lib/query_builder/cql/operators/cql_gt.rb +23 -0
- data/lib/query_builder/cql/operators/cql_gte.rb +23 -0
- data/lib/query_builder/cql/operators/cql_in.rb +23 -0
- data/lib/query_builder/cql/operators/cql_inc.rb +21 -0
- data/lib/query_builder/cql/operators/cql_keys.rb +20 -0
- data/lib/query_builder/cql/operators/cql_list.rb +21 -0
- data/lib/query_builder/cql/operators/cql_literal.rb +84 -0
- data/lib/query_builder/cql/operators/cql_lt.rb +23 -0
- data/lib/query_builder/cql/operators/cql_lte.rb +23 -0
- data/lib/query_builder/cql/operators/cql_map.rb +25 -0
- data/lib/query_builder/cql/operators/cql_set.rb +21 -0
- data/lib/query_builder/cql/operators/cql_token.rb +21 -0
- data/lib/query_builder/cql/operators/cql_token_value.rb +23 -0
- data/lib/query_builder/cql/operators/cql_ttl.rb +20 -0
- data/lib/query_builder/cql/operators/cql_tuple.rb +21 -0
- data/lib/query_builder/cql/operators/cql_tuple_value.rb +23 -0
- data/lib/query_builder/cql/operators/cql_writetime.rb +20 -0
- data/lib/query_builder/cql/statements.rb +25 -0
- data/lib/query_builder/cql/statements/alter_column.rb +27 -0
- data/lib/query_builder/cql/statements/alter_field.rb +27 -0
- data/lib/query_builder/cql/statements/alter_keyspace.rb +25 -0
- data/lib/query_builder/cql/statements/alter_role.rb +26 -0
- data/lib/query_builder/cql/statements/alter_table.rb +25 -0
- data/lib/query_builder/cql/statements/alter_user.rb +26 -0
- data/lib/query_builder/cql/statements/batch.rb +31 -0
- data/lib/query_builder/cql/statements/create_aggregate.rb +36 -0
- data/lib/query_builder/cql/statements/create_column.rb +35 -0
- data/lib/query_builder/cql/statements/create_field.rb +25 -0
- data/lib/query_builder/cql/statements/create_function.rb +38 -0
- data/lib/query_builder/cql/statements/create_index.rb +41 -0
- data/lib/query_builder/cql/statements/create_keyspace.rb +26 -0
- data/lib/query_builder/cql/statements/create_role.rb +26 -0
- data/lib/query_builder/cql/statements/create_table.rb +30 -0
- data/lib/query_builder/cql/statements/create_trigger.rb +29 -0
- data/lib/query_builder/cql/statements/create_type.rb +26 -0
- data/lib/query_builder/cql/statements/create_user.rb +27 -0
- data/lib/query_builder/cql/statements/delete.rb +32 -0
- data/lib/query_builder/cql/statements/drop_aggregate.rb +25 -0
- data/lib/query_builder/cql/statements/drop_column.rb +23 -0
- data/lib/query_builder/cql/statements/drop_function.rb +25 -0
- data/lib/query_builder/cql/statements/drop_index.rb +25 -0
- data/lib/query_builder/cql/statements/drop_keyspace.rb +25 -0
- data/lib/query_builder/cql/statements/drop_role.rb +25 -0
- data/lib/query_builder/cql/statements/drop_table.rb +25 -0
- data/lib/query_builder/cql/statements/drop_trigger.rb +25 -0
- data/lib/query_builder/cql/statements/drop_type.rb +25 -0
- data/lib/query_builder/cql/statements/drop_user.rb +25 -0
- data/lib/query_builder/cql/statements/grant.rb +31 -0
- data/lib/query_builder/cql/statements/insert.rb +27 -0
- data/lib/query_builder/cql/statements/list_permissions.rb +35 -0
- data/lib/query_builder/cql/statements/list_roles.rb +23 -0
- data/lib/query_builder/cql/statements/list_users.rb +23 -0
- data/lib/query_builder/cql/statements/rename_column.rb +27 -0
- data/lib/query_builder/cql/statements/rename_field.rb +25 -0
- data/lib/query_builder/cql/statements/revoke.rb +31 -0
- data/lib/query_builder/cql/statements/select.rb +35 -0
- data/lib/query_builder/cql/statements/truncate.rb +23 -0
- data/lib/query_builder/cql/statements/update.rb +31 -0
- data/lib/query_builder/cql/statements/use.rb +23 -0
- data/lib/query_builder/rspec.rb +25 -0
- data/lib/query_builder/version.rb +9 -0
- data/query_builder.gemspec +31 -0
- data/spec/integration/alter_keyspace_spec.rb +17 -0
- data/spec/integration/alter_role_spec.rb +28 -0
- data/spec/integration/alter_table_add_spec.rb +21 -0
- data/spec/integration/alter_table_alter_spec.rb +15 -0
- data/spec/integration/alter_table_drop_spec.rb +15 -0
- data/spec/integration/alter_table_rename_spec.rb +15 -0
- data/spec/integration/alter_table_with_spec.rb +17 -0
- data/spec/integration/alter_type_add_spec.rb +15 -0
- data/spec/integration/alter_type_alter_spec.rb +15 -0
- data/spec/integration/alter_type_rename_spec.rb +15 -0
- data/spec/integration/alter_user_spec.rb +28 -0
- data/spec/integration/batch_spec.rb +32 -0
- data/spec/integration/create_aggregate_spec.rb +31 -0
- data/spec/integration/create_function_spec.rb +29 -0
- data/spec/integration/create_index_spec.rb +35 -0
- data/spec/integration/create_keyspace_spec.rb +24 -0
- data/spec/integration/create_role_spec.rb +26 -0
- data/spec/integration/create_table_spec.rb +34 -0
- data/spec/integration/create_trigger_spec.rb +21 -0
- data/spec/integration/create_type_spec.rb +20 -0
- data/spec/integration/create_user_spec.rb +23 -0
- data/spec/integration/delete_spec.rb +28 -0
- data/spec/integration/drop_aggregate_spec.rb +21 -0
- data/spec/integration/drop_function_spec.rb +21 -0
- data/spec/integration/drop_index_spec.rb +21 -0
- data/spec/integration/drop_keyspace_spec.rb +18 -0
- data/spec/integration/drop_role_spec.rb +18 -0
- data/spec/integration/drop_table_spec.rb +18 -0
- data/spec/integration/drop_trigger_spec.rb +21 -0
- data/spec/integration/drop_type_spec.rb +18 -0
- data/spec/integration/drop_user_spec.rb +18 -0
- data/spec/integration/grant_spec.rb +29 -0
- data/spec/integration/insert_spec.rb +22 -0
- data/spec/integration/list_permissions_spec.rb +34 -0
- data/spec/integration/list_roles_spec.rb +12 -0
- data/spec/integration/list_users_spec.rb +12 -0
- data/spec/integration/revoke_spec.rb +29 -0
- data/spec/integration/select_spec.rb +46 -0
- data/spec/integration/truncate_spec.rb +12 -0
- data/spec/integration/update_spec.rb +23 -0
- data/spec/integration/use_spec.rb +12 -0
- data/spec/spec_helper.rb +16 -0
- data/spec/unit/core/attribute_error_spec.rb +38 -0
- data/spec/unit/core/attribute_spec.rb +70 -0
- data/spec/unit/core/base_spec.rb +110 -0
- data/spec/unit/core/clause_spec.rb +101 -0
- data/spec/unit/core/statement_spec.rb +88 -0
- data/spec/unit/cql/operators/cql_composite_spec.rb +12 -0
- data/spec/unit/cql/operators/cql_dec_spec.rb +12 -0
- data/spec/unit/cql/operators/cql_element_spec.rb +12 -0
- data/spec/unit/cql/operators/cql_entries_spec.rb +12 -0
- data/spec/unit/cql/operators/cql_frozen_spec.rb +12 -0
- data/spec/unit/cql/operators/cql_full_spec.rb +12 -0
- data/spec/unit/cql/operators/cql_gt_spec.rb +19 -0
- data/spec/unit/cql/operators/cql_gte_spec.rb +19 -0
- data/spec/unit/cql/operators/cql_in_spec.rb +12 -0
- data/spec/unit/cql/operators/cql_inc_spec.rb +12 -0
- data/spec/unit/cql/operators/cql_keys_spec.rb +12 -0
- data/spec/unit/cql/operators/cql_list_spec.rb +12 -0
- data/spec/unit/cql/operators/cql_literal_spec.rb +83 -0
- data/spec/unit/cql/operators/cql_lt_spec.rb +19 -0
- data/spec/unit/cql/operators/cql_lte_spec.rb +19 -0
- data/spec/unit/cql/operators/cql_map_spec.rb +12 -0
- data/spec/unit/cql/operators/cql_set_spec.rb +12 -0
- data/spec/unit/cql/operators/cql_spec.rb +12 -0
- data/spec/unit/cql/operators/cql_token_spec.rb +12 -0
- data/spec/unit/cql/operators/cql_token_value_spec.rb +12 -0
- data/spec/unit/cql/operators/cql_ttl_spec.rb +12 -0
- data/spec/unit/cql/operators/cql_tuple_spec.rb +12 -0
- data/spec/unit/cql/operators/cql_tuple_value_spec.rb +12 -0
- data/spec/unit/cql/operators/cql_writetime_spec.rb +12 -0
- data/spec/unit/cql/operators_spec.rb +66 -0
- metadata +405 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module QueryBuilder::CQL
|
|
4
|
+
|
|
5
|
+
module Modifiers
|
|
6
|
+
|
|
7
|
+
# Provides column for CREATE INDEX statement
|
|
8
|
+
#
|
|
9
|
+
# @api public
|
|
10
|
+
#
|
|
11
|
+
module AddColumn
|
|
12
|
+
|
|
13
|
+
# Adds columns to the index
|
|
14
|
+
#
|
|
15
|
+
# @param [#to_s, Array<#to_s>] cols
|
|
16
|
+
#
|
|
17
|
+
# @return [QueryBuilder::Core::Statement] updated statement
|
|
18
|
+
#
|
|
19
|
+
def add(*cols)
|
|
20
|
+
cols.map { |col| Clause.new(name: col) }.inject(self, :<<)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
private
|
|
24
|
+
|
|
25
|
+
def maybe_columns
|
|
26
|
+
"(#{clauses(:column).join(", ")})"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# The clause for adding to a statement
|
|
30
|
+
#
|
|
31
|
+
# @api private
|
|
32
|
+
#
|
|
33
|
+
class Clause < Base
|
|
34
|
+
|
|
35
|
+
type :column
|
|
36
|
+
attribute :name, required: true
|
|
37
|
+
|
|
38
|
+
# @private
|
|
39
|
+
def to_s
|
|
40
|
+
return name.to_s unless name.instance_of? Array
|
|
41
|
+
"(#{name.join(", ")})"
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end # class Clause
|
|
45
|
+
|
|
46
|
+
end # module AddColumn
|
|
47
|
+
|
|
48
|
+
end # module Modifiers
|
|
49
|
+
|
|
50
|
+
end # module QueryBuilder::CQL
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module QueryBuilder::CQL
|
|
4
|
+
|
|
5
|
+
module Modifiers
|
|
6
|
+
|
|
7
|
+
# Provides fields for CREATE TYPE statement
|
|
8
|
+
#
|
|
9
|
+
module AddField
|
|
10
|
+
|
|
11
|
+
# Adds field to the type
|
|
12
|
+
#
|
|
13
|
+
# @param [#to_s] name
|
|
14
|
+
# @param [#to_s] type
|
|
15
|
+
#
|
|
16
|
+
# @return [QueryBuilder::Core::Statement] updated statement
|
|
17
|
+
#
|
|
18
|
+
def add(name, type)
|
|
19
|
+
self << Clause.new(name: name, type_name: type)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
private
|
|
23
|
+
|
|
24
|
+
def maybe_fields
|
|
25
|
+
"(#{clauses(:column).join(", ")})"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# The clause for adding to a statement
|
|
29
|
+
#
|
|
30
|
+
# @api private
|
|
31
|
+
#
|
|
32
|
+
class Clause < Base
|
|
33
|
+
|
|
34
|
+
type :column
|
|
35
|
+
attribute :name, required: true
|
|
36
|
+
attribute :type_name, required: true
|
|
37
|
+
|
|
38
|
+
# @private
|
|
39
|
+
def to_s
|
|
40
|
+
[name, type_name].join(" ")
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
end # class Clause
|
|
44
|
+
|
|
45
|
+
end # module AddField
|
|
46
|
+
|
|
47
|
+
end # module Modifiers
|
|
48
|
+
|
|
49
|
+
end # module QueryBuilder::CQL
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module QueryBuilder::CQL
|
|
4
|
+
|
|
5
|
+
module Modifiers
|
|
6
|
+
|
|
7
|
+
# Provides ALLOW FILTERING clauses for statements
|
|
8
|
+
#
|
|
9
|
+
module AllowFiltering
|
|
10
|
+
|
|
11
|
+
# Adds ALLOW FILTERING clause to the statement
|
|
12
|
+
#
|
|
13
|
+
# @return [QueryBuilder::Core::Statement] updated statement
|
|
14
|
+
#
|
|
15
|
+
def allow_filtering
|
|
16
|
+
self << Clause.new
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
def maybe_filter
|
|
22
|
+
clauses(:filter)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# The clause for adding to a statement
|
|
26
|
+
#
|
|
27
|
+
# @api private
|
|
28
|
+
#
|
|
29
|
+
class Clause < Base
|
|
30
|
+
|
|
31
|
+
unique
|
|
32
|
+
type :filter
|
|
33
|
+
|
|
34
|
+
# @private
|
|
35
|
+
def to_s
|
|
36
|
+
"ALLOW FILTERING"
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end # class Clause
|
|
40
|
+
|
|
41
|
+
end # module AllowFiltering
|
|
42
|
+
|
|
43
|
+
end # module Modifiers
|
|
44
|
+
|
|
45
|
+
end # module QueryBuilder::CQL
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module QueryBuilder::CQL
|
|
4
|
+
|
|
5
|
+
module Modifiers
|
|
6
|
+
|
|
7
|
+
# Provides WITH clauses for statements like ALTER TABLE
|
|
8
|
+
#
|
|
9
|
+
module Alter
|
|
10
|
+
|
|
11
|
+
# Adds WITH clause to the statement
|
|
12
|
+
#
|
|
13
|
+
# @param [Hash] options
|
|
14
|
+
#
|
|
15
|
+
# @return [QueryBuilder::Core::Statement] updated statement
|
|
16
|
+
#
|
|
17
|
+
def alter(options)
|
|
18
|
+
options
|
|
19
|
+
.map { |key, value| Clause.new(column: key, value: value) }
|
|
20
|
+
.inject(self, :<<)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
private
|
|
24
|
+
|
|
25
|
+
def maybe_with
|
|
26
|
+
list = clauses(:with)
|
|
27
|
+
["WITH", list.join(" AND ")] if list.any?
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# The clause for adding to a statement
|
|
31
|
+
#
|
|
32
|
+
# @api private
|
|
33
|
+
#
|
|
34
|
+
class Clause < BaseCondition
|
|
35
|
+
|
|
36
|
+
type :with
|
|
37
|
+
|
|
38
|
+
end # class Clause
|
|
39
|
+
|
|
40
|
+
end # module Alter
|
|
41
|
+
|
|
42
|
+
end # module Modifiers
|
|
43
|
+
|
|
44
|
+
end # module QueryBuilder::CQL
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module QueryBuilder::CQL
|
|
4
|
+
|
|
5
|
+
module Modifiers
|
|
6
|
+
|
|
7
|
+
# Provides column for CALLED ON NULL statement
|
|
8
|
+
#
|
|
9
|
+
# @api public
|
|
10
|
+
#
|
|
11
|
+
module CalledOnNull
|
|
12
|
+
|
|
13
|
+
# Adds CALLED ON NULL to the index
|
|
14
|
+
#
|
|
15
|
+
# @return [QueryBuilder::Core::Statement] updated statement
|
|
16
|
+
#
|
|
17
|
+
def called_on_null
|
|
18
|
+
self << Clause.new
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def maybe_called
|
|
24
|
+
called = clauses(:called).last
|
|
25
|
+
[(called ? called : "RETURNS NULL"), "ON NULL INPUT"].join(" ")
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# The clause for adding to a statement
|
|
29
|
+
#
|
|
30
|
+
# @api private
|
|
31
|
+
#
|
|
32
|
+
class Clause < Base
|
|
33
|
+
|
|
34
|
+
type :called
|
|
35
|
+
|
|
36
|
+
# @private
|
|
37
|
+
def to_s
|
|
38
|
+
"CALLED"
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
end # class Clause
|
|
42
|
+
|
|
43
|
+
end # module CalledOnNull
|
|
44
|
+
|
|
45
|
+
end # module Modifiers
|
|
46
|
+
|
|
47
|
+
end # module QueryBuilder::CQL
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module QueryBuilder::CQL
|
|
4
|
+
|
|
5
|
+
module Modifiers
|
|
6
|
+
|
|
7
|
+
# Provides CLUSTERING ORDER clauses for statements
|
|
8
|
+
#
|
|
9
|
+
module ClusteringOrder
|
|
10
|
+
|
|
11
|
+
# Adds CLUSTERNING ORDER clause to the statement
|
|
12
|
+
#
|
|
13
|
+
# @param [#to_s] name The name of the column
|
|
14
|
+
# @param [:asc, :desc] order The order of clustering
|
|
15
|
+
#
|
|
16
|
+
# @return [QueryBuilder::Core::Statement] updated statement
|
|
17
|
+
#
|
|
18
|
+
def clustering_order(name, order = :asc)
|
|
19
|
+
self << Clause.new(name: name, desc: order.equal?(:desc))
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
private
|
|
23
|
+
|
|
24
|
+
def maybe_where
|
|
25
|
+
list = clauses(:where)
|
|
26
|
+
["WHERE", list.join(" AND ")] if list.any?
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# The clause for adding to a statement
|
|
30
|
+
#
|
|
31
|
+
# @api private
|
|
32
|
+
#
|
|
33
|
+
class Clause < Base
|
|
34
|
+
|
|
35
|
+
unique
|
|
36
|
+
type :with
|
|
37
|
+
attribute :name, required: true
|
|
38
|
+
attribute :desc, default: false
|
|
39
|
+
|
|
40
|
+
# @private
|
|
41
|
+
def to_s
|
|
42
|
+
"CLUSTERING ORDER BY (#{name} #{desc ? "DESC" : "ASC"})"
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end # class Clause
|
|
46
|
+
|
|
47
|
+
end # module ClusteringOrder
|
|
48
|
+
|
|
49
|
+
end # module Modifiers
|
|
50
|
+
|
|
51
|
+
end # module QueryBuilder::CQL
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module QueryBuilder::CQL
|
|
4
|
+
|
|
5
|
+
module Modifiers
|
|
6
|
+
|
|
7
|
+
# Provides columns for CREATE TYPE statement
|
|
8
|
+
#
|
|
9
|
+
module Column
|
|
10
|
+
|
|
11
|
+
# Adds column to the table
|
|
12
|
+
#
|
|
13
|
+
# @param [#to_s] name
|
|
14
|
+
# @param [#to_s] type_name
|
|
15
|
+
# @param [Hash] options
|
|
16
|
+
# @option options [Boolean] :static
|
|
17
|
+
#
|
|
18
|
+
# @return [QueryBuilder::Core::Statement] updated statement
|
|
19
|
+
#
|
|
20
|
+
def add(name, type_name, options = {})
|
|
21
|
+
self << Clause
|
|
22
|
+
.new(name: name, type_name: type_name, static: options[:static])
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
private
|
|
26
|
+
|
|
27
|
+
def maybe_columns
|
|
28
|
+
"(#{(clauses(:column) + clauses(:primary_key)).compact.join(", ")})"
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# The clause for adding to a statement
|
|
32
|
+
#
|
|
33
|
+
# @api private
|
|
34
|
+
#
|
|
35
|
+
class Clause < Base
|
|
36
|
+
|
|
37
|
+
type :column
|
|
38
|
+
attribute :name, required: true
|
|
39
|
+
attribute :type_name, required: true
|
|
40
|
+
attribute :static, default: false
|
|
41
|
+
|
|
42
|
+
# @private
|
|
43
|
+
def to_s
|
|
44
|
+
[name, type_name, maybe_static].compact.join(" ")
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
private
|
|
48
|
+
|
|
49
|
+
def maybe_static
|
|
50
|
+
"STATIC" if static
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
end # class Clause
|
|
54
|
+
|
|
55
|
+
end # module Column
|
|
56
|
+
|
|
57
|
+
end # module Modifiers
|
|
58
|
+
|
|
59
|
+
end # module QueryBuilder::CQL
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module QueryBuilder::CQL
|
|
4
|
+
|
|
5
|
+
module Modifiers
|
|
6
|
+
|
|
7
|
+
# Provides COMPACT STORAGE clauses for statements
|
|
8
|
+
#
|
|
9
|
+
module CompactStorage
|
|
10
|
+
|
|
11
|
+
# Adds COMPACT STORAGE clause to the statement
|
|
12
|
+
#
|
|
13
|
+
# @return [QueryBuilder::Core::Statement] updated statement
|
|
14
|
+
#
|
|
15
|
+
def compact_storage
|
|
16
|
+
self << Clause.new
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
def maybe_where
|
|
22
|
+
list = clauses(:where)
|
|
23
|
+
["WHERE", list.join(" AND ")] if list.any?
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# The clause for adding to a statement
|
|
27
|
+
#
|
|
28
|
+
# @api private
|
|
29
|
+
#
|
|
30
|
+
class Clause < Base
|
|
31
|
+
|
|
32
|
+
unique
|
|
33
|
+
type :with
|
|
34
|
+
|
|
35
|
+
# @private
|
|
36
|
+
def to_s
|
|
37
|
+
"COMPACT STORAGE"
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end # class Clause
|
|
41
|
+
|
|
42
|
+
end # module CompactStorage
|
|
43
|
+
|
|
44
|
+
end # module Modifiers
|
|
45
|
+
|
|
46
|
+
end # module QueryBuilder::CQL
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module QueryBuilder::CQL
|
|
4
|
+
|
|
5
|
+
module Modifiers
|
|
6
|
+
|
|
7
|
+
# Provides COUNT(*|1) clause to SELECT statement
|
|
8
|
+
#
|
|
9
|
+
module Count
|
|
10
|
+
|
|
11
|
+
# Adds COUNT clause to the statement
|
|
12
|
+
#
|
|
13
|
+
# @param [Integer] value
|
|
14
|
+
#
|
|
15
|
+
# @return [QueryBuilder::Core::Statement] updated statement
|
|
16
|
+
#
|
|
17
|
+
def count(value = nil)
|
|
18
|
+
self << Clause.new(value: value)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def maybe_selected
|
|
24
|
+
list = clauses(:selected)
|
|
25
|
+
list.any? ? list.join(", ") : "*"
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# The clause for adding to a statement
|
|
29
|
+
#
|
|
30
|
+
# @api private
|
|
31
|
+
#
|
|
32
|
+
class Clause < Base
|
|
33
|
+
|
|
34
|
+
type :selected
|
|
35
|
+
attribute :value
|
|
36
|
+
|
|
37
|
+
def to_s
|
|
38
|
+
"COUNT(#{value ? value : "*"})"
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
end # class Clause
|
|
42
|
+
|
|
43
|
+
end # module Count
|
|
44
|
+
|
|
45
|
+
end # module Modifiers
|
|
46
|
+
|
|
47
|
+
end # module QueryBuilder::CQL
|