Class: EasyMapper::DbRepository
- Inherits:
-
Object
- Object
- EasyMapper::DbRepository
- Defined in:
- lib/easy_mapper/db_repository.rb
Instance Method Summary collapse
- #aggregate(aggregation, field, where_clause) ⇒ Object
- #create(record) ⇒ Object
- #delete(query_filters) ⇒ Object
- #find(query) ⇒ Object
-
#initialize(model, db_adapter) ⇒ DbRepository
constructor
A new instance of DbRepository.
- #next_id ⇒ Object
- #update(id, record) ⇒ Object
Constructor Details
#initialize(model, db_adapter) ⇒ DbRepository
Returns a new instance of DbRepository.
7 8 9 10 11 12 13 |
# File 'lib/easy_mapper/db_repository.rb', line 7 def initialize(model, db_adapter) @model = model @db_adapter = db_adapter @sql = db_adapter.sql_builder @db_adapter.connect end |
Instance Method Details
#aggregate(aggregation, field, where_clause) ⇒ Object
65 66 67 68 69 70 71 72 73 74 |
# File 'lib/easy_mapper/db_repository.rb', line 65 def aggregate(aggregation, field, where_clause) sql_builder = @sql.select .from(@model.table_name) .aggregation(aggregation, field) sql_builder.where(where_clause) unless where_clause.empty? sql_query = sql_builder.build @db_adapter.execute(sql_query).single_value end |
#create(record) ⇒ Object
15 16 17 18 19 20 21 22 |
# File 'lib/easy_mapper/db_repository.rb', line 15 def create(record) query = @sql.insert .into(@model.table_name) .record(record) .build @db_adapter.execute(query) end |
#delete(query_filters) ⇒ Object
24 25 26 27 28 29 30 31 |
# File 'lib/easy_mapper/db_repository.rb', line 24 def delete(query_filters) query = @sql.delete .from(@model.table_name) .where(query_filters) .build @db_adapter.execute(query) end |
#find(query) ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/easy_mapper/db_repository.rb', line 45 def find(query) sql_builder = @sql.select .column('*', from: 'model') .from(@model.table_name, aliaz: 'model') build_join(sql_builder) sql_builder.where(query.where) unless query.where.empty? sql_builder.order(query.order) unless query.order.empty? sql_builder.limit(query.limit) if query.limit sql_builder.offset(query.offset) if query.offset sql_query = sql_builder.build @db_adapter.execute(sql_query).list end |
#next_id ⇒ Object
61 62 63 |
# File 'lib/easy_mapper/db_repository.rb', line 61 def next_id @db_adapter.next_id(@model.table_name) end |
#update(id, record) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/easy_mapper/db_repository.rb', line 33 def update(id, record) values_to_update = record.reject { |key, _value| key.eql? :id }.to_h query = @sql.update .table(@model.table_name) .where(id: id) .set(values_to_update) .build @db_adapter.execute(query) end |