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