module NSWTopo::ArcGIS::Query

def base_query(**options)

def base_query(**options)
  case
  when @unique
    raise UniqueFieldError
  when @geometry
    raise "polgyon geometry required" unless @geometry.polygon?
    options[:geometry] = { rings: @geometry.reproject_to(projection).coordinates.map(&:reverse) }.to_json
    options[:geometryType] = "esriGeometryPolygon"
    options[:where] = join_clauses(*@where) if @where
  when @where
    options[:where] = join_clauses(*@where)
  else
    oid_field = @layer["fields"].find do |field|
      field["type"] == "esriFieldTypeOID"
    end&.fetch("name")
    options[:where] = oid_field ? "#{oid_field} IS NOT NULL" : "1=1"
  end
  options
end