module Multiwoven::Integrations::Source::SalesforceConsumerGoodsCloud::SchemaHelper

def create_json_schema_for_object(metadata)

def create_json_schema_for_object(metadata)
  fields_schema = metadata["fields"].map do |field|
    {
      "#{field[:name]}": salesforce_field_to_json_schema_type(field)
    }
  end.reduce(:merge)
  json_schema = {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "title": metadata["name"],
    "type": "object",
    "additionalProperties": true,
    "properties": fields_schema
  }
  required = metadata["fields"].map do |field|
    field["name"] if field["nillable"] == false
  end.compact
  primary_key = metadata["fields"].map do |field|
    field["name"] if field["nillable"] == false && field["unique"] == true
  end.compact
  {
    "name": metadata["name"],
    "action": "create",
    "json_schema": json_schema,
    "required": required,
    "supported_sync_modes": %w[incremental],
    "source_defined_primary_key": [primary_key],
    "source_defined_cursor": false,
    "default_cursor_field": nil
  }
end