Skip to content

Commit 44ca21d

Browse files
Add object.replace method
1 parent fa93d2d commit 44ca21d

File tree

2 files changed

+49
-1
lines changed

2 files changed

+49
-1
lines changed

lib/weaviate/objects.rb

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,31 @@ def update(
122122
)
123123
validate_consistency_level!(consistency_level) unless consistency_level.nil?
124124

125+
response = client.connection.patch("#{PATH}/#{class_name}/#{id}") do |req|
126+
req.params["consistency_level"] = consistency_level.to_s.upcase unless consistency_level.nil?
127+
128+
req.body = {}
129+
req.body["id"] = id
130+
req.body["class"] = class_name
131+
req.body["properties"] = properties
132+
req.body["vector"] = vector unless vector.nil?
133+
req.body["tenant"] = tenant unless tenant.nil?
134+
end
135+
136+
response.body
137+
end
138+
139+
# Replace an individual data object based on its uuid.
140+
def replace(
141+
class_name:,
142+
id:,
143+
properties:,
144+
vector: nil,
145+
tenant: nil,
146+
consistency_level: nil
147+
)
148+
validate_consistency_level!(consistency_level) unless consistency_level.nil?
149+
125150
response = client.connection.put("#{PATH}/#{class_name}/#{id}") do |req|
126151
req.params["consistency_level"] = consistency_level.to_s.upcase unless consistency_level.nil?
127152

spec/weaviate/objects_spec.rb

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@
132132
let(:response) { OpenStruct.new(success?: true, body: object_fixture) }
133133

134134
before do
135-
allow_any_instance_of(Faraday::Connection).to receive(:put)
135+
allow_any_instance_of(Faraday::Connection).to receive(:patch)
136136
.with("objects/Question/123")
137137
.and_return(response)
138138
end
@@ -151,6 +151,29 @@
151151
end
152152
end
153153

154+
describe "#replace" do
155+
let(:response) { OpenStruct.new(success?: true, body: object_fixture) }
156+
157+
before do
158+
allow_any_instance_of(Faraday::Connection).to receive(:put)
159+
.with("objects/Question/123")
160+
.and_return(response)
161+
end
162+
163+
it "returns the schema" do
164+
response = objects.replace(
165+
class_name: "Question",
166+
id: "123",
167+
properties: {
168+
question: "What does 6 times 7 equal to?",
169+
category: "math",
170+
answer: "42"
171+
}
172+
)
173+
expect(response.dig("class")).to eq("Question")
174+
end
175+
end
176+
154177
describe "#batch_create" do
155178
let(:response) { OpenStruct.new(success?: true, body: objects_fixture) }
156179

0 commit comments

Comments
 (0)