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,23 @@
1
+ # encoding: utf-8
2
+
3
+ module QueryBuilder::CQL
4
+
5
+ module Statements
6
+
7
+ # Describes the 'TRUNCATE' CQL3 statement
8
+ #
9
+ class Truncate < Base
10
+
11
+ # Builds the statement
12
+ #
13
+ # @return [String]
14
+ #
15
+ def to_s
16
+ cql["TRUNCATE", context.to_s]
17
+ end
18
+
19
+ end # class Truncate
20
+
21
+ end # module Statements
22
+
23
+ end # module QueryBuilder::CQL
@@ -0,0 +1,31 @@
1
+ # encoding: utf-8
2
+
3
+ module QueryBuilder::CQL
4
+
5
+ module Statements
6
+
7
+ # Describes the 'UPDATE' CQL3 statement
8
+ #
9
+ class Update < Base
10
+
11
+ include Modifiers::Update
12
+ include Modifiers::Where
13
+ include Modifiers::If
14
+ include Modifiers::IfExists
15
+ include Modifiers::UsingOptions
16
+
17
+ # Builds the statement
18
+ #
19
+ # @return [String]
20
+ #
21
+ def to_s
22
+ cql[
23
+ "UPDATE", context.to_s, maybe_using, maybe_set, maybe_where, maybe_if
24
+ ]
25
+ end
26
+
27
+ end # class Update
28
+
29
+ end # module Statements
30
+
31
+ end # module QueryBuilder::CQL
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+
3
+ module QueryBuilder::CQL
4
+
5
+ module Statements
6
+
7
+ # Describes the 'USE' CQL3 statement
8
+ #
9
+ class Use < Base
10
+
11
+ # Builds the statement
12
+ #
13
+ # @return [String]
14
+ #
15
+ def to_s
16
+ cql["USE", context.to_s]
17
+ end
18
+
19
+ end # class Use
20
+
21
+ end # module Statements
22
+
23
+ end # module QueryBuilder::CQL
@@ -0,0 +1,25 @@
1
+ # encoding: utf-8
2
+
3
+ shared_examples :a_clause do |type|
4
+
5
+ it "[is a clause]" do
6
+ expect(subject).to be_kind_of(QueryBuilder::Core::Clause)
7
+ end
8
+
9
+ it "[is immutable]" do
10
+ expect(subject).to be_frozen
11
+ end
12
+
13
+ it "[has valid type]" do
14
+ expect(subject.type).to eql(type)
15
+ end
16
+
17
+ end # shared examples
18
+
19
+ shared_examples :query_builder do
20
+
21
+ it "[works]" do
22
+ expect(subject.to_s).to eql(cql)
23
+ end
24
+
25
+ end # shared examples
@@ -0,0 +1,9 @@
1
+ # encoding: utf-8
2
+
3
+ module QueryBuilder
4
+
5
+ # The semantic version of the module.
6
+ # @see http://semver.org/ Semantic versioning 2.0
7
+ VERSION = "0.0.1".freeze
8
+
9
+ end # module QueryBuilder
@@ -0,0 +1,31 @@
1
+ # encoding: utf-8
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "query_builder/version"
5
+
6
+ Gem::Specification.new do |gem|
7
+
8
+ gem.name = "query_builder"
9
+ gem.version = QueryBuilder::VERSION.dup
10
+ gem.author = "Andrew Kozin"
11
+ gem.email = "andrew.kozin@gmail.com"
12
+ gem.homepage = "https://github.com/nepalez/query_builder"
13
+ gem.summary = "Builder of the CQL statements."
14
+ gem.description = gem.summary
15
+ gem.license = "MIT"
16
+
17
+ gem.files = `git ls-files -z`.split("\x0")
18
+ gem.executables = gem.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
20
+ gem.extra_rdoc_files = Dir["README.md", "LICENSE", "CHANGELOG.md"]
21
+ gem.require_paths = ["lib"]
22
+
23
+ gem.required_ruby_version = "~> 1.9", ">= 1.9.3"
24
+
25
+ gem.add_runtime_dependency "transproc", "~> 0.3"
26
+ gem.add_runtime_dependency "equalizer", "~> 0.0.11"
27
+ gem.add_runtime_dependency "ice_nine", "~> 0.11"
28
+
29
+ gem.add_development_dependency "hexx-rspec", "~> 0.5"
30
+
31
+ end # Gem::Specification
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+
3
+ describe "ALTER KEYSPACE" do
4
+
5
+ let(:statement) { QueryBuilder::CQL.keyspace(:wildlife).alter }
6
+
7
+ it_behaves_like :query_builder do
8
+ subject do
9
+ statement
10
+ .with(replication: { class: :SimpleStrategy, replication_factor: 3 })
11
+ .with(durable_writes: false)
12
+ end
13
+
14
+ let(:cql) { "ALTER KEYSPACE wildlife WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3} AND durable_writes = false;" }
15
+ end
16
+
17
+ end # describe ALTER KEYSPACE
@@ -0,0 +1,28 @@
1
+ # encoding: utf-8
2
+
3
+ describe "ALTER ROLE" do
4
+
5
+ let(:role) { QueryBuilder::CQL.role(:admin) }
6
+ let(:statement) { role.alter("123456") }
7
+
8
+ it_behaves_like :query_builder do
9
+ subject { statement }
10
+ let(:cql) { "ALTER ROLE admin WITH PASSWORD '123456';" }
11
+ end
12
+
13
+ it_behaves_like :query_builder do
14
+ subject { statement.password(:foobar) }
15
+ let(:cql) { "ALTER ROLE admin WITH PASSWORD 'foobar';" }
16
+ end
17
+
18
+ it_behaves_like :query_builder do
19
+ subject { statement.superuser }
20
+ let(:cql) { "ALTER ROLE admin WITH PASSWORD '123456' SUPERUSER;" }
21
+ end
22
+
23
+ it_behaves_like :query_builder do
24
+ subject { statement.superuser(false) }
25
+ let(:cql) { "ALTER ROLE admin WITH PASSWORD '123456' NOSUPERUSER;" }
26
+ end
27
+
28
+ end # describe ALTER ROLE
@@ -0,0 +1,21 @@
1
+ # encoding: utf-8
2
+
3
+ describe "ALTER TABLE ... ADD" do
4
+
5
+ let(:column) do
6
+ QueryBuilder::CQL.keyspace(:wildlife).table(:species).column(:weight)
7
+ end
8
+
9
+ it_behaves_like :query_builder do
10
+ subject { column.create(:int) }
11
+
12
+ let(:cql) { "ALTER TABLE wildlife.species ADD weight int;" }
13
+ end
14
+
15
+ it_behaves_like :query_builder do
16
+ subject { column.create(:int, static: true) }
17
+
18
+ let(:cql) { "ALTER TABLE wildlife.species ADD weight int STATIC;" }
19
+ end
20
+
21
+ end # describe ALTER TABLE ... ADD
@@ -0,0 +1,15 @@
1
+ # encoding: utf-8
2
+
3
+ describe "ALTER TABLE ... ALTER" do
4
+
5
+ let(:column) do
6
+ QueryBuilder::CQL.keyspace(:wildlife).table(:species).column(:weight)
7
+ end
8
+
9
+ it_behaves_like :query_builder do
10
+ subject { column.alter(:int) }
11
+
12
+ let(:cql) { "ALTER TABLE wildlife.species ALTER weight TYPE int;" }
13
+ end
14
+
15
+ end # describe ALTER TABLE ... ALTER
@@ -0,0 +1,15 @@
1
+ # encoding: utf-8
2
+
3
+ describe "ALTER TABLE ... DROP" do
4
+
5
+ let(:column) do
6
+ QueryBuilder::CQL.keyspace(:wildlife).table(:species).column(:weight)
7
+ end
8
+
9
+ it_behaves_like :query_builder do
10
+ subject { column.drop }
11
+
12
+ let(:cql) { "ALTER TABLE wildlife.species DROP weight;" }
13
+ end
14
+
15
+ end # describe ALTER TABLE ... DROP
@@ -0,0 +1,15 @@
1
+ # encoding: utf-8
2
+
3
+ describe "ALTER TABLE ... RENAME" do
4
+
5
+ let(:column) do
6
+ QueryBuilder::CQL.keyspace(:wildlife).table(:species).column(:weight)
7
+ end
8
+
9
+ it_behaves_like :query_builder do
10
+ subject { column.rename(:body_weight) }
11
+
12
+ let(:cql) { "ALTER TABLE wildlife.species RENAME weight TO body_weight;" }
13
+ end
14
+
15
+ end # describe ALTER TABLE ... RENAME
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+
3
+ describe "ALTER TABLE ... WITH" do
4
+
5
+ let(:table) { QueryBuilder::CQL.keyspace(:wildlife).table(:species) }
6
+
7
+ it_behaves_like :query_builder do
8
+ subject do
9
+ table
10
+ .alter(comment: "A most excellent and useful table")
11
+ .alter(read_repair_chance: 0.2, default_time_to_live: 0)
12
+ end
13
+
14
+ let(:cql) { "ALTER TABLE wildlife.species WITH comment = 'A most excellent and useful table' AND read_repair_chance = 0.2 AND default_time_to_live = 0;" }
15
+ end
16
+
17
+ end # describe ALTER TABLE ... WITH
@@ -0,0 +1,15 @@
1
+ # encoding: utf-8
2
+
3
+ describe "ALTER TYPE ... ADD" do
4
+
5
+ let(:field) do
6
+ QueryBuilder::CQL.keyspace(:wildlife).type(:species).field(:weight)
7
+ end
8
+
9
+ it_behaves_like :query_builder do
10
+ subject { field.create(:int) }
11
+
12
+ let(:cql) { "ALTER TYPE wildlife.species ADD weight int;" }
13
+ end
14
+
15
+ end # describe ALTER TYPE ... ADD
@@ -0,0 +1,15 @@
1
+ # encoding: utf-8
2
+
3
+ describe "ALTER TYPE ... ALTER" do
4
+
5
+ let(:field) do
6
+ QueryBuilder::CQL.keyspace(:wildlife).type(:species).field(:weight)
7
+ end
8
+
9
+ it_behaves_like :query_builder do
10
+ subject { field.alter(:int) }
11
+
12
+ let(:cql) { "ALTER TYPE wildlife.species ALTER weight TYPE int;" }
13
+ end
14
+
15
+ end # describe ALTER TYPE ... ALTER
@@ -0,0 +1,15 @@
1
+ # encoding: utf-8
2
+
3
+ describe "ALTER TYPE ... RENAME" do
4
+
5
+ let(:field) do
6
+ QueryBuilder::CQL.keyspace(:wildlife).type(:species).field(:weight)
7
+ end
8
+
9
+ it_behaves_like :query_builder do
10
+ subject { field.rename(:body_weight) }
11
+
12
+ let(:cql) { "ALTER TYPE wildlife.species RENAME weight TO body_weight;" }
13
+ end
14
+
15
+ end # describe ALTER TYPE ... RENAME
@@ -0,0 +1,28 @@
1
+ # encoding: utf-8
2
+
3
+ describe "ALTER USER" do
4
+
5
+ let(:user) { QueryBuilder::CQL.user(:andrew) }
6
+ let(:statement) { user.alter("123456") }
7
+
8
+ it_behaves_like :query_builder do
9
+ subject { statement }
10
+ let(:cql) { "ALTER USER andrew WITH PASSWORD '123456';" }
11
+ end
12
+
13
+ it_behaves_like :query_builder do
14
+ subject { statement.password(:foobar) }
15
+ let(:cql) { "ALTER USER andrew WITH PASSWORD 'foobar';" }
16
+ end
17
+
18
+ it_behaves_like :query_builder do
19
+ subject { statement.superuser }
20
+ let(:cql) { "ALTER USER andrew WITH PASSWORD '123456' SUPERUSER;" }
21
+ end
22
+
23
+ it_behaves_like :query_builder do
24
+ subject { statement.superuser(false) }
25
+ let(:cql) { "ALTER USER andrew WITH PASSWORD '123456' NOSUPERUSER;" }
26
+ end
27
+
28
+ end # describe ALTER USER
@@ -0,0 +1,32 @@
1
+ # encoding: utf-8
2
+
3
+ describe "BATCH" do
4
+
5
+ let(:root) { QueryBuilder::CQL }
6
+ let(:keyspace) { root.keyspace(:wildlife) }
7
+ let(:table) { keyspace.table(:species) }
8
+ let(:insert) { table.insert(name: :tiger) }
9
+ let(:delete) { table.delete(:name).where(name: :tiger) }
10
+ let(:statement) { root.batch.add(delete).add(insert) }
11
+
12
+ it_behaves_like :query_builder do
13
+ subject { statement }
14
+ let(:cql) { "BEGIN BATCH DELETE name FROM wildlife.species WHERE name = 'tiger'; INSERT INTO wildlife.species (name) VALUES ('tiger'); APPLY BATCH;" }
15
+ end
16
+
17
+ it_behaves_like :query_builder do
18
+ subject { statement.unlogged }
19
+ let(:cql) { "BEGIN UNLOGGED BATCH DELETE name FROM wildlife.species WHERE name = 'tiger'; INSERT INTO wildlife.species (name) VALUES ('tiger'); APPLY BATCH;" }
20
+ end
21
+
22
+ it_behaves_like :query_builder do
23
+ subject { statement.counter }
24
+ let(:cql) { "BEGIN COUNTER BATCH DELETE name FROM wildlife.species WHERE name = 'tiger'; INSERT INTO wildlife.species (name) VALUES ('tiger'); APPLY BATCH;" }
25
+ end
26
+
27
+ it_behaves_like :query_builder do
28
+ subject { statement.timestamp(100) }
29
+ let(:cql) { "BEGIN BATCH USING TIMESTAMP 100 DELETE name FROM wildlife.species WHERE name = 'tiger'; INSERT INTO wildlife.species (name) VALUES ('tiger'); APPLY BATCH;" }
30
+ end
31
+
32
+ end # describe BATCH
@@ -0,0 +1,31 @@
1
+ # encoding: utf-8
2
+
3
+ describe "CREATE AGGREGATE" do
4
+
5
+ let(:aggregate) do
6
+ QueryBuilder::CQL.keyspace(:wildlife).aggregate(:numAverage)
7
+ end
8
+
9
+ let(:statement) { aggregate.create }
10
+
11
+ it_behaves_like :query_builder do
12
+ subject { statement }
13
+ let(:cql) { "CREATE AGGREGATE wildlife.numAverage ();" }
14
+ end
15
+
16
+ it_behaves_like :query_builder do
17
+ subject do
18
+ statement
19
+ .or_replace
20
+ .if_not_exists
21
+ .argument(:input, :int)
22
+ .sfunc(:avgState)
23
+ .stype(:bigint)
24
+ .finalfunc(:avgFinal)
25
+ .initcond(0, 0)
26
+ end
27
+
28
+ let(:cql) { "CREATE OR REPLACE AGGREGATE IF NOT EXISTS wildlife.numAverage (input int) SFUNC avgState STYPE bigint FINALFUNC avgFinal INITCOND (0, 0);" }
29
+ end
30
+
31
+ end # describe CREATE AGGREGATE
@@ -0,0 +1,29 @@
1
+ # encoding: utf-8
2
+
3
+ describe "CREATE FUNCTION" do
4
+
5
+ let(:function) do
6
+ QueryBuilder::CQL.keyspace(:wildlife).function(:count_species)
7
+ end
8
+
9
+ let(:statement) { function.create(:java, "return MyClass.count(input));") }
10
+
11
+ it_behaves_like :query_builder do
12
+ subject { statement }
13
+ let(:cql) { "CREATE FUNCTION wildlife.count_species () RETURNS NULL ON NULL INPUT LANGUAGE 'java' AS 'return MyClass.count(input));';" }
14
+ end
15
+
16
+ it_behaves_like :query_builder do
17
+ subject do
18
+ statement
19
+ .or_replace
20
+ .if_not_exists
21
+ .argument(:input, :double)
22
+ .returns(:int)
23
+ .called_on_null
24
+ end
25
+
26
+ let(:cql) { "CREATE OR REPLACE FUNCTION IF NOT EXISTS wildlife.count_species (input double) CALLED ON NULL INPUT RETURNS int LANGUAGE 'java' AS 'return MyClass.count(input));';" }
27
+ end
28
+
29
+ end # describe CREATE FUNCTION