Module: Harvest::Behavior::Crud
- Included in:
- API::Clients, API::Contacts, API::ExpenseCategories, API::Expenses, API::InvoiceCategories, API::Invoices, API::Projects, API::Tasks, API::TimeEntry, API::Users
- Defined in:
- lib/harvest/behavior/crud.rb
Instance Method Summary collapse
-
#all(query_options = {}) ⇒ Array<Harvest::BaseModel>
Retrieves all items.
-
#create(model) ⇒ Harvest::BaseModel
Creates an item.
-
#delete(model) ⇒ Integer
Deletes an item.
-
#find(id, query_options = {}) ⇒ Harvest::BaseModel
Retrieves an item by id.
-
#update(model) ⇒ Harvest::BaseModel
Updates an item.
Instance Method Details
#all(query_options = {}) ⇒ Array<Harvest::BaseModel>
Retrieves all items
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/harvest/behavior/crud.rb', line 6 def all( = {}) response = request(:get, credentials, api_model.api_path, query: ) response_parsed = api_model.to_json(response.parsed_response) if response_parsed['total_pages'] > 1 counter = response_parsed['page'] while counter <= response_parsed['total_pages'] do counter += 1 = .merge!({ 'page' => counter }) response_page = request(:get, credentials, api_model.api_path, query: ) page_result = api_model.to_json(response_page.parsed_response) response_parsed[api_model.json_root.pluralize.to_s] .concat(page_result[api_model.json_root.pluralize.to_s]) end end api_model.parse(response_parsed) end |
#create(model) ⇒ Harvest::BaseModel
Creates an item
47 48 49 50 51 52 |
# File 'lib/harvest/behavior/crud.rb', line 47 def create(model) model = api_model.wrap(model) response = request(:post, credentials, api_model.api_path, body: model.to_json) model = api_model.parse(response.parsed_response).first find(model.id) end |
#delete(model) ⇒ Integer #delete(id) ⇒ Integer #delete(id) ⇒ Integer
Deletes an item
73 74 75 76 77 |
# File 'lib/harvest/behavior/crud.rb', line 73 def delete(model) model = api_model.wrap(model) response = request(:delete, credentials, "#{api_model.api_path}/#{model.id}") model.id end |
#find(id) ⇒ Harvest::BaseModel #find(id) ⇒ Harvest::BaseModel #find(model) ⇒ Harvest::BaseModel
Retrieves an item by id
37 38 39 40 41 42 |
# File 'lib/harvest/behavior/crud.rb', line 37 def find(id, = {}) raise 'ID is required' unless id response = request(:get, credentials, "#{api_model.api_path}/#{id}", query: ) api_model.parse(response.parsed_response).first end |
#update(model) ⇒ Harvest::BaseModel
Updates an item
57 58 59 60 61 62 |
# File 'lib/harvest/behavior/crud.rb', line 57 def update(model) model = api_model.wrap(model) response = request(:put, credentials, "#{api_model.api_path}/#{model.id}", body: model.to_json) model = api_model.parse(response.parsed_response).first find(model.id) end |