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