Module: Sequel::ColdColDatabase
- Defined in:
- lib/sequel/extensions/cold_col.rb
Defined Under Namespace
Classes: SchemaRegistry
Class Method Summary collapse
-
.extended(db) ⇒ Object
Sets up the cold column tracking when the extension is loaded.
Instance Method Summary collapse
-
#add_table_schema(name, info) ⇒ Object
Manually add schema information for a table.
-
#cold_col_registry ⇒ SchemaRegistry
Access the schema registry for this database instance.
- #columns_from_generator(generator) ⇒ Object
- #columns_from_sql(sql) ⇒ Object
- #create_table_as(name, sql, options = {}) ⇒ Object
- #create_table_from_generator(name, generator, options) ⇒ Object
- #create_table_sql(name, generator, options) ⇒ Object
- #create_view_sql(name, source, options) ⇒ Object
-
#load_schema(path) ⇒ Object
Load table schema information from a YAML file.
- #record_table(name, columns) ⇒ Object
- #record_view(name, columns) ⇒ Object
Class Method Details
.extended(db) ⇒ Object
Sets up the cold column tracking when the extension is loaded
146 147 148 149 |
# File 'lib/sequel/extensions/cold_col.rb', line 146 def self.extended(db) db.extend_datasets(ColdColDataset) db.instance_variable_set(:@cold_col_registry, SchemaRegistry.new(db)) end |
Instance Method Details
#add_table_schema(name, info) ⇒ Object
Manually add schema information for a table
169 170 171 |
# File 'lib/sequel/extensions/cold_col.rb', line 169 def add_table_schema(name, info) cold_col_registry.add_schema(name, info) end |
#cold_col_registry ⇒ SchemaRegistry
Access the schema registry for this database instance.
154 155 156 |
# File 'lib/sequel/extensions/cold_col.rb', line 154 def cold_col_registry @cold_col_registry end |
#columns_from_generator(generator) ⇒ Object
209 210 211 |
# File 'lib/sequel/extensions/cold_col.rb', line 209 def columns_from_generator(generator) generator.columns.map { |c| [c[:name], c] } end |
#columns_from_sql(sql) ⇒ Object
205 206 207 |
# File 'lib/sequel/extensions/cold_col.rb', line 205 def columns_from_sql(sql) sql.columns end |
#create_table_as(name, sql, options = {}) ⇒ Object
173 174 175 176 177 |
# File 'lib/sequel/extensions/cold_col.rb', line 173 def create_table_as(name, sql, = {}) super.tap do |_| record_table(name, columns_from_sql(sql)) end end |
#create_table_from_generator(name, generator, options) ⇒ Object
179 180 181 182 183 |
# File 'lib/sequel/extensions/cold_col.rb', line 179 def create_table_from_generator(name, generator, ) super.tap do |_| record_table(name, columns_from_generator(generator)) end end |
#create_table_sql(name, generator, options) ⇒ Object
185 186 187 188 189 |
# File 'lib/sequel/extensions/cold_col.rb', line 185 def create_table_sql(name, generator, ) super.tap do |_| record_table(name, columns_from_generator(generator)) end end |
#create_view_sql(name, source, options) ⇒ Object
191 192 193 194 195 |
# File 'lib/sequel/extensions/cold_col.rb', line 191 def create_view_sql(name, source, ) super.tap do |_| record_view(name, columns_from_sql(source)) unless [:dont_record] end end |
#load_schema(path) ⇒ Object
Load table schema information from a YAML file
159 160 161 162 163 164 165 166 |
# File 'lib/sequel/extensions/cold_col.rb', line 159 def load_schema(path) schema_data = Psych.load_file(path) || {} schemas = schema_data.to_h do |table, info| columns = (info[:columns] || {}).map { |column_name, col_info| [column_name.to_sym, col_info] } [table.to_s, columns] end cold_col_registry.merge_schemas(schemas) end |
#record_table(name, columns) ⇒ Object
197 198 199 |
# File 'lib/sequel/extensions/cold_col.rb', line 197 def record_table(name, columns) cold_col_registry.add_created_table(literal(name), columns) end |
#record_view(name, columns) ⇒ Object
201 202 203 |
# File 'lib/sequel/extensions/cold_col.rb', line 201 def record_view(name, columns) cold_col_registry.add_created_view(literal(name), columns) end |