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,45 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module QueryBuilder::CQL
|
|
4
|
+
|
|
5
|
+
module Modifiers
|
|
6
|
+
|
|
7
|
+
# Provides COUNTER batch type
|
|
8
|
+
#
|
|
9
|
+
module Counter
|
|
10
|
+
|
|
11
|
+
# Adds a clause to the statement
|
|
12
|
+
#
|
|
13
|
+
# @return [QueryBuilder::Core::Statement] updated statement
|
|
14
|
+
#
|
|
15
|
+
def counter
|
|
16
|
+
self << Clause.new
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
def maybe_type
|
|
22
|
+
clauses(:type)
|
|
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 :type
|
|
33
|
+
|
|
34
|
+
# @private
|
|
35
|
+
def to_s
|
|
36
|
+
"COUNTER"
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end # class Clause
|
|
40
|
+
|
|
41
|
+
end # module Counter
|
|
42
|
+
|
|
43
|
+
end # module Modifiers
|
|
44
|
+
|
|
45
|
+
end # module QueryBuilder::CQL
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module QueryBuilder::CQL
|
|
4
|
+
|
|
5
|
+
module Modifiers
|
|
6
|
+
|
|
7
|
+
# Provides columns for DELETE statement
|
|
8
|
+
#
|
|
9
|
+
module Delete
|
|
10
|
+
|
|
11
|
+
# Adds columns that should be deleted
|
|
12
|
+
#
|
|
13
|
+
# @param [#to_s, Array<#to_s>] columns
|
|
14
|
+
#
|
|
15
|
+
# @return [QueryBuilder::Core::Statement] updated statement
|
|
16
|
+
#
|
|
17
|
+
def delete(*columns)
|
|
18
|
+
columns.map { |name| Clause.new(name: name) }.inject(self, :<<)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def maybe_columns
|
|
24
|
+
clauses(:column).join(", ")
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# The clause for adding to a statement
|
|
28
|
+
#
|
|
29
|
+
# @api private
|
|
30
|
+
#
|
|
31
|
+
class Clause < Base
|
|
32
|
+
|
|
33
|
+
type :column
|
|
34
|
+
attribute :name, required: true
|
|
35
|
+
|
|
36
|
+
# @private
|
|
37
|
+
def to_s
|
|
38
|
+
return name.to_s unless name.instance_of? Array
|
|
39
|
+
"(#{name.join(", ")})"
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end # class Clause
|
|
43
|
+
|
|
44
|
+
end # module Delete
|
|
45
|
+
|
|
46
|
+
end # module Modifiers
|
|
47
|
+
|
|
48
|
+
end # module QueryBuilder::CQL
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module QueryBuilder::CQL
|
|
4
|
+
|
|
5
|
+
module Modifiers
|
|
6
|
+
|
|
7
|
+
# Provides DISTINCT clauses for statements
|
|
8
|
+
#
|
|
9
|
+
module Distinct
|
|
10
|
+
|
|
11
|
+
# Adds DISTINCT clause to the statement
|
|
12
|
+
#
|
|
13
|
+
# @return [QueryBuilder::Core::Statement] updated statement
|
|
14
|
+
#
|
|
15
|
+
def distinct
|
|
16
|
+
self << Clause.new
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
def maybe_distinct
|
|
22
|
+
clauses(:distinct)
|
|
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 :distinct
|
|
33
|
+
|
|
34
|
+
# @private
|
|
35
|
+
def to_s
|
|
36
|
+
"DISTINCT"
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end # class Clause
|
|
40
|
+
|
|
41
|
+
end # module Distinct
|
|
42
|
+
|
|
43
|
+
end # module Modifiers
|
|
44
|
+
|
|
45
|
+
end # module QueryBuilder::CQL
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module QueryBuilder::CQL
|
|
4
|
+
|
|
5
|
+
module Modifiers
|
|
6
|
+
|
|
7
|
+
# Provides FINALFUNC clauses for statements
|
|
8
|
+
#
|
|
9
|
+
module Finalfunc
|
|
10
|
+
|
|
11
|
+
# Adds FINALFUNC clause to the statement
|
|
12
|
+
#
|
|
13
|
+
# @param [#to_s] name
|
|
14
|
+
#
|
|
15
|
+
# @return [QueryBuilder::Core::Statement] updated statement
|
|
16
|
+
#
|
|
17
|
+
def finalfunc(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
|
+
"FINALFUNC #{name}"
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
end # class Clause
|
|
42
|
+
|
|
43
|
+
end # module Finalfunc
|
|
44
|
+
|
|
45
|
+
end # module Modifiers
|
|
46
|
+
|
|
47
|
+
end # module QueryBuilder::CQL
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module QueryBuilder::CQL
|
|
4
|
+
|
|
5
|
+
module Modifiers
|
|
6
|
+
|
|
7
|
+
# Provides IF clauses for statements
|
|
8
|
+
#
|
|
9
|
+
module If
|
|
10
|
+
|
|
11
|
+
# Adds IF clause to the statement
|
|
12
|
+
#
|
|
13
|
+
# @param [Hash] options
|
|
14
|
+
#
|
|
15
|
+
# @return [QueryBuilder::Core::Statement] updated statement
|
|
16
|
+
#
|
|
17
|
+
def if(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_if
|
|
26
|
+
list = clauses(:if)
|
|
27
|
+
["IF", list.sort.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 :if
|
|
37
|
+
|
|
38
|
+
end # class Clause
|
|
39
|
+
|
|
40
|
+
end # module If
|
|
41
|
+
|
|
42
|
+
end # module Modifiers
|
|
43
|
+
|
|
44
|
+
end # module QueryBuilder::CQL
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module QueryBuilder::CQL
|
|
4
|
+
|
|
5
|
+
module Modifiers
|
|
6
|
+
|
|
7
|
+
# Provides IF EXISTS clauses for statements
|
|
8
|
+
#
|
|
9
|
+
module IfExists
|
|
10
|
+
|
|
11
|
+
# Adds IF EXISTS clause to the statement
|
|
12
|
+
#
|
|
13
|
+
# @return [QueryBuilder::Core::Statement] updated statement
|
|
14
|
+
#
|
|
15
|
+
def if_exists
|
|
16
|
+
self << Clause.new
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
def maybe_if
|
|
22
|
+
list = clauses(:if)
|
|
23
|
+
["IF", list.sort.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 :if
|
|
34
|
+
|
|
35
|
+
# @private
|
|
36
|
+
def to_s
|
|
37
|
+
"EXISTS"
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end # class Clause
|
|
41
|
+
|
|
42
|
+
end # module IfExists
|
|
43
|
+
|
|
44
|
+
end # module Modifiers
|
|
45
|
+
|
|
46
|
+
end # module QueryBuilder::CQL
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module QueryBuilder::CQL
|
|
4
|
+
|
|
5
|
+
module Modifiers
|
|
6
|
+
|
|
7
|
+
# Provides IF NOT EXISTS clauses for statements
|
|
8
|
+
#
|
|
9
|
+
module IfNotExists
|
|
10
|
+
|
|
11
|
+
# Adds IF NOT EXISTS clause to the statement
|
|
12
|
+
#
|
|
13
|
+
# @return [QueryBuilder::Core::Statement] updated statement
|
|
14
|
+
#
|
|
15
|
+
def if_not_exists
|
|
16
|
+
self << Clause.new
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
def maybe_if
|
|
22
|
+
list = clauses(:if)
|
|
23
|
+
["IF", list.sort.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 :if
|
|
34
|
+
|
|
35
|
+
# @private
|
|
36
|
+
def to_s
|
|
37
|
+
"NOT EXISTS"
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end # class Clause
|
|
41
|
+
|
|
42
|
+
end # module IfNotExists
|
|
43
|
+
|
|
44
|
+
end # module Modifiers
|
|
45
|
+
|
|
46
|
+
end # module QueryBuilder::CQL
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module QueryBuilder::CQL
|
|
4
|
+
|
|
5
|
+
module Modifiers
|
|
6
|
+
|
|
7
|
+
# Provides INITCOND clauses for statements
|
|
8
|
+
#
|
|
9
|
+
module Initcond
|
|
10
|
+
|
|
11
|
+
# Adds INITCOND clause to the statement
|
|
12
|
+
#
|
|
13
|
+
# @param [#to_s] left
|
|
14
|
+
# @param [#to_s] right
|
|
15
|
+
#
|
|
16
|
+
# @return [QueryBuilder::Core::Statement] updated statement
|
|
17
|
+
#
|
|
18
|
+
def initcond(left, right)
|
|
19
|
+
self << Clause.new(left: left, right: right)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
private
|
|
23
|
+
|
|
24
|
+
def maybe_functions
|
|
25
|
+
clauses(:function).join(" ")
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# The clause for adding to a statement
|
|
29
|
+
#
|
|
30
|
+
# @api private
|
|
31
|
+
#
|
|
32
|
+
class Clause < Base
|
|
33
|
+
|
|
34
|
+
type :function
|
|
35
|
+
attribute :left, required: true
|
|
36
|
+
attribute :right, required: true
|
|
37
|
+
|
|
38
|
+
# @private
|
|
39
|
+
def to_s
|
|
40
|
+
"INITCOND (#{left}, #{right})"
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
end # class Clause
|
|
44
|
+
|
|
45
|
+
end # module Initcond
|
|
46
|
+
|
|
47
|
+
end # module Modifiers
|
|
48
|
+
|
|
49
|
+
end # module QueryBuilder::CQL
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module QueryBuilder::CQL
|
|
4
|
+
|
|
5
|
+
module Modifiers
|
|
6
|
+
|
|
7
|
+
# Provides columns and values for INSERT statement
|
|
8
|
+
#
|
|
9
|
+
module Insert
|
|
10
|
+
|
|
11
|
+
# Defines value to be inserted
|
|
12
|
+
#
|
|
13
|
+
# @param [Hash] options
|
|
14
|
+
#
|
|
15
|
+
# @return [QueryBuilder::Core::Statement] updated statement
|
|
16
|
+
#
|
|
17
|
+
def insert(options)
|
|
18
|
+
options
|
|
19
|
+
.flat_map { |k, v| [Column.new(name: k), Value.new(name: v)] }
|
|
20
|
+
.inject(self, :<<)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
private
|
|
24
|
+
|
|
25
|
+
def maybe_insert
|
|
26
|
+
[:column, :value]
|
|
27
|
+
.map { |type| "(#{clauses(type).join(", ")})" }
|
|
28
|
+
.join(" VALUES ")
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# The clause defining a column
|
|
32
|
+
#
|
|
33
|
+
# @api private
|
|
34
|
+
#
|
|
35
|
+
class Column < Base
|
|
36
|
+
|
|
37
|
+
type :column
|
|
38
|
+
attribute :name, required: true
|
|
39
|
+
|
|
40
|
+
# @private
|
|
41
|
+
def to_s
|
|
42
|
+
return name.to_s unless name.instance_of? Array
|
|
43
|
+
"(#{name.join(", ")})"
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end # class Column
|
|
47
|
+
|
|
48
|
+
# The clause defining a value
|
|
49
|
+
#
|
|
50
|
+
# @api private
|
|
51
|
+
#
|
|
52
|
+
class Value < Base
|
|
53
|
+
|
|
54
|
+
type :value
|
|
55
|
+
attribute :name, required: true
|
|
56
|
+
|
|
57
|
+
# @private
|
|
58
|
+
def to_s
|
|
59
|
+
cql_literal[name]
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
end # class Value
|
|
63
|
+
|
|
64
|
+
end # module Insert
|
|
65
|
+
|
|
66
|
+
end # module Modifiers
|
|
67
|
+
|
|
68
|
+
end # module QueryBuilder::CQL
|