lib/wolf_core/infrastructure/fkm_operations.rb
module WolfCore module FkmOperations include WolfCore::HttpOperations include WolfCore::LoggingUtils def get_foreign_key_destination_id(tenant:, source:, source_id:, destination:) foreign_keys = get_foreign_keys(tenant: tenant, source: source, source_id: source_id) foreign_key = foreign_keys.find { |fk| fk['destination'] == destination } foreign_key&.dig('destination_id') end def get_foreign_keys(tenant:, source:, source_id:) response = http_get( url: "#{ENV['FKM_URL']}/Prod/lookup?tenant=#{tenant}&source=#{source}&source_id=#{source_id}" ) response = parse_http_response(response) log_object 'get_foreign_keys response is' log_object response validate_http_response(response: response, message: 'Error getting foreign keys') response.body end def get_foreign_keys_by_destination(tenant:, destination:, destination_id:) response = http_get( url: "#{ENV['FKM_URL']}/Prod/lookup?tenant=#{tenant}&destination=#{destination}&destination_id=#{destination_id}" ) response = parse_http_response(response) log_object 'get_foreign_keys_by_destination response is' log_object response validate_http_response(response: response, message: 'Error getting foreign keys by destination id') response.body end def create_foreign_key(tenant:, source:, source_id:, destination:, destination_id:) response = http_post( url: "#{ENV['FKM_URL']}/Prod/create", body: { tenant: tenant, source: source, source_id: source_id, destination: destination, destination_id: destination_id } ) response = parse_http_response(response) log_object 'create_foreign_key response is' log_object response validate_http_response(response: response, message: 'Error creating foreign key') parse_http_response(response).body end # def find_or_create_foreign_key(tenant:, source:, source_id:, destination:, destination_id:) # destination_id = get_foreign_key_destination_id( # tenant: tenant, source: source, source_id: source_id, # destination: destination # ) # return Result.success(data: { operation: :find }) if destination_id.present? # create_foreign_key( # tenant: tenant, source: source, source_id: source_id, # destination: destination, destination_id: destination_id # ) # Result.success(data: { operation: :create }) # end end end