diff --git a/lib/weaviate/objects.rb b/lib/weaviate/objects.rb index d3d50e2..cb29c63 100644 --- a/lib/weaviate/objects.rb +++ b/lib/weaviate/objects.rb @@ -115,6 +115,29 @@ def update( ) validate_consistency_level!(consistency_level) unless consistency_level.nil? + response = client.connection.patch("#{PATH}/#{class_name}/#{id}") do |req| + req.params["consistency_level"] = consistency_level.to_s.upcase unless consistency_level.nil? + + req.body = {} + req.body["id"] = id + req.body["class"] = class_name + req.body["properties"] = properties + req.body["vector"] = vector unless vector.nil? + end + + response.body + end + + # Replace an individual data object based on its uuid. + def replace( + class_name:, + id:, + properties:, + vector: nil, + consistency_level: nil + ) + validate_consistency_level!(consistency_level) unless consistency_level.nil? + response = client.connection.put("#{PATH}/#{class_name}/#{id}") do |req| req.params["consistency_level"] = consistency_level.to_s.upcase unless consistency_level.nil? diff --git a/lib/weaviate/schema.rb b/lib/weaviate/schema.rb index fac1864..7281622 100644 --- a/lib/weaviate/schema.rb +++ b/lib/weaviate/schema.rb @@ -76,6 +76,39 @@ def update( properties: nil, inverted_index_config: nil, replication_config: nil + ) + response = client.connection.patch("#{PATH}/#{class_name}") do |req| + req.body = {} + req.body["class"] = class_name unless class_name.nil? + req.body["description"] = description unless description.nil? + req.body["vectorIndexType"] = vector_index_type unless vector_index_type.nil? + req.body["vectorIndexConfig"] = vector_index_config unless vector_index_config.nil? + req.body["vectorizer"] = vectorizer unless vectorizer.nil? + req.body["moduleConfig"] = module_config unless module_config.nil? + req.body["properties"] = properties unless properties.nil? + req.body["invertedIndexConfig"] = inverted_index_config unless inverted_index_config.nil? + req.body["replicationConfig"] = replication_config unless replication_config.nil? + end + + if response.success? + end + response.body + end + + # Update settings of an existing schema class. + # TODO: Fix it. + # This endpoint keeps returning the following error: + # => {"error"=>[{"message"=>"properties cannot be updated through updating the class. Use the add property feature (e.g. \"POST /v1/schema/{className}/properties\") to add additional properties"}]} + def replace( + class_name:, + description: nil, + vector_index_type: nil, + vector_index_config: nil, + vectorizer: nil, + module_config: nil, + properties: nil, + inverted_index_config: nil, + replication_config: nil ) response = client.connection.put("#{PATH}/#{class_name}") do |req| req.body = {}