@@ -38,6 +38,10 @@ def initialize(keyspace,
3838 @clustering_order = clustering_order . freeze
3939 @indexes = [ ]
4040 @indexes_hash = { }
41+ @materialized_views = [ ]
42+ @materialized_views_hash = { }
43+ @triggers = [ ]
44+ @triggers_hash = { }
4145 end
4246
4347 # @param name [String] index name
@@ -68,6 +72,62 @@ def each_index(&block)
6872 end
6973 alias indexes each_index
7074
75+ # @param name [String] trigger name
76+ # @return [Boolean] whether this table has a given trigger
77+ def has_trigger? ( name )
78+ @triggers_hash . key? ( name )
79+ end
80+
81+ # @param name [String] trigger name
82+ # @return [Cassandra::Trigger, nil] a trigger or nil
83+ def trigger ( name )
84+ @triggers_hash [ name ]
85+ end
86+
87+ # Yield or enumerate each trigger bound to this table
88+ # @overload each_trigger
89+ # @yieldparam trigger [Cassandra::Index] current trigger
90+ # @return [Cassandra::Table] self
91+ # @overload each_trigger
92+ # @return [Array<Cassandra::Trigger>] a list of triggers
93+ def each_trigger ( &block )
94+ if block_given?
95+ @triggers . each ( &block )
96+ self
97+ else
98+ @triggers . freeze
99+ end
100+ end
101+ alias triggers each_trigger
102+
103+ # @param name [String] materialized view name
104+ # @return [Boolean] whether this table has a given materialized view
105+ def has_materialized_view? ( name )
106+ @materialized_views_hash . key? ( name )
107+ end
108+
109+ # @param name [String] materialized view name
110+ # @return [Cassandra::MaterializedView, nil] a materialized view or nil
111+ def materialized_view ( name )
112+ @materialized_views_hash [ name ]
113+ end
114+
115+ # Yield or enumerate each materialized view bound to this table
116+ # @overload each_materialized_view
117+ # @yieldparam materialized_view [Cassandra::MaterializedView] current materialized view
118+ # @return [Cassandra::Table] self
119+ # @overload each_materialized_view
120+ # @return [Array<Cassandra::MaterializedView>] a list of materialized views
121+ def each_materialized_view ( &block )
122+ if block_given?
123+ @materialized_views . each ( &block )
124+ self
125+ else
126+ @materialized_views . freeze
127+ end
128+ end
129+ alias materialized_views each_materialized_view
130+
71131 # @return [String] a cql representation of this table
72132 def to_cql
73133 cql = "CREATE TABLE #{ Util . escape_name ( @keyspace . name ) } .#{ Util . escape_name ( @name ) } (\n "
@@ -134,6 +194,18 @@ def add_index(index)
134194 @indexes_hash [ index . name ] = index
135195 end
136196
197+ # @private
198+ def add_view ( view )
199+ @materialized_views << view
200+ @materialized_views_hash [ view . name ] = view
201+ end
202+
203+ # @private
204+ def add_trigger ( trigger )
205+ @triggers << trigger
206+ @triggers_hash [ trigger . name ] = trigger
207+ end
208+
137209 # @private
138210 def eql? ( other )
139211 other . is_a? ( Table ) &&
0 commit comments