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.
Files changed (229) hide show
  1. checksums.yaml +7 -0
  2. data/.coveralls.yml +2 -0
  3. data/.gitignore +9 -0
  4. data/.metrics +9 -0
  5. data/.rspec +2 -0
  6. data/.rubocop.yml +2 -0
  7. data/.travis.yml +25 -0
  8. data/.yardopts +3 -0
  9. data/CHANGELOG.md +5 -0
  10. data/Gemfile +7 -0
  11. data/Guardfile +14 -0
  12. data/LICENSE +21 -0
  13. data/README.md +95 -0
  14. data/Rakefile +34 -0
  15. data/config/metrics/STYLEGUIDE +230 -0
  16. data/config/metrics/cane.yml +5 -0
  17. data/config/metrics/churn.yml +6 -0
  18. data/config/metrics/flay.yml +2 -0
  19. data/config/metrics/metric_fu.yml +14 -0
  20. data/config/metrics/reek.yml +1 -0
  21. data/config/metrics/roodi.yml +24 -0
  22. data/config/metrics/rubocop.yml +80 -0
  23. data/config/metrics/saikuro.yml +3 -0
  24. data/config/metrics/simplecov.yml +6 -0
  25. data/config/metrics/yardstick.yml +37 -0
  26. data/lib/query_builder.rb +9 -0
  27. data/lib/query_builder/core.rb +19 -0
  28. data/lib/query_builder/core/attribute.rb +54 -0
  29. data/lib/query_builder/core/attribute_error.rb +25 -0
  30. data/lib/query_builder/core/base.rb +102 -0
  31. data/lib/query_builder/core/clause.rb +46 -0
  32. data/lib/query_builder/core/statement.rb +55 -0
  33. data/lib/query_builder/cql.rb +80 -0
  34. data/lib/query_builder/cql/contexts.rb +21 -0
  35. data/lib/query_builder/cql/contexts/aggregate.rb +42 -0
  36. data/lib/query_builder/cql/contexts/column.rb +59 -0
  37. data/lib/query_builder/cql/contexts/field.rb +48 -0
  38. data/lib/query_builder/cql/contexts/function.rb +46 -0
  39. data/lib/query_builder/cql/contexts/index.rb +44 -0
  40. data/lib/query_builder/cql/contexts/keyspace.rb +107 -0
  41. data/lib/query_builder/cql/contexts/permission.rb +59 -0
  42. data/lib/query_builder/cql/contexts/role.rb +51 -0
  43. data/lib/query_builder/cql/contexts/table.rb +140 -0
  44. data/lib/query_builder/cql/contexts/trigger.rb +42 -0
  45. data/lib/query_builder/cql/contexts/type.rb +52 -0
  46. data/lib/query_builder/cql/contexts/user.rb +53 -0
  47. data/lib/query_builder/cql/modifiers.rb +61 -0
  48. data/lib/query_builder/cql/modifiers/add_column.rb +50 -0
  49. data/lib/query_builder/cql/modifiers/add_field.rb +49 -0
  50. data/lib/query_builder/cql/modifiers/allow_filtering.rb +45 -0
  51. data/lib/query_builder/cql/modifiers/alter.rb +44 -0
  52. data/lib/query_builder/cql/modifiers/called_on_null.rb +47 -0
  53. data/lib/query_builder/cql/modifiers/clustering_order.rb +51 -0
  54. data/lib/query_builder/cql/modifiers/column.rb +59 -0
  55. data/lib/query_builder/cql/modifiers/compact_storage.rb +46 -0
  56. data/lib/query_builder/cql/modifiers/count.rb +47 -0
  57. data/lib/query_builder/cql/modifiers/counter.rb +45 -0
  58. data/lib/query_builder/cql/modifiers/delete.rb +48 -0
  59. data/lib/query_builder/cql/modifiers/distinct.rb +45 -0
  60. data/lib/query_builder/cql/modifiers/finalfunc.rb +47 -0
  61. data/lib/query_builder/cql/modifiers/if.rb +44 -0
  62. data/lib/query_builder/cql/modifiers/if_exists.rb +46 -0
  63. data/lib/query_builder/cql/modifiers/if_not_exists.rb +46 -0
  64. data/lib/query_builder/cql/modifiers/initcond.rb +49 -0
  65. data/lib/query_builder/cql/modifiers/insert.rb +68 -0
  66. data/lib/query_builder/cql/modifiers/limit.rb +49 -0
  67. data/lib/query_builder/cql/modifiers/norecursive.rb +45 -0
  68. data/lib/query_builder/cql/modifiers/or_replace.rb +44 -0
  69. data/lib/query_builder/cql/modifiers/order.rb +50 -0
  70. data/lib/query_builder/cql/modifiers/password.rb +49 -0
  71. data/lib/query_builder/cql/modifiers/primary_key.rb +51 -0
  72. data/lib/query_builder/cql/modifiers/returns.rb +49 -0
  73. data/lib/query_builder/cql/modifiers/selected.rb +54 -0
  74. data/lib/query_builder/cql/modifiers/sfunc.rb +47 -0
  75. data/lib/query_builder/cql/modifiers/statement.rb +47 -0
  76. data/lib/query_builder/cql/modifiers/stype.rb +47 -0
  77. data/lib/query_builder/cql/modifiers/superuser.rb +54 -0
  78. data/lib/query_builder/cql/modifiers/timestamp.rb +50 -0
  79. data/lib/query_builder/cql/modifiers/unlogged.rb +45 -0
  80. data/lib/query_builder/cql/modifiers/update.rb +44 -0
  81. data/lib/query_builder/cql/modifiers/using.rb +48 -0
  82. data/lib/query_builder/cql/modifiers/using_options.rb +51 -0
  83. data/lib/query_builder/cql/modifiers/where.rb +44 -0
  84. data/lib/query_builder/cql/modifiers/where_clustered.rb +51 -0
  85. data/lib/query_builder/cql/modifiers/with.rb +44 -0
  86. data/lib/query_builder/cql/modifiers/with_options.rb +42 -0
  87. data/lib/query_builder/cql/operators.rb +29 -0
  88. data/lib/query_builder/cql/operators/cql.rb +23 -0
  89. data/lib/query_builder/cql/operators/cql_composite.rb +20 -0
  90. data/lib/query_builder/cql/operators/cql_dec.rb +21 -0
  91. data/lib/query_builder/cql/operators/cql_element.rb +23 -0
  92. data/lib/query_builder/cql/operators/cql_entries.rb +20 -0
  93. data/lib/query_builder/cql/operators/cql_frozen.rb +20 -0
  94. data/lib/query_builder/cql/operators/cql_full.rb +20 -0
  95. data/lib/query_builder/cql/operators/cql_gt.rb +23 -0
  96. data/lib/query_builder/cql/operators/cql_gte.rb +23 -0
  97. data/lib/query_builder/cql/operators/cql_in.rb +23 -0
  98. data/lib/query_builder/cql/operators/cql_inc.rb +21 -0
  99. data/lib/query_builder/cql/operators/cql_keys.rb +20 -0
  100. data/lib/query_builder/cql/operators/cql_list.rb +21 -0
  101. data/lib/query_builder/cql/operators/cql_literal.rb +84 -0
  102. data/lib/query_builder/cql/operators/cql_lt.rb +23 -0
  103. data/lib/query_builder/cql/operators/cql_lte.rb +23 -0
  104. data/lib/query_builder/cql/operators/cql_map.rb +25 -0
  105. data/lib/query_builder/cql/operators/cql_set.rb +21 -0
  106. data/lib/query_builder/cql/operators/cql_token.rb +21 -0
  107. data/lib/query_builder/cql/operators/cql_token_value.rb +23 -0
  108. data/lib/query_builder/cql/operators/cql_ttl.rb +20 -0
  109. data/lib/query_builder/cql/operators/cql_tuple.rb +21 -0
  110. data/lib/query_builder/cql/operators/cql_tuple_value.rb +23 -0
  111. data/lib/query_builder/cql/operators/cql_writetime.rb +20 -0
  112. data/lib/query_builder/cql/statements.rb +25 -0
  113. data/lib/query_builder/cql/statements/alter_column.rb +27 -0
  114. data/lib/query_builder/cql/statements/alter_field.rb +27 -0
  115. data/lib/query_builder/cql/statements/alter_keyspace.rb +25 -0
  116. data/lib/query_builder/cql/statements/alter_role.rb +26 -0
  117. data/lib/query_builder/cql/statements/alter_table.rb +25 -0
  118. data/lib/query_builder/cql/statements/alter_user.rb +26 -0
  119. data/lib/query_builder/cql/statements/batch.rb +31 -0
  120. data/lib/query_builder/cql/statements/create_aggregate.rb +36 -0
  121. data/lib/query_builder/cql/statements/create_column.rb +35 -0
  122. data/lib/query_builder/cql/statements/create_field.rb +25 -0
  123. data/lib/query_builder/cql/statements/create_function.rb +38 -0
  124. data/lib/query_builder/cql/statements/create_index.rb +41 -0
  125. data/lib/query_builder/cql/statements/create_keyspace.rb +26 -0
  126. data/lib/query_builder/cql/statements/create_role.rb +26 -0
  127. data/lib/query_builder/cql/statements/create_table.rb +30 -0
  128. data/lib/query_builder/cql/statements/create_trigger.rb +29 -0
  129. data/lib/query_builder/cql/statements/create_type.rb +26 -0
  130. data/lib/query_builder/cql/statements/create_user.rb +27 -0
  131. data/lib/query_builder/cql/statements/delete.rb +32 -0
  132. data/lib/query_builder/cql/statements/drop_aggregate.rb +25 -0
  133. data/lib/query_builder/cql/statements/drop_column.rb +23 -0
  134. data/lib/query_builder/cql/statements/drop_function.rb +25 -0
  135. data/lib/query_builder/cql/statements/drop_index.rb +25 -0
  136. data/lib/query_builder/cql/statements/drop_keyspace.rb +25 -0
  137. data/lib/query_builder/cql/statements/drop_role.rb +25 -0
  138. data/lib/query_builder/cql/statements/drop_table.rb +25 -0
  139. data/lib/query_builder/cql/statements/drop_trigger.rb +25 -0
  140. data/lib/query_builder/cql/statements/drop_type.rb +25 -0
  141. data/lib/query_builder/cql/statements/drop_user.rb +25 -0
  142. data/lib/query_builder/cql/statements/grant.rb +31 -0
  143. data/lib/query_builder/cql/statements/insert.rb +27 -0
  144. data/lib/query_builder/cql/statements/list_permissions.rb +35 -0
  145. data/lib/query_builder/cql/statements/list_roles.rb +23 -0
  146. data/lib/query_builder/cql/statements/list_users.rb +23 -0
  147. data/lib/query_builder/cql/statements/rename_column.rb +27 -0
  148. data/lib/query_builder/cql/statements/rename_field.rb +25 -0
  149. data/lib/query_builder/cql/statements/revoke.rb +31 -0
  150. data/lib/query_builder/cql/statements/select.rb +35 -0
  151. data/lib/query_builder/cql/statements/truncate.rb +23 -0
  152. data/lib/query_builder/cql/statements/update.rb +31 -0
  153. data/lib/query_builder/cql/statements/use.rb +23 -0
  154. data/lib/query_builder/rspec.rb +25 -0
  155. data/lib/query_builder/version.rb +9 -0
  156. data/query_builder.gemspec +31 -0
  157. data/spec/integration/alter_keyspace_spec.rb +17 -0
  158. data/spec/integration/alter_role_spec.rb +28 -0
  159. data/spec/integration/alter_table_add_spec.rb +21 -0
  160. data/spec/integration/alter_table_alter_spec.rb +15 -0
  161. data/spec/integration/alter_table_drop_spec.rb +15 -0
  162. data/spec/integration/alter_table_rename_spec.rb +15 -0
  163. data/spec/integration/alter_table_with_spec.rb +17 -0
  164. data/spec/integration/alter_type_add_spec.rb +15 -0
  165. data/spec/integration/alter_type_alter_spec.rb +15 -0
  166. data/spec/integration/alter_type_rename_spec.rb +15 -0
  167. data/spec/integration/alter_user_spec.rb +28 -0
  168. data/spec/integration/batch_spec.rb +32 -0
  169. data/spec/integration/create_aggregate_spec.rb +31 -0
  170. data/spec/integration/create_function_spec.rb +29 -0
  171. data/spec/integration/create_index_spec.rb +35 -0
  172. data/spec/integration/create_keyspace_spec.rb +24 -0
  173. data/spec/integration/create_role_spec.rb +26 -0
  174. data/spec/integration/create_table_spec.rb +34 -0
  175. data/spec/integration/create_trigger_spec.rb +21 -0
  176. data/spec/integration/create_type_spec.rb +20 -0
  177. data/spec/integration/create_user_spec.rb +23 -0
  178. data/spec/integration/delete_spec.rb +28 -0
  179. data/spec/integration/drop_aggregate_spec.rb +21 -0
  180. data/spec/integration/drop_function_spec.rb +21 -0
  181. data/spec/integration/drop_index_spec.rb +21 -0
  182. data/spec/integration/drop_keyspace_spec.rb +18 -0
  183. data/spec/integration/drop_role_spec.rb +18 -0
  184. data/spec/integration/drop_table_spec.rb +18 -0
  185. data/spec/integration/drop_trigger_spec.rb +21 -0
  186. data/spec/integration/drop_type_spec.rb +18 -0
  187. data/spec/integration/drop_user_spec.rb +18 -0
  188. data/spec/integration/grant_spec.rb +29 -0
  189. data/spec/integration/insert_spec.rb +22 -0
  190. data/spec/integration/list_permissions_spec.rb +34 -0
  191. data/spec/integration/list_roles_spec.rb +12 -0
  192. data/spec/integration/list_users_spec.rb +12 -0
  193. data/spec/integration/revoke_spec.rb +29 -0
  194. data/spec/integration/select_spec.rb +46 -0
  195. data/spec/integration/truncate_spec.rb +12 -0
  196. data/spec/integration/update_spec.rb +23 -0
  197. data/spec/integration/use_spec.rb +12 -0
  198. data/spec/spec_helper.rb +16 -0
  199. data/spec/unit/core/attribute_error_spec.rb +38 -0
  200. data/spec/unit/core/attribute_spec.rb +70 -0
  201. data/spec/unit/core/base_spec.rb +110 -0
  202. data/spec/unit/core/clause_spec.rb +101 -0
  203. data/spec/unit/core/statement_spec.rb +88 -0
  204. data/spec/unit/cql/operators/cql_composite_spec.rb +12 -0
  205. data/spec/unit/cql/operators/cql_dec_spec.rb +12 -0
  206. data/spec/unit/cql/operators/cql_element_spec.rb +12 -0
  207. data/spec/unit/cql/operators/cql_entries_spec.rb +12 -0
  208. data/spec/unit/cql/operators/cql_frozen_spec.rb +12 -0
  209. data/spec/unit/cql/operators/cql_full_spec.rb +12 -0
  210. data/spec/unit/cql/operators/cql_gt_spec.rb +19 -0
  211. data/spec/unit/cql/operators/cql_gte_spec.rb +19 -0
  212. data/spec/unit/cql/operators/cql_in_spec.rb +12 -0
  213. data/spec/unit/cql/operators/cql_inc_spec.rb +12 -0
  214. data/spec/unit/cql/operators/cql_keys_spec.rb +12 -0
  215. data/spec/unit/cql/operators/cql_list_spec.rb +12 -0
  216. data/spec/unit/cql/operators/cql_literal_spec.rb +83 -0
  217. data/spec/unit/cql/operators/cql_lt_spec.rb +19 -0
  218. data/spec/unit/cql/operators/cql_lte_spec.rb +19 -0
  219. data/spec/unit/cql/operators/cql_map_spec.rb +12 -0
  220. data/spec/unit/cql/operators/cql_set_spec.rb +12 -0
  221. data/spec/unit/cql/operators/cql_spec.rb +12 -0
  222. data/spec/unit/cql/operators/cql_token_spec.rb +12 -0
  223. data/spec/unit/cql/operators/cql_token_value_spec.rb +12 -0
  224. data/spec/unit/cql/operators/cql_ttl_spec.rb +12 -0
  225. data/spec/unit/cql/operators/cql_tuple_spec.rb +12 -0
  226. data/spec/unit/cql/operators/cql_tuple_value_spec.rb +12 -0
  227. data/spec/unit/cql/operators/cql_writetime_spec.rb +12 -0
  228. data/spec/unit/cql/operators_spec.rb +66 -0
  229. 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