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,59 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module QueryBuilder::CQL
|
|
4
|
+
|
|
5
|
+
module Contexts
|
|
6
|
+
|
|
7
|
+
# Describes the Cassandra table index
|
|
8
|
+
#
|
|
9
|
+
class Permission < Base
|
|
10
|
+
|
|
11
|
+
attribute :name
|
|
12
|
+
attribute :keyspace
|
|
13
|
+
attribute :table
|
|
14
|
+
|
|
15
|
+
# Returns the name of the context for permission
|
|
16
|
+
#
|
|
17
|
+
# @return [String]
|
|
18
|
+
#
|
|
19
|
+
def to_s
|
|
20
|
+
return "TABLE #{table}" if table
|
|
21
|
+
return "KEYSPACE #{keyspace}" if keyspace
|
|
22
|
+
"ALL KEYSPACES"
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Builds the 'LIST PERMISSIONS' CQL statement
|
|
26
|
+
#
|
|
27
|
+
# @param [#to_s] name The name of either a user or role
|
|
28
|
+
#
|
|
29
|
+
# @return [QueryBuilder::Statements::ListPermissions]
|
|
30
|
+
#
|
|
31
|
+
def of(name)
|
|
32
|
+
Statements::ListPermissions.new(context: self, name: name)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# Builds the 'GRANT' CQL statement
|
|
36
|
+
#
|
|
37
|
+
# @param [#to_s] name The name of either a user or role
|
|
38
|
+
#
|
|
39
|
+
# @return [QueryBuilder::Statements::Grant]
|
|
40
|
+
#
|
|
41
|
+
def grant_to(name)
|
|
42
|
+
Statements::Grant.new(context: self, name: name)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Builds the 'REVOKE' CQL statement
|
|
46
|
+
#
|
|
47
|
+
# @param [#to_s] name The name of either a user or role
|
|
48
|
+
#
|
|
49
|
+
# @return [QueryBuilder::Statements::Revoke]
|
|
50
|
+
#
|
|
51
|
+
def revoke_from(name)
|
|
52
|
+
Statements::Revoke.new(context: self, name: name)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
end # class Permission
|
|
56
|
+
|
|
57
|
+
end # module Contexts
|
|
58
|
+
|
|
59
|
+
end # module QueryBuilder::CQL
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module QueryBuilder::CQL
|
|
4
|
+
|
|
5
|
+
module Contexts
|
|
6
|
+
|
|
7
|
+
# Describes the Cassandra users role
|
|
8
|
+
#
|
|
9
|
+
class Role < Base
|
|
10
|
+
|
|
11
|
+
attribute :name, required: true
|
|
12
|
+
|
|
13
|
+
# Returns the full name of the type
|
|
14
|
+
#
|
|
15
|
+
# @return [String]
|
|
16
|
+
#
|
|
17
|
+
def to_s
|
|
18
|
+
name.to_s
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Builds the 'CREATE ROLE' CQL statement
|
|
22
|
+
#
|
|
23
|
+
# @return [QueryBuilder::Statements::CreateRole]
|
|
24
|
+
#
|
|
25
|
+
def create
|
|
26
|
+
Statements::CreateRole.new(context: self)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
# Builds the 'ALTER ROLE' CQL statement with password
|
|
30
|
+
#
|
|
31
|
+
# @param [#to_s] password
|
|
32
|
+
#
|
|
33
|
+
# @return [QueryBuilder::Statements::AlterRole]
|
|
34
|
+
#
|
|
35
|
+
def alter(password)
|
|
36
|
+
Statements::AlterRole.new(context: self).password(password)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Builds the 'DROP ROLE' CQL statement
|
|
40
|
+
#
|
|
41
|
+
# @return [QueryBuilder::Statements::DropRole]
|
|
42
|
+
#
|
|
43
|
+
def drop
|
|
44
|
+
Statements::DropRole.new(context: self)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
end # class Role
|
|
48
|
+
|
|
49
|
+
end # module Contexts
|
|
50
|
+
|
|
51
|
+
end # module QueryBuilder::CQL
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module QueryBuilder::CQL
|
|
4
|
+
|
|
5
|
+
module Contexts
|
|
6
|
+
|
|
7
|
+
# Describes the Cassandra table
|
|
8
|
+
#
|
|
9
|
+
class Table < Base
|
|
10
|
+
|
|
11
|
+
attribute :keyspace, required: true
|
|
12
|
+
attribute :name, required: true
|
|
13
|
+
|
|
14
|
+
# Returns the full name of the table
|
|
15
|
+
#
|
|
16
|
+
# @return [String]
|
|
17
|
+
#
|
|
18
|
+
def to_s
|
|
19
|
+
[keyspace, name].join(".")
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Returns the index context
|
|
23
|
+
#
|
|
24
|
+
# @param [#to_s] name
|
|
25
|
+
#
|
|
26
|
+
# @return [QueryBuilder::CQL::Contexts::Index]
|
|
27
|
+
#
|
|
28
|
+
def index(name = nil)
|
|
29
|
+
Index.new(table: self, name: name)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Returns the trigger context
|
|
33
|
+
#
|
|
34
|
+
# @param [#to_s] name
|
|
35
|
+
#
|
|
36
|
+
# @return [QueryBuilder::CQL::Contexts::Trigger]
|
|
37
|
+
#
|
|
38
|
+
def trigger(name)
|
|
39
|
+
Trigger.new(table: self, name: name)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Returns the column context
|
|
43
|
+
#
|
|
44
|
+
# @param [#to_s] name
|
|
45
|
+
#
|
|
46
|
+
# @return [QueryBuilder::CQL::Contexts::Column]
|
|
47
|
+
#
|
|
48
|
+
def column(name)
|
|
49
|
+
Column.new(table: self, name: name)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
# Returns the context of Cassandra table permission
|
|
53
|
+
#
|
|
54
|
+
# @param [#to_s, nil] name The name of the permission
|
|
55
|
+
#
|
|
56
|
+
# @param [QueryBuilder::CQL::Contexts::Permission]
|
|
57
|
+
#
|
|
58
|
+
def permission(name = nil)
|
|
59
|
+
Contexts::Permission.new(table: self, name: name)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Builds the 'CREATE TABLE' CQL statement
|
|
63
|
+
#
|
|
64
|
+
# @return [QueryBuilder::Statements::CreateTable]
|
|
65
|
+
#
|
|
66
|
+
def create
|
|
67
|
+
Statements::CreateTable.new(context: self)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# Builds the 'ALTER TABLE' CQL statement to modify properties (WITH)
|
|
71
|
+
#
|
|
72
|
+
# @param [Hash] options
|
|
73
|
+
#
|
|
74
|
+
# @return [QueryBuilder::Statements::AlterTable]
|
|
75
|
+
#
|
|
76
|
+
def alter(options)
|
|
77
|
+
Statements::AlterTable.new(context: self).alter(options)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
# Builds the 'DROP TABLE' CQL statement
|
|
81
|
+
#
|
|
82
|
+
# @return [QueryBuilder::Statements::DropTable]
|
|
83
|
+
#
|
|
84
|
+
def drop
|
|
85
|
+
Statements::DropTable.new(context: self)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
# Builds the 'INSERT' CQL statement
|
|
89
|
+
#
|
|
90
|
+
# @param [Hash] options
|
|
91
|
+
#
|
|
92
|
+
# @return [QueryBuilder::Statements::Insert]
|
|
93
|
+
#
|
|
94
|
+
def insert(options)
|
|
95
|
+
Statements::Insert.new(context: self).insert(options)
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# Builds the 'SELECT' CQL statement
|
|
99
|
+
#
|
|
100
|
+
# @param [Array<#to_s>, Hash, nil] values
|
|
101
|
+
#
|
|
102
|
+
# @return [QueryBuilder::Statements::Insert]
|
|
103
|
+
#
|
|
104
|
+
def select(*values)
|
|
105
|
+
Statements::Select.new(context: self).select(*values)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
# Builds the 'UPDATE' CQL statement
|
|
109
|
+
#
|
|
110
|
+
# @param [Hash] options
|
|
111
|
+
#
|
|
112
|
+
# @return [QueryBuilder::Statements::Update]
|
|
113
|
+
#
|
|
114
|
+
def update(options)
|
|
115
|
+
Statements::Update.new(context: self).update(options)
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
# Builds the 'DELETE' CQL statement
|
|
119
|
+
#
|
|
120
|
+
# @param [Array<#to_s>, #to_s, nil] columns
|
|
121
|
+
#
|
|
122
|
+
# @return [QueryBuilder::Statements::Delete]
|
|
123
|
+
#
|
|
124
|
+
def delete(*columns)
|
|
125
|
+
Statements::Delete.new(context: self).delete(*columns)
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
# Builds the 'TRUNCATE' CQL statement
|
|
129
|
+
#
|
|
130
|
+
# @return [QueryBuilder::Statements::Truncate]
|
|
131
|
+
#
|
|
132
|
+
def truncate
|
|
133
|
+
Statements::Truncate.new(context: self)
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
end # class Table
|
|
137
|
+
|
|
138
|
+
end # module Contexts
|
|
139
|
+
|
|
140
|
+
end # module QueryBuilder::CQL
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module QueryBuilder::CQL
|
|
4
|
+
|
|
5
|
+
module Contexts
|
|
6
|
+
|
|
7
|
+
# Describes the user-defined trigger for the table
|
|
8
|
+
#
|
|
9
|
+
class Trigger < Base
|
|
10
|
+
|
|
11
|
+
attribute :table, required: true
|
|
12
|
+
attribute :name, required: true
|
|
13
|
+
|
|
14
|
+
# Returns the full name of the type
|
|
15
|
+
#
|
|
16
|
+
# @return [String]
|
|
17
|
+
#
|
|
18
|
+
def to_s
|
|
19
|
+
[table.keyspace.name, name].join(".")
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Builds the 'CREATE TRIGGER' CQL statement for the current trigger
|
|
23
|
+
#
|
|
24
|
+
# @return [QueryBuilder::Statements::CreateTrigger]
|
|
25
|
+
#
|
|
26
|
+
def create
|
|
27
|
+
Statements::CreateTrigger.new(context: self)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Builds the 'DROP TRIGGER' CQL statement
|
|
31
|
+
#
|
|
32
|
+
# @return [QueryBuilder::Statements::DropTrigger]
|
|
33
|
+
#
|
|
34
|
+
def drop
|
|
35
|
+
Statements::DropTrigger.new(context: self)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
end # class Trigger
|
|
39
|
+
|
|
40
|
+
end # module Contexts
|
|
41
|
+
|
|
42
|
+
end # module QueryBuilder::CQL
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module QueryBuilder::CQL
|
|
4
|
+
|
|
5
|
+
module Contexts
|
|
6
|
+
|
|
7
|
+
# Describes the Cassandra user-defined type
|
|
8
|
+
#
|
|
9
|
+
class Type < Base
|
|
10
|
+
|
|
11
|
+
attribute :keyspace, required: true
|
|
12
|
+
attribute :name, required: true
|
|
13
|
+
|
|
14
|
+
# Returns the full name of the type
|
|
15
|
+
#
|
|
16
|
+
# @return [String]
|
|
17
|
+
#
|
|
18
|
+
def to_s
|
|
19
|
+
[keyspace, name].join(".")
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# Returns the field context
|
|
23
|
+
#
|
|
24
|
+
# @param [#to_s] name
|
|
25
|
+
#
|
|
26
|
+
# @return [QueryBuilder::CQL::Contexts::Field]
|
|
27
|
+
#
|
|
28
|
+
def field(name)
|
|
29
|
+
Contexts::Field.new(type: self, name: name)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Builds the 'CREATE TYPE' CQL statement
|
|
33
|
+
#
|
|
34
|
+
# @return [QueryBuilder::Statements::CreateType]
|
|
35
|
+
#
|
|
36
|
+
def create
|
|
37
|
+
Statements::CreateType.new(context: self)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Builds the 'DROP TYPE' CQL statement
|
|
41
|
+
#
|
|
42
|
+
# @return [QueryBuilder::Statements::DropType]
|
|
43
|
+
#
|
|
44
|
+
def drop
|
|
45
|
+
Statements::DropType.new(context: self)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
end # class Type
|
|
49
|
+
|
|
50
|
+
end # module Contexts
|
|
51
|
+
|
|
52
|
+
end # module QueryBuilder::CQL
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module QueryBuilder::CQL
|
|
4
|
+
|
|
5
|
+
module Contexts
|
|
6
|
+
|
|
7
|
+
# Describes the Cassandra user
|
|
8
|
+
#
|
|
9
|
+
class User < Base
|
|
10
|
+
|
|
11
|
+
attribute :name, required: true
|
|
12
|
+
|
|
13
|
+
# Returns the full name of the type
|
|
14
|
+
#
|
|
15
|
+
# @return [String]
|
|
16
|
+
#
|
|
17
|
+
def to_s
|
|
18
|
+
name.to_s
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Builds the 'ALTER USER' CQL statement with password
|
|
22
|
+
#
|
|
23
|
+
# @param [#to_s] password
|
|
24
|
+
#
|
|
25
|
+
# @return [QueryBuilder::Statements::AlterUser]
|
|
26
|
+
#
|
|
27
|
+
def alter(password)
|
|
28
|
+
Statements::AlterUser.new(context: self).password(password)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Builds the 'CREATE USER' CQL statement with password
|
|
32
|
+
#
|
|
33
|
+
# @param [#to_s] password
|
|
34
|
+
#
|
|
35
|
+
# @return [QueryBuilder::Statements::CreateUser]
|
|
36
|
+
#
|
|
37
|
+
def create(password)
|
|
38
|
+
Statements::CreateUser.new(context: self).password(password)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# Builds the 'DROP USER' CQL statement
|
|
42
|
+
#
|
|
43
|
+
# @return [QueryBuilder::Statements::DropUser]
|
|
44
|
+
#
|
|
45
|
+
def drop
|
|
46
|
+
Statements::DropUser.new(context: self)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
end # class User
|
|
50
|
+
|
|
51
|
+
end # module Contexts
|
|
52
|
+
|
|
53
|
+
end # module QueryBuilder::CQL::Contexts
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
module QueryBuilder
|
|
4
|
+
|
|
5
|
+
module CQL
|
|
6
|
+
|
|
7
|
+
# The collection of statement modifiers
|
|
8
|
+
#
|
|
9
|
+
# Every modifier contains two methods:
|
|
10
|
+
# * public method to add clause(s) to the statement
|
|
11
|
+
# * private method to collect statement clause(s)
|
|
12
|
+
#
|
|
13
|
+
module Modifiers
|
|
14
|
+
|
|
15
|
+
# Base class for modifier-provided clauses
|
|
16
|
+
#
|
|
17
|
+
class Base < Core::Clause
|
|
18
|
+
|
|
19
|
+
include Operators
|
|
20
|
+
|
|
21
|
+
end # class Base
|
|
22
|
+
|
|
23
|
+
# The base class for clauses, describing conditions (like "foo = 'foo'")
|
|
24
|
+
#
|
|
25
|
+
# @api private
|
|
26
|
+
#
|
|
27
|
+
class BaseCondition < Base
|
|
28
|
+
|
|
29
|
+
attribute :column, required: true
|
|
30
|
+
attribute :value, required: true
|
|
31
|
+
|
|
32
|
+
# @private
|
|
33
|
+
def to_s
|
|
34
|
+
return operator if value.respond_to?(:call)
|
|
35
|
+
return inclusion if value.instance_of? Array
|
|
36
|
+
equality
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
private
|
|
40
|
+
|
|
41
|
+
def equality
|
|
42
|
+
"#{column} = #{cql_literal[value]}"
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def inclusion
|
|
46
|
+
cql_in[column, *value]
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def operator
|
|
50
|
+
value[column]
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
end # class BaseCondition
|
|
54
|
+
|
|
55
|
+
Dir[File.expand_path("../modifiers/*.rb", __FILE__)].each(&method(:load))
|
|
56
|
+
|
|
57
|
+
end # module Modifiers
|
|
58
|
+
|
|
59
|
+
end # module CQL
|
|
60
|
+
|
|
61
|
+
end # module QueryBuilder
|