diff --git a/Gemfile b/Gemfile index d335b17917..d10cf17438 100644 --- a/Gemfile +++ b/Gemfile @@ -43,6 +43,7 @@ gem "kaminari" gem "lodash-rails" gem "lograge" gem "ougai" +gem "oj" gem "parallel", require: false gem "passenger" gem "pg", ">= 0.18", "< 2.0" diff --git a/Gemfile.lock b/Gemfile.lock index 467bb82dee..69205f1ca5 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -606,6 +606,7 @@ DEPENDENCIES memery memory_profiler mock_redis + oj ougai parallel parallel_tests diff --git a/app/controllers/api/v3/sync_controller.rb b/app/controllers/api/v3/sync_controller.rb index 039cc2bf41..a25742f911 100644 --- a/app/controllers/api/v3/sync_controller.rb +++ b/app/controllers/api/v3/sync_controller.rb @@ -11,12 +11,14 @@ def __sync_from_user__(params) end def __sync_to_user__(response_key) - AuditLog.create_logs_async(current_user, records_to_sync, "fetch", Time.current) unless disable_audit_logs? + records = records_to_sync + + AuditLog.create_logs_async(current_user, records, "fetch", Time.current) unless disable_audit_logs? render( - json: { - response_key => records_to_sync.map { |record| transform_to_response(record) }, + json: Oj.dump({ + response_key => records.map { |record| transform_to_response(record) }, "process_token" => encode_process_token(response_process_token) - }, + }, mode: :compat), status: :ok ) end diff --git a/app/transformers/api/v3/facility_transformer.rb b/app/transformers/api/v3/facility_transformer.rb index 3bc9f67b74..860f549785 100644 --- a/app/transformers/api/v3/facility_transformer.rb +++ b/app/transformers/api/v3/facility_transformer.rb @@ -7,7 +7,9 @@ def to_response(facility) "enable_teleconsultation", "teleconsultation_phone_number", "teleconsultation_isd_code", - "teleconsultation_phone_numbers") + "teleconsultation_phone_numbers", + "organization_name", + "facility_group_name") .merge(config: {enable_diabetes_management: facility.enable_diabetes_management, enable_teleconsultation: facility.enable_teleconsultation}, protocol_id: facility.protocol.try(:id)) diff --git a/app/transformers/api/v3/patient_transformer.rb b/app/transformers/api/v3/patient_transformer.rb index e1a559d0ff..07e41b801a 100644 --- a/app/transformers/api/v3/patient_transformer.rb +++ b/app/transformers/api/v3/patient_transformer.rb @@ -59,10 +59,10 @@ def from_nested_request(payload_attributes) def to_nested_response(patient) Api::V3::Transformer.to_response(patient) - .except("address_id") - .except("registration_user_id") - .except("test_data") - .except("deleted_by_user_id") + .except("address_id", + "registration_user_id", + "test_data", + "deleted_by_user_id") .merge( "address" => Api::V3::Transformer.to_response(patient.address), "phone_numbers" => patient.phone_numbers.map do |phone_number| diff --git a/app/transformers/api/v3/transformer.rb b/app/transformers/api/v3/transformer.rb index 0e4c1db30c..256816fc80 100644 --- a/app/transformers/api/v3/transformer.rb +++ b/app/transformers/api/v3/transformer.rb @@ -1,31 +1,33 @@ class Api::V3::Transformer class << self - def from_request(attributes_of_payload) - rename_attributes(attributes_of_payload, key_mapping) + def from_request(payload_attributes) + rename_attributes(payload_attributes, from_request_key_mapping) end def to_response(model) - rename_attributes(model.attributes, inverted_key_mapping).as_json + rename_attributes(model.attributes, to_response_key_mapping).as_json end def rename_attributes(attributes, mapping) - mapping = mapping.with_indifferent_access - attributes - .to_hash - .except(*mapping.values) - .transform_keys! { |key| mapping[key] || key } - .with_indifferent_access + replace_keys(attributes.to_hash, mapping).with_indifferent_access end - def key_mapping + def replace_keys(hsh, mapping) + mapping.each do |k, v| + hsh[v] = hsh.delete(k) + end + hsh + end + + def from_request_key_mapping { "created_at" => "device_created_at", "updated_at" => "device_updated_at" } end - def inverted_key_mapping - key_mapping.invert + def to_response_key_mapping + from_request_key_mapping.invert end end end diff --git a/spec/utils.rb b/spec/utils.rb index 30d484bf13..fd9030c540 100644 --- a/spec/utils.rb +++ b/spec/utils.rb @@ -20,7 +20,7 @@ def to_json_and_back def with_payload_keys Api::V3::Transformer.rename_attributes( - self, Api::V3::Transformer.inverted_key_mapping + self, Api::V3::Transformer.to_response_key_mapping ) end end