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,35 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
describe "CREATE INDEX" do
|
|
4
|
+
|
|
5
|
+
include QueryBuilder::CQL::Operators
|
|
6
|
+
|
|
7
|
+
let(:table) { QueryBuilder::CQL.keyspace(:wildlife).table(:species) }
|
|
8
|
+
|
|
9
|
+
it_behaves_like :query_builder do
|
|
10
|
+
subject do
|
|
11
|
+
table.index(:my_index)
|
|
12
|
+
.create(:id, :priority)
|
|
13
|
+
.add(:state)
|
|
14
|
+
.if_not_exists
|
|
15
|
+
.using("path.to.the.IndexClass")
|
|
16
|
+
.with(storage: "/mnt/ssd/indexes/")
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
let(:cql) { "CREATE INDEX IF NOT EXISTS my_index ON wildlife.species ((id, priority), state) USING 'path.to.the.IndexClass' WITH options = {'storage': '/mnt/ssd/indexes/'};" }
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it_behaves_like :query_builder do
|
|
23
|
+
subject do
|
|
24
|
+
table.index
|
|
25
|
+
.create(:id, :priority)
|
|
26
|
+
.add(:state)
|
|
27
|
+
.if_not_exists
|
|
28
|
+
.using("path.to.the.IndexClass")
|
|
29
|
+
.with(storage: "/mnt/ssd/indexes/")
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
let(:cql) { "CREATE CUSTOM INDEX IF NOT EXISTS ON wildlife.species ((id, priority), state) USING 'path.to.the.IndexClass' WITH options = {'storage': '/mnt/ssd/indexes/'};" }
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end # describe CREATE INDEX
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
describe "CREATE KEYSPACE" do
|
|
4
|
+
|
|
5
|
+
let(:keyspace) { QueryBuilder::CQL.keyspace(:wildlife) }
|
|
6
|
+
let(:statement) { keyspace.create }
|
|
7
|
+
|
|
8
|
+
it_behaves_like :query_builder do
|
|
9
|
+
subject { statement }
|
|
10
|
+
let(:cql) { "CREATE KEYSPACE wildlife;" }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it_behaves_like :query_builder do
|
|
14
|
+
subject do
|
|
15
|
+
statement
|
|
16
|
+
.if_not_exists
|
|
17
|
+
.with(replication: { class: :SimpleStrategy, replication_factor: 3 })
|
|
18
|
+
.with(durable_writes: false)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
let(:cql) { "CREATE KEYSPACE IF NOT EXISTS wildlife WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3} AND durable_writes = false;" }
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end # describe CREATE KEYSPACE
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
describe "CREATE ROLE" do
|
|
4
|
+
|
|
5
|
+
include QueryBuilder::CQL::Operators
|
|
6
|
+
|
|
7
|
+
let(:role) { QueryBuilder::CQL.role(:admin) }
|
|
8
|
+
|
|
9
|
+
it_behaves_like :query_builder do
|
|
10
|
+
subject { role.create }
|
|
11
|
+
|
|
12
|
+
let(:cql) { "CREATE ROLE admin;" }
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it_behaves_like :query_builder do
|
|
16
|
+
subject do
|
|
17
|
+
role.create
|
|
18
|
+
.if_not_exists
|
|
19
|
+
.with(password: :foobar)
|
|
20
|
+
.with(superuser: true, login: true)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
let(:cql) { "CREATE ROLE IF NOT EXISTS admin WITH password = 'foobar' AND superuser = true AND login = true;" }
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
end # describe CREATE ROLE
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
describe "CREATE TABLE" do
|
|
4
|
+
|
|
5
|
+
include QueryBuilder::CQL::Operators
|
|
6
|
+
|
|
7
|
+
let(:table) { QueryBuilder::CQL.keyspace(:wildlife).table(:species) }
|
|
8
|
+
let(:statement) { table.create }
|
|
9
|
+
|
|
10
|
+
it_behaves_like :query_builder do
|
|
11
|
+
subject { statement }
|
|
12
|
+
let(:cql) { "CREATE TABLE wildlife.species ();" }
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it_behaves_like :query_builder do
|
|
16
|
+
subject do
|
|
17
|
+
statement
|
|
18
|
+
.if_not_exists
|
|
19
|
+
.add(:id, :int)
|
|
20
|
+
.add(:priority, :int)
|
|
21
|
+
.add(:name, :text)
|
|
22
|
+
.add(:known_from, cql_frozen[:int])
|
|
23
|
+
.add(:review, :timestamp, static: true)
|
|
24
|
+
.primary_key(cql_composite[:id, :priority], :name)
|
|
25
|
+
.with(read_repair_chance: 1.0)
|
|
26
|
+
.with(comment: "Important records")
|
|
27
|
+
.compact_storage
|
|
28
|
+
.clustering_order(:name, :desc)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
let(:cql) { "CREATE TABLE IF NOT EXISTS wildlife.species (id int, priority int, name text, known_from FROZEN <int>, review timestamp STATIC, PRIMARY KEY ((id, priority), name)) WITH read_repair_chance = 1.0 AND comment = 'Important records' AND COMPACT STORAGE AND CLUSTERING ORDER BY (name DESC);" }
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
end # describe CREATE TABLE
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
describe "CREATE TRIGGER" do
|
|
4
|
+
|
|
5
|
+
let(:trigger) do
|
|
6
|
+
QueryBuilder::CQL.keyspace(:wildlife).table(:species).trigger(:alert)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
let(:statement) { trigger.create }
|
|
10
|
+
|
|
11
|
+
it_behaves_like :query_builder do
|
|
12
|
+
subject { statement }
|
|
13
|
+
let(:cql) { "CREATE TRIGGER alert ON wildlife.species;" }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it_behaves_like :query_builder do
|
|
17
|
+
subject { statement.if_not_exists.using("wildlife.triggers.alert") }
|
|
18
|
+
let(:cql) { "CREATE TRIGGER IF NOT EXISTS alert ON wildlife.species USING 'wildlife.triggers.alert';" }
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end # describe CREATE TRIGGER
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
describe "CREATE TYPE" do
|
|
4
|
+
|
|
5
|
+
include QueryBuilder::CQL::Operators
|
|
6
|
+
|
|
7
|
+
let(:type) { QueryBuilder::CQL.keyspace(:wildlife).type(:species) }
|
|
8
|
+
|
|
9
|
+
it_behaves_like :query_builder do
|
|
10
|
+
subject do
|
|
11
|
+
type.create
|
|
12
|
+
.add(:name, :text)
|
|
13
|
+
.add(:params, cql_map[:text, :text])
|
|
14
|
+
.if_not_exists
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
let(:cql) { "CREATE TYPE IF NOT EXISTS wildlife.species (name text, params MAP<text, text>);" }
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end # describe CREATE TYPE
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
describe "CREATE USER" do
|
|
4
|
+
|
|
5
|
+
let(:user) { QueryBuilder::CQL.user(:andrew) }
|
|
6
|
+
let(:statement) { user.create(:foobar) }
|
|
7
|
+
|
|
8
|
+
it_behaves_like :query_builder do
|
|
9
|
+
subject { statement }
|
|
10
|
+
let(:cql) { "CREATE USER andrew WITH PASSWORD 'foobar';" }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it_behaves_like :query_builder do
|
|
14
|
+
subject { statement.superuser(false) }
|
|
15
|
+
let(:cql) { "CREATE USER andrew WITH PASSWORD 'foobar' NOSUPERUSER;" }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it_behaves_like :query_builder do
|
|
19
|
+
subject { statement.superuser.if_not_exists }
|
|
20
|
+
let(:cql) { "CREATE USER IF NOT EXISTS andrew WITH PASSWORD 'foobar' SUPERUSER;" }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end # describe QueryBuilder::CQL.create_user
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
describe "DELETE" do
|
|
4
|
+
|
|
5
|
+
include QueryBuilder::CQL::Operators
|
|
6
|
+
|
|
7
|
+
let(:table) { QueryBuilder::CQL.keyspace(:wildlife).table(:species) }
|
|
8
|
+
|
|
9
|
+
it_behaves_like :query_builder do
|
|
10
|
+
subject { table.delete }
|
|
11
|
+
let(:cql) { "DELETE FROM wildlife.species;" }
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it_behaves_like :query_builder do
|
|
15
|
+
subject do
|
|
16
|
+
table
|
|
17
|
+
.delete(:name, :number)
|
|
18
|
+
.delete(:areal)
|
|
19
|
+
.where(name: [:qiwi, :dront], cql_element[:state, 0] => :not_found)
|
|
20
|
+
.if(number: 0)
|
|
21
|
+
.using(timestamp: 100)
|
|
22
|
+
.if_exists
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
let(:cql) { "DELETE name, number, areal FROM wildlife.species USING TIMESTAMP 100 WHERE name IN ('qiwi', 'dront') AND state[0] = 'not_found' IF EXISTS AND number = 0;" }
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end # describe DELETE
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
describe "DROP AGGREGATE" do
|
|
4
|
+
|
|
5
|
+
let(:aggregate) do
|
|
6
|
+
QueryBuilder::CQL.keyspace(:wildlife).aggregate(:numAverage)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
let(:statement) { aggregate.drop }
|
|
10
|
+
|
|
11
|
+
it_behaves_like :query_builder do
|
|
12
|
+
subject { statement }
|
|
13
|
+
let(:cql) { "DROP AGGREGATE wildlife.numAverage;" }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it_behaves_like :query_builder do
|
|
17
|
+
subject { statement.if_exists }
|
|
18
|
+
let(:cql) { "DROP AGGREGATE IF EXISTS wildlife.numAverage;" }
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end # describe DROP AGGREGATE
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
describe "DROP FUNCTION" do
|
|
4
|
+
|
|
5
|
+
let(:function) do
|
|
6
|
+
QueryBuilder::CQL.keyspace(:wildlife).function(:count_species)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
let(:statement) { function.drop }
|
|
10
|
+
|
|
11
|
+
it_behaves_like :query_builder do
|
|
12
|
+
subject { statement }
|
|
13
|
+
let(:cql) { "DROP FUNCTION wildlife.count_species;" }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it_behaves_like :query_builder do
|
|
17
|
+
subject { statement.if_exists }
|
|
18
|
+
let(:cql) { "DROP FUNCTION IF EXISTS wildlife.count_species;" }
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end # describe DROP FUNCTION
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
describe "DROP INDEX" do
|
|
4
|
+
|
|
5
|
+
let(:index) do
|
|
6
|
+
QueryBuilder::CQL.keyspace(:wildlife).table(:species).index(:priority_index)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
let(:statement) { index.drop }
|
|
10
|
+
|
|
11
|
+
it_behaves_like :query_builder do
|
|
12
|
+
subject { statement }
|
|
13
|
+
let(:cql) { "DROP INDEX wildlife.priority_index;" }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it_behaves_like :query_builder do
|
|
17
|
+
subject { statement.if_exists }
|
|
18
|
+
let(:cql) { "DROP INDEX IF EXISTS wildlife.priority_index;" }
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end # describe DROP INDEX
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
describe "DROP KEYSPACE" do
|
|
4
|
+
|
|
5
|
+
let(:keyspace) { QueryBuilder::CQL.keyspace(:wildlife) }
|
|
6
|
+
let(:statement) { keyspace.drop }
|
|
7
|
+
|
|
8
|
+
it_behaves_like :query_builder do
|
|
9
|
+
subject { statement }
|
|
10
|
+
let(:cql) { "DROP KEYSPACE wildlife;" }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it_behaves_like :query_builder do
|
|
14
|
+
subject { statement.if_exists.if_exists }
|
|
15
|
+
let(:cql) { "DROP KEYSPACE IF EXISTS wildlife;" }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end # describe DROP KEYSPACE
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
describe "DROP ROLE" do
|
|
4
|
+
|
|
5
|
+
let(:role) { QueryBuilder::CQL.role(:admin) }
|
|
6
|
+
let(:statement) { role.drop }
|
|
7
|
+
|
|
8
|
+
it_behaves_like :query_builder do
|
|
9
|
+
subject { statement }
|
|
10
|
+
let(:cql) { "DROP ROLE admin;" }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it_behaves_like :query_builder do
|
|
14
|
+
subject { statement.if_exists }
|
|
15
|
+
let(:cql) { "DROP ROLE IF EXISTS admin;" }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end # describe DROP ROLE
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
describe "DROP TABLE" do
|
|
4
|
+
|
|
5
|
+
let(:table) { QueryBuilder::CQL.keyspace(:wildlife).table(:species) }
|
|
6
|
+
let(:statement) { table.drop }
|
|
7
|
+
|
|
8
|
+
it_behaves_like :query_builder do
|
|
9
|
+
subject { statement }
|
|
10
|
+
let(:cql) { "DROP TABLE wildlife.species;" }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it_behaves_like :query_builder do
|
|
14
|
+
subject { statement.if_exists.if_exists }
|
|
15
|
+
let(:cql) { "DROP TABLE IF EXISTS wildlife.species;" }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end # describe DROP TABLE
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
describe "DROP TRIGGER" do
|
|
4
|
+
|
|
5
|
+
let(:trigger) do
|
|
6
|
+
QueryBuilder::CQL.keyspace(:wildlife).table(:species).trigger(:alert)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
let(:statement) { trigger.drop }
|
|
10
|
+
|
|
11
|
+
it_behaves_like :query_builder do
|
|
12
|
+
subject { statement }
|
|
13
|
+
let(:cql) { "DROP TRIGGER alert ON wildlife.species;" }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it_behaves_like :query_builder do
|
|
17
|
+
subject { statement.if_exists }
|
|
18
|
+
let(:cql) { "DROP TRIGGER IF EXISTS alert ON wildlife.species;" }
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end # describe DROP TRIGGER
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
describe "DROP TYPE" do
|
|
4
|
+
|
|
5
|
+
let(:type) { QueryBuilder::CQL.keyspace(:wildlife).type(:species) }
|
|
6
|
+
let(:statement) { type.drop }
|
|
7
|
+
|
|
8
|
+
it_behaves_like :query_builder do
|
|
9
|
+
subject { statement }
|
|
10
|
+
let(:cql) { "DROP TYPE wildlife.species;" }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it_behaves_like :query_builder do
|
|
14
|
+
subject { statement.if_exists.if_exists }
|
|
15
|
+
let(:cql) { "DROP TYPE IF EXISTS wildlife.species;" }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end # describe DROP TYPE
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
describe "DROP USER" do
|
|
4
|
+
|
|
5
|
+
let(:user) { QueryBuilder::CQL.user(:andrew) }
|
|
6
|
+
let(:statement) { user.drop }
|
|
7
|
+
|
|
8
|
+
it_behaves_like :query_builder do
|
|
9
|
+
subject { statement }
|
|
10
|
+
let(:cql) { "DROP USER andrew;" }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it_behaves_like :query_builder do
|
|
14
|
+
subject { statement.if_exists.if_exists }
|
|
15
|
+
let(:cql) { "DROP USER IF EXISTS andrew;" }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
end # describe DROP USER
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
|
|
3
|
+
describe "GRANT" do
|
|
4
|
+
|
|
5
|
+
let(:root) { QueryBuilder::CQL }
|
|
6
|
+
let(:keyspace) { root.keyspace(:wildlife) }
|
|
7
|
+
let(:table) { keyspace.table(:species) }
|
|
8
|
+
|
|
9
|
+
it_behaves_like :query_builder do
|
|
10
|
+
subject { root.permission.grant_to(:admin) }
|
|
11
|
+
let(:cql) { "GRANT ALL PERMISSIONS ON ALL KEYSPACES TO admin;" }
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it_behaves_like :query_builder do
|
|
15
|
+
subject { root.permission(:alter).grant_to(:admin) }
|
|
16
|
+
let(:cql) { "GRANT ALTER PERMISSION ON ALL KEYSPACES TO admin;" }
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it_behaves_like :query_builder do
|
|
20
|
+
subject { keyspace.permission(:create).grant_to(:admin) }
|
|
21
|
+
let(:cql) { "GRANT CREATE PERMISSION ON KEYSPACE wildlife TO admin;" }
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it_behaves_like :query_builder do
|
|
25
|
+
subject { table.permission(:drop).grant_to(:admin) }
|
|
26
|
+
let(:cql) { "GRANT DROP PERMISSION ON TABLE wildlife.species TO admin;" }
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end # describe GRANT
|