Class: MyActiveRecord::Database
- Inherits:
-
Object
- Object
- MyActiveRecord::Database
- Defined in:
- lib/my_active_record/database.rb
Class Method Summary collapse
- .adapter ⇒ Object
- .adapter=(adapter) ⇒ Object
- .establish_connection(params) ⇒ Object
- .insert(table_name, model) ⇒ Object
- .last(table_name) ⇒ Object
- .load_database_schema ⇒ Object
- .load_table_schema(table_name) ⇒ Object
- .table_to_model(table_name) ⇒ Object
- .update(table_name, model) ⇒ Object
- .where(table_name, params) ⇒ Object
Class Method Details
.adapter ⇒ Object
54 55 56 |
# File 'lib/my_active_record/database.rb', line 54 def adapter @adapter || raise("Database adapter is not set") end |
.adapter=(adapter) ⇒ Object
50 51 52 |
# File 'lib/my_active_record/database.rb', line 50 def adapter=(adapter) @adapter = adapter end |
.establish_connection(params) ⇒ Object
4 5 6 7 8 9 10 11 |
# File 'lib/my_active_record/database.rb', line 4 def establish_connection(params) if params.delete(:adapter) == "csv" self.adapter = MyActiveRecord::CsvAdapter.new(params) else raise "Unsupported adapter type" end load_database_schema end |
.insert(table_name, model) ⇒ Object
37 38 39 40 |
# File 'lib/my_active_record/database.rb', line 37 def insert(table_name, model) model.id = model.class.last.id.to_i + 1 adapter.insert(table_name, model.to_row) end |
.last(table_name) ⇒ Object
46 47 48 |
# File 'lib/my_active_record/database.rb', line 46 def last(table_name) table_to_model(table_name).load_data(adapter.last(table_name)) end |
.load_database_schema ⇒ Object
17 18 19 20 21 22 23 |
# File 'lib/my_active_record/database.rb', line 17 def load_database_schema @tables = {} MyActiveRecord::Base.descendants.each do |descendant| @tables[descendant.table_name] = descendant load_table_schema(descendant.table_name) if descendant.name end end |
.load_table_schema(table_name) ⇒ Object
25 26 27 |
# File 'lib/my_active_record/database.rb', line 25 def load_table_schema(table_name) table_to_model(table_name).fields = adapter.load_table_schema(table_name) end |
.table_to_model(table_name) ⇒ Object
13 14 15 |
# File 'lib/my_active_record/database.rb', line 13 def table_to_model(table_name) @tables[table_name] end |
.update(table_name, model) ⇒ Object
42 43 44 |
# File 'lib/my_active_record/database.rb', line 42 def update(table_name, model) adapter.update(table_name, model.to_row) end |
.where(table_name, params) ⇒ Object
29 30 31 32 33 34 35 |
# File 'lib/my_active_record/database.rb', line 29 def where(table_name, params) results = adapter.where(table_name, params) model = table_to_model(table_name) results.map do |result| model.load_data(result) end end |