@@ -23,63 +23,81 @@ def list(
2323 req . params [ "sort" ] = sort unless sort . nil?
2424 req . params [ "order" ] = order unless order . nil?
2525 end
26- Response ::Collection . from_response ( response . body , key : "objects" , type : Response ::Object )
26+
27+ response . body
2728 end
2829
2930 # Create a new data object. The provided meta-data and schema values are validated.
3031 def create (
3132 class_name :,
3233 properties :,
34+ consistency_level : nil ,
3335 id : nil ,
3436 vector : nil
3537 )
38+ validate_consistency_level! ( consistency_level ) unless consistency_level . nil?
39+
3640 response = client . connection . post ( PATH ) do |req |
41+ unless consistency_level . nil?
42+ req . params = {
43+ consistency_level : consistency_level . to_s . upcase
44+ }
45+ end
46+
3747 req . body = { }
3848 req . body [ "class" ] = class_name
3949 req . body [ "properties" ] = properties
4050 req . body [ "id" ] = id unless id . nil?
4151 req . body [ "vector" ] = vector unless vector . nil?
4252 end
4353
44- if response . success?
45- Weaviate ::Response ::Object . new ( response . body )
46- else
47- response . body
48- end
54+ response . body
4955 end
5056
5157 # Batch create objects
52- def batch_create ( objects :)
58+ def batch_create (
59+ objects :,
60+ consistency_level : nil
61+ )
62+ validate_consistency_level! ( consistency_level ) unless consistency_level . nil?
63+
5364 response = client . connection . post ( "batch/#{ PATH } " ) do |req |
65+ req . params [ "consistency_level" ] = consistency_level . to_s . upcase unless consistency_level . nil?
5466 req . body = { objects : objects }
5567 end
5668
57- if response . success?
58- Response ::Collection . from_response ( response . body , type : Response ::Object )
59- end
69+ response . body
6070 end
6171
6272 # Get a single data object.
6373 def get (
6474 class_name :,
6575 id :,
66- include : nil
76+ include : nil ,
77+ consistency_level : nil
6778 )
68- # TODO: validate `include` param values
69- # include | query | param | string | Include additional information, such as classification info. Allowed values include: classification, vector.
79+ validate_consistency_level! ( consistency_level ) unless consistency_level . nil?
7080
7181 response = client . connection . get ( "#{ PATH } /#{ class_name } /#{ id } " ) do |req |
82+ req . params [ "consistency_level" ] = consistency_level . to_s . upcase unless consistency_level . nil?
7283 req . params [ "include" ] = include unless include . nil?
7384 end
7485
75- if response . success?
76- Weaviate ::Response ::Object . new ( response . body )
77- end
86+ response . body
7887 end
7988
8089 # Check if a data object exists
81- def exists? ( class_name :, id :)
82- response = client . connection . head ( "#{ PATH } /#{ class_name } /#{ id } " )
90+ def exists? (
91+ class_name :,
92+ id :,
93+ consistency_level : nil
94+ )
95+ validate_consistency_level! ( consistency_level ) unless consistency_level . nil?
96+
97+ response = client . connection . head ( "#{ PATH } /#{ class_name } /#{ id } " ) do |req |
98+ req . params [ "consistency_level" ] = consistency_level . to_s . upcase unless consistency_level . nil?
99+ end
100+
83101 response . status == 204
84102 end
85103
@@ -88,24 +106,41 @@ def update(
88106 class_name :,
89107 id :,
90108 properties :,
91- vector : nil
109+ vector : nil ,
110+ consistency_level : nil
92111 )
112+ validate_consistency_level! ( consistency_level ) unless consistency_level . nil?
113+
93114 response = client . connection . put ( "#{ PATH } /#{ class_name } /#{ id } " ) do |req |
115+ req . params [ "consistency_level" ] = consistency_level . to_s . upcase unless consistency_level . nil?
116+
94117 req . body = { }
95118 req . body [ "id" ] = id
96119 req . body [ "class" ] = class_name
97120 req . body [ "properties" ] = properties
98121 req . body [ "vector" ] = vector unless vector . nil?
99122 end
100- if response . success?
101- Weaviate ::Response ::Object . new ( response . body )
102- end
123+
124+ response . body
103125 end
104126
105127 # Delete an individual data object from Weaviate.
106- def delete ( class_name :, id :)
107- response = client . connection . delete ( "#{ PATH } /#{ class_name } /#{ id } " )
108- response . success? && response . body . empty?
128+ def delete (
129+ class_name :,
130+ id :,
131+ consistency_level : nil
132+ )
133+ validate_consistency_level! ( consistency_level ) unless consistency_level . nil?
134+
135+ response = client . connection . delete ( "#{ PATH } /#{ class_name } /#{ id } " ) do |req |
136+ req . params [ "consistency_level" ] = consistency_level . to_s . upcase unless consistency_level . nil?
137+ end
138+
139+ if response . success?
140+ response . body . empty?
141+ else
142+ response . body
143+ end
109144 end
110145
111146 def batch_delete (
@@ -116,7 +151,12 @@ def batch_delete(
116151 dry_run : nil
117152 )
118153 path = "batch/#{ PATH } "
119- path << "?consistency_level=#{ consistency_level } " unless consistency_level . nil?
154+
155+ unless consistency_level . nil?
156+ validate_consistency_level! ( consistency_level )
157+
158+ path << "?consistency_level=#{ consistency_level . to_s . upcase } "
159+ end
120160
121161 response = client . connection . delete ( path ) do |req |
122162 req . body = {
@@ -133,7 +173,31 @@ def batch_delete(
133173 end
134174
135175 # Validate a data object
136- # def validate
137- # end
176+ def validate (
177+ class_name :,
178+ properties :,
179+ id : nil
180+ )
181+ response = client . connection . post ( "#{ PATH } /validate" ) do |req |
182+ req . body = { }
183+ req . body [ "class" ] = class_name
184+ req . body [ "properties" ] = properties
185+ req . body [ "id" ] = id unless id . nil?
186+ end
187+
188+ if response . success?
189+ response . body . empty?
190+ else
191+ response . body
192+ end
193+ end
194+
195+ private
196+
197+ def validate_consistency_level! ( consistency_level )
198+ unless %w[ ONE QUORUM ALL ] . include? ( consistency_level . to_s . upcase )
199+ raise ArgumentError , 'consistency_level must be either "ONE" or "QUORUM" OR "ALL"'
200+ end
201+ end
138202 end
139203end
0 commit comments