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,49 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module QueryBuilder::CQL
|
|
4
|
+
|
|
5
|
+
module Modifiers
|
|
6
|
+
|
|
7
|
+
# Provides LIMIT clauses for statements
|
|
8
|
+
#
|
|
9
|
+
module Limit
|
|
10
|
+
|
|
11
|
+
# Adds LIMIT clause to the statement
|
|
12
|
+
#
|
|
13
|
+
# @param [Integer] value
|
|
14
|
+
#
|
|
15
|
+
# @return [QueryBuilder::Core::Statement] updated statement
|
|
16
|
+
#
|
|
17
|
+
def limit(value)
|
|
18
|
+
self << Clause.new(value: value)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def maybe_limit
|
|
24
|
+
clauses(:limit)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# The clause for adding to a statement
|
|
28
|
+
#
|
|
29
|
+
# @api private
|
|
30
|
+
#
|
|
31
|
+
class Clause < Base
|
|
32
|
+
|
|
33
|
+
unique
|
|
34
|
+
type :limit
|
|
35
|
+
|
|
36
|
+
attribute :value, required: true
|
|
37
|
+
|
|
38
|
+
# @private
|
|
39
|
+
def to_s
|
|
40
|
+
"LIMIT #{value}"
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
end # class Clause
|
|
44
|
+
|
|
45
|
+
end # module Limit
|
|
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 NORECURSIVE clauses for statements
|
|
8
|
+
#
|
|
9
|
+
module Norecursive
|
|
10
|
+
|
|
11
|
+
# Adds NORECURSIVE clause to the statement
|
|
12
|
+
#
|
|
13
|
+
# @return [QueryBuilder::Core::Statement] updated statement
|
|
14
|
+
#
|
|
15
|
+
def norecursive
|
|
16
|
+
self << Clause.new
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
def maybe_norecursive
|
|
22
|
+
clauses(:norecursive)
|
|
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 :norecursive
|
|
33
|
+
|
|
34
|
+
# @private
|
|
35
|
+
def to_s
|
|
36
|
+
"NORECURSIVE"
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end # class Clause
|
|
40
|
+
|
|
41
|
+
end # module Norecursive
|
|
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 OR REPLACE clauses for statements
|
|
8
|
+
#
|
|
9
|
+
module OrReplace
|
|
10
|
+
|
|
11
|
+
# Adds OR REPLACE clause to the statement
|
|
12
|
+
#
|
|
13
|
+
# @return [QueryBuilder::Core::Statement] updated statement
|
|
14
|
+
#
|
|
15
|
+
def or_replace
|
|
16
|
+
self << Clause.new
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
def maybe_replace
|
|
22
|
+
clauses(:replace)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# The clause for adding to a statement
|
|
26
|
+
#
|
|
27
|
+
# @api private
|
|
28
|
+
#
|
|
29
|
+
class Clause < Base
|
|
30
|
+
|
|
31
|
+
type :replace
|
|
32
|
+
|
|
33
|
+
# @private
|
|
34
|
+
def to_s
|
|
35
|
+
"OR REPLACE"
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
end # class Clause
|
|
39
|
+
|
|
40
|
+
end # module OrReplace
|
|
41
|
+
|
|
42
|
+
end # module Modifiers
|
|
43
|
+
|
|
44
|
+
end # module QueryBuilder::CQL
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module QueryBuilder::CQL
|
|
4
|
+
|
|
5
|
+
module Modifiers
|
|
6
|
+
|
|
7
|
+
# Provides ORDER clauses for statements
|
|
8
|
+
#
|
|
9
|
+
module Order
|
|
10
|
+
|
|
11
|
+
# Adds 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 order(name, order = :asc)
|
|
19
|
+
self << Clause.new(name: name, desc: order.equal?(:desc))
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
private
|
|
23
|
+
|
|
24
|
+
def maybe_order
|
|
25
|
+
clauses(:order)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# The clause for adding to a statement
|
|
29
|
+
#
|
|
30
|
+
# @api private
|
|
31
|
+
#
|
|
32
|
+
class Clause < Base
|
|
33
|
+
|
|
34
|
+
unique
|
|
35
|
+
type :order
|
|
36
|
+
attribute :name, required: true
|
|
37
|
+
attribute :desc, default: false
|
|
38
|
+
|
|
39
|
+
# @private
|
|
40
|
+
def to_s
|
|
41
|
+
"ORDER BY (#{name} #{desc ? "DESC" : "ASC"})"
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end # class Clause
|
|
45
|
+
|
|
46
|
+
end # module Order
|
|
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 PASSWORD clauses for statements
|
|
8
|
+
#
|
|
9
|
+
module Password
|
|
10
|
+
|
|
11
|
+
# Adds PASSWORD clause to the statement
|
|
12
|
+
#
|
|
13
|
+
# @param [#to_s] name
|
|
14
|
+
#
|
|
15
|
+
# @return [QueryBuilder::Core::Statement] updated statement
|
|
16
|
+
#
|
|
17
|
+
def password(name)
|
|
18
|
+
self << Clause.new(name: name)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def maybe_with
|
|
24
|
+
list = clauses(:with)
|
|
25
|
+
["WITH", list.join(" AND ")] if list.any?
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# The clause for adding to a statement
|
|
29
|
+
#
|
|
30
|
+
# @api private
|
|
31
|
+
#
|
|
32
|
+
class Clause < Base
|
|
33
|
+
|
|
34
|
+
unique
|
|
35
|
+
type :with
|
|
36
|
+
attribute :name, required: true
|
|
37
|
+
|
|
38
|
+
# @private
|
|
39
|
+
def to_s
|
|
40
|
+
"PASSWORD #{cql_literal[name]}"
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
end # class Clause
|
|
44
|
+
|
|
45
|
+
end # module Superuser
|
|
46
|
+
|
|
47
|
+
end # module Modifiers
|
|
48
|
+
|
|
49
|
+
end # module QueryBuilder::CQL
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module QueryBuilder::CQL
|
|
4
|
+
|
|
5
|
+
module Modifiers
|
|
6
|
+
|
|
7
|
+
# Provides PRIMARY KEY clause for a statement
|
|
8
|
+
#
|
|
9
|
+
module PrimaryKey
|
|
10
|
+
|
|
11
|
+
# Defines a primary key for the table
|
|
12
|
+
#
|
|
13
|
+
# @param [#to_s, Array<#to_s>] columns
|
|
14
|
+
#
|
|
15
|
+
# @return [QueryBuilder::Core::Statement] updated statement
|
|
16
|
+
#
|
|
17
|
+
def primary_key(*columns)
|
|
18
|
+
self << Clause.new(columns: columns)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def maybe_columns
|
|
24
|
+
"(#{(clauses(:column) + clauses(:primary_key)).compact.join(", ")})"
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# The clause for adding to a statement
|
|
28
|
+
#
|
|
29
|
+
# @api private
|
|
30
|
+
#
|
|
31
|
+
class Clause < Base
|
|
32
|
+
|
|
33
|
+
unique
|
|
34
|
+
type :primary_key
|
|
35
|
+
attribute :columns, required: true
|
|
36
|
+
|
|
37
|
+
# Returns the CQL representation of the clause
|
|
38
|
+
#
|
|
39
|
+
# @return [String]
|
|
40
|
+
#
|
|
41
|
+
def to_s
|
|
42
|
+
["PRIMARY KEY", "(#{columns.join(", ")})"].join(" ")
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end # class Clause
|
|
46
|
+
|
|
47
|
+
end # module PrimaryKey
|
|
48
|
+
|
|
49
|
+
end # module Modifiers
|
|
50
|
+
|
|
51
|
+
end # module QueryBuilder::CQL
|
|
@@ -0,0 +1,49 @@
|
|
|
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 Returns
|
|
12
|
+
|
|
13
|
+
# Adds return type to the index
|
|
14
|
+
#
|
|
15
|
+
# @param [#to_s] type
|
|
16
|
+
#
|
|
17
|
+
# @return [QueryBuilder::Core::Statement] updated statement
|
|
18
|
+
#
|
|
19
|
+
def returns(type)
|
|
20
|
+
self << Clause.new(type_name: type)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
private
|
|
24
|
+
|
|
25
|
+
def maybe_returns
|
|
26
|
+
clauses(:returns)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# The clause for adding to a statement
|
|
30
|
+
#
|
|
31
|
+
# @api private
|
|
32
|
+
#
|
|
33
|
+
class Clause < Base
|
|
34
|
+
|
|
35
|
+
type :returns
|
|
36
|
+
attribute :type_name, required: true
|
|
37
|
+
|
|
38
|
+
# @private
|
|
39
|
+
def to_s
|
|
40
|
+
"RETURNS #{type_name}"
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
end # class Clause
|
|
44
|
+
|
|
45
|
+
end # module Returns
|
|
46
|
+
|
|
47
|
+
end # module Modifiers
|
|
48
|
+
|
|
49
|
+
end # module QueryBuilder::CQL
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module QueryBuilder::CQL
|
|
4
|
+
|
|
5
|
+
module Modifiers
|
|
6
|
+
|
|
7
|
+
# Provides the list of selected columns for SELECT statement
|
|
8
|
+
#
|
|
9
|
+
module Selected
|
|
10
|
+
|
|
11
|
+
# Adds a column
|
|
12
|
+
#
|
|
13
|
+
# @param [Array] values
|
|
14
|
+
#
|
|
15
|
+
# @return [QueryBuilder::Core::Statement] updated statement
|
|
16
|
+
#
|
|
17
|
+
def select(*values)
|
|
18
|
+
return self if values.empty?
|
|
19
|
+
hash = values.last.instance_of?(Hash) ? values.pop : {}
|
|
20
|
+
list = values.map { |name| Clause.new(name: name) }
|
|
21
|
+
list += hash.map { |as, name| Clause.new(name: name, as: as) }
|
|
22
|
+
list.inject(self, :<<)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
private
|
|
26
|
+
|
|
27
|
+
def maybe_selected
|
|
28
|
+
list = clauses(:selected)
|
|
29
|
+
list.any? ? list.join(", ") : "*"
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# The clause for adding to a statement
|
|
33
|
+
#
|
|
34
|
+
# @api private
|
|
35
|
+
#
|
|
36
|
+
class Clause < Base
|
|
37
|
+
|
|
38
|
+
type :selected
|
|
39
|
+
|
|
40
|
+
attribute :name, required: true
|
|
41
|
+
attribute :as
|
|
42
|
+
|
|
43
|
+
# @private
|
|
44
|
+
def to_s
|
|
45
|
+
[name, (as ? "AS" : nil), as].compact.join(" ")
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
end # class Clause
|
|
49
|
+
|
|
50
|
+
end # module Selected
|
|
51
|
+
|
|
52
|
+
end # module Modifiers
|
|
53
|
+
|
|
54
|
+
end # module QueryBuilder::CQL
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module QueryBuilder::CQL
|
|
4
|
+
|
|
5
|
+
module Modifiers
|
|
6
|
+
|
|
7
|
+
# Provides SFUNC clauses for statements
|
|
8
|
+
#
|
|
9
|
+
module Sfunc
|
|
10
|
+
|
|
11
|
+
# Adds SFUNC clause to the statement
|
|
12
|
+
#
|
|
13
|
+
# @param [#to_s] name
|
|
14
|
+
#
|
|
15
|
+
# @return [QueryBuilder::Core::Statement] updated statement
|
|
16
|
+
#
|
|
17
|
+
def sfunc(name)
|
|
18
|
+
self << Clause.new(name: name)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def maybe_functions
|
|
24
|
+
clauses(:function).join(" ")
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# The clause for adding to a statement
|
|
28
|
+
#
|
|
29
|
+
# @api private
|
|
30
|
+
#
|
|
31
|
+
class Clause < Base
|
|
32
|
+
|
|
33
|
+
type :function
|
|
34
|
+
attribute :name, required: true
|
|
35
|
+
|
|
36
|
+
# @private
|
|
37
|
+
def to_s
|
|
38
|
+
"SFUNC #{name}"
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
end # class Clause
|
|
42
|
+
|
|
43
|
+
end # module Sfunc
|
|
44
|
+
|
|
45
|
+
end # module Modifiers
|
|
46
|
+
|
|
47
|
+
end # module QueryBuilder::CQL
|