Class: LedgerSync::Ledgers::NetSuite::Searcher
- Defined in:
- lib/ledger_sync/ledgers/netsuite/searcher.rb
Direct Known Subclasses
Account::Searcher, Check::Searcher, Customer::Searcher, CustomerDeposit::Searcher, Department::Searcher, LedgerClass::Searcher, Location::Searcher, LedgerSync::Ledgers::NetSuite::Subsidiary::Searcher, Vendor::Searcher
Instance Attribute Summary
Attributes inherited from Searcher
#client, #pagination, #query, #request
Instance Method Summary collapse
- #query_attributes ⇒ Object
- #query_string ⇒ Object
- #query_table ⇒ Object
- #request_url ⇒ Object
- #resources ⇒ Object
- #searcher_deserializer_class ⇒ Object
Methods included from Mixins::OffsetAndLimitPaginationSearcherMixin
#next_searcher, #previous_searcher
Methods inherited from Searcher
#deserializer_class, #initialize, #next_searcher, #previous_searcher, #search
Methods included from Mixins::SerializationMixin
#deserializer, included, #serializer
Methods included from Mixins::InferSerializerMixin
Methods included from Mixins::InferResourceClassMixin
Constructor Details
This class inherits a constructor from LedgerSync::Ledgers::Searcher
Instance Method Details
#query_attributes ⇒ Object
9 10 11 |
# File 'lib/ledger_sync/ledgers/netsuite/searcher.rb', line 9 def query_attributes @query_attributes ||= searcher_deserializer_class.attributes.values.map(&:hash_attribute) end |
#query_string ⇒ Object
13 14 15 |
# File 'lib/ledger_sync/ledgers/netsuite/searcher.rb', line 13 def query_string "SELECT #{query_attributes.join(', ')} FROM #{query_table}" end |
#query_table ⇒ Object
17 18 19 |
# File 'lib/ledger_sync/ledgers/netsuite/searcher.rb', line 17 def query_table @query_table ||= client.class.ledger_resource_type_for(resource_class: self.class.inferred_resource_class) end |
#request_url ⇒ Object
21 22 23 |
# File 'lib/ledger_sync/ledgers/netsuite/searcher.rb', line 21 def request_url client.api_base_url.gsub('/record/v1', '') + "/query/v1/suiteql?limit=#{limit}&offset=#{offset}" end |
#resources ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/ledger_sync/ledgers/netsuite/searcher.rb', line 25 def resources resource_class = self.class.inferred_resource_class @resources ||= begin @request = client .post( body: { q: query_string.to_s }, request_url: request_url ) case request.status when 200 request.body .fetch('items') .map do |c| searcher_deserializer_class.new.deserialize(hash: c, resource: resource_class.new) end when 404 [] when 400 if request.body["title"].include? "Invalid search query Search error occurred: Record ‘subsidiary’ was not found" raise LedgerSync::Ledgers::NetSuite::Error::SubsidiariesNotEnabled end end end end |
#searcher_deserializer_class ⇒ Object
52 53 54 |
# File 'lib/ledger_sync/ledgers/netsuite/searcher.rb', line 52 def searcher_deserializer_class @searcher_deserializer_class ||= self.class.inferred_serialization_class(type: 'SearcherDeserializer') end |