Module: Quickbooks::Service::ServiceCrud

Included in:
BaseService, TimeActivity
Defined in:
lib/quickbooks/service/service_crud.rb

Instance Method Summary collapse

Instance Method Details

#create(entity, options = {}) ⇒ Object Also known as: update



24
25
26
27
28
29
30
31
32
33
# File 'lib/quickbooks/service/service_crud.rb', line 24

def create(entity, options = {})
  raise Quickbooks::InvalidModelException.new(entity.errors.full_messages.join(',')) unless entity.valid?
  xml = entity.to_xml_ns(options)
  response = do_http_post(url_for_resource(model.resource_for_singular), valid_xml_document(xml))
  if response.code.to_i == 200
    model.from_xml(parse_singular_entity_response(model, response.plain_body))
  else
    nil
  end
end

#delete(entity) ⇒ Object

Raises:

  • (NotImplementedError)


36
37
38
# File 'lib/quickbooks/service/service_crud.rb', line 36

def delete(entity)
  raise NotImplementedError
end

#delete_by_query_string(entity, options = {}) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
# File 'lib/quickbooks/service/service_crud.rb', line 40

def delete_by_query_string(entity, options = {})
  url = "#{url_for_resource(model::REST_RESOURCE)}?operation=delete"

  xml = entity.to_xml_ns(options)
  response = do_http_post(url, valid_xml_document(xml))
  if response.code.to_i == 200
    parse_singular_entity_response_for_delete(model, response.plain_body)
  else
    false
  end
end

#fetch_by_id(id, options = {}) ⇒ Object



19
20
21
22
# File 'lib/quickbooks/service/service_crud.rb', line 19

def fetch_by_id(id, options = {})
  url = "#{url_for_resource(model.resource_for_singular)}/#{id}"
  fetch_object(model, url, options)
end

#query(object_query = nil, options = {}) ⇒ Object



5
6
7
# File 'lib/quickbooks/service/service_crud.rb', line 5

def query(object_query = nil, options = {})
  fetch_collection(object_query, model, options)
end

#query_in_batches(object_query = nil, options = {}) ⇒ Object



9
10
11
12
13
14
15
16
17
# File 'lib/quickbooks/service/service_crud.rb', line 9

def query_in_batches(object_query=nil, options={})
  page = 0
  per_page = options.delete(:per_page) || 1_000
  begin
    page += 1
    results = query(object_query, page: page, per_page: per_page)
    yield results if results.count > 0
  end until results.count < per_page
end