Module: Sequencescape::Api::V2
- Defined in:
- app/sequencescape/sequencescape/api/v2.rb
Overview
Interface for the json API based Sequencescape V2 api Contains query plans
Constant Summary collapse
- PLATE_PRESENTER_INCLUDES =
:purpose, { child_plates: :purpose }, { wells: [ { downstream_tubes: 'purpose', requests_as_source: %w[request_type primer_panel pre_capture_pool submission], aliquots: ['sample.sample_metadata', { request: %w[request_type primer_panel pre_capture_pool submission] }], qc_results: [] } ] } ].freeze
Class Method Summary collapse
- .additional_plates_for_presenter(query) ⇒ Object
-
.merge_page_results(query_builder) ⇒ Object
Retrieves results of query builder (JsonApiClient::Query::Builder) page by page and combines them into one list.
-
.minimal_labware_by_barcode(barcode, select: :uuid) ⇒ Sequencescape::V2::Api::Labware
Returns a V2::Api::Labware object with just the UUID, suitable for redirection.
- .plate_for_completion(uuid) ⇒ Object
-
.plate_for_presenter(query) ⇒ Object
sample_description added into includes here for use in bioscan plate label creation.
- .plate_with_custom_includes(include_params, search_params) ⇒ Object
- .plate_with_wells(uuid) ⇒ Object
- .tube_for_completion(uuid) ⇒ Object
- .tube_rack_for_presenter(query) ⇒ Object
- .tube_with_custom_includes(include_params, select_params, search_params) ⇒ Object
Class Method Details
.additional_plates_for_presenter(query) ⇒ Object
47 48 49 |
# File 'app/sequencescape/sequencescape/api/v2.rb', line 47 def self.additional_plates_for_presenter(query) Plate.includes(*PLATE_PRESENTER_INCLUDES).find(query) end |
.merge_page_results(query_builder) ⇒ Object
Retrieves results of query builder (JsonApiClient::Query::Builder) page by page and combines them into one list
86 87 88 89 90 91 92 93 |
# File 'app/sequencescape/sequencescape/api/v2.rb', line 86 def self.merge_page_results(query_builder) total_pages = query_builder.pages.total_pages first_page = query_builder.to_a.dup (2..total_pages).reduce(first_page) do |all_pages, page_number| current_page = query_builder.page(page_number).to_a all_pages.concat(current_page) end end |
.minimal_labware_by_barcode(barcode, select: :uuid) ⇒ Sequencescape::V2::Api::Labware
Returns a V2::Api::Labware object with just the UUID, suitable for redirection
28 29 30 31 32 33 |
# File 'app/sequencescape/sequencescape/api/v2.rb', line 28 def self.(, select: :uuid) Sequencescape::Api::V2::Labware .where(barcode: ) .select(tube_racks: select, plates: select, tubes: select) .first end |
.plate_for_completion(uuid) ⇒ Object
65 66 67 |
# File 'app/sequencescape/sequencescape/api/v2.rb', line 65 def self.plate_for_completion(uuid) Plate.includes('wells.aliquots.request.submission,wells.aliquots.request.request_type').find(uuid: uuid).first end |
.plate_for_presenter(query) ⇒ Object
sample_description added into includes here for use in bioscan plate label creation
36 37 38 39 40 41 42 43 44 45 |
# File 'app/sequencescape/sequencescape/api/v2.rb', line 36 def self.plate_for_presenter(query) Plate .includes(*PLATE_PRESENTER_INCLUDES) .select( submissions: 'lanes_of_sequencing', sample_metadata: %w[sample_common_name collected_by sample_description] ) .find(query) .first end |
.plate_with_custom_includes(include_params, search_params) ⇒ Object
76 77 78 |
# File 'app/sequencescape/sequencescape/api/v2.rb', line 76 def self.plate_with_custom_includes(include_params, search_params) Plate.includes(include_params).find(search_params).first end |
.plate_with_wells(uuid) ⇒ Object
51 52 53 |
# File 'app/sequencescape/sequencescape/api/v2.rb', line 51 def self.plate_with_wells(uuid) Plate.includes('wells').find(uuid: uuid).first end |
.tube_for_completion(uuid) ⇒ Object
69 70 71 72 73 74 |
# File 'app/sequencescape/sequencescape/api/v2.rb', line 69 def self.tube_for_completion(uuid) Tube .includes('receptacle.aliquots.request.submission,receptacle.aliquots.request.request_type') .find(uuid: uuid) .first end |
.tube_rack_for_presenter(query) ⇒ Object
55 56 57 58 59 60 61 62 63 |
# File 'app/sequencescape/sequencescape/api/v2.rb', line 55 def self.tube_rack_for_presenter(query) TubeRack .includes( 'racked_tubes.tube.purpose,' \ 'racked_tubes.tube.receptacle.aliquots.request.request_type' ) .find(query) .first end |
.tube_with_custom_includes(include_params, select_params, search_params) ⇒ Object
80 81 82 |
# File 'app/sequencescape/sequencescape/api/v2.rb', line 80 def self.tube_with_custom_includes(include_params, select_params, search_params) Tube.includes(include_params).select(select_params).find(search_params).first end |