@@ -23,17 +23,29 @@ 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+ if response . success?
28+ response . body
29+ else
30+ response . body
31+ end
2732 end
2833
2934 # Create a new data object. The provided meta-data and schema values are validated.
3035 def create (
3136 class_name :,
3237 properties :,
38+ consistency_level : nil ,
3339 id : nil ,
3440 vector : nil
3541 )
42+ validate_consistency_level! ( consistency_level ) unless consistency_level . nil?
43+
3644 response = client . connection . post ( PATH ) do |req |
45+ req . params = {
46+ consistency_level : consistency_level . to_s . upcase
47+ } unless consistency_level . nil?
48+
3749 req . body = { }
3850 req . body [ "class" ] = class_name
3951 req . body [ "properties" ] = properties
@@ -42,44 +54,64 @@ def create(
4254 end
4355
4456 if response . success?
45- Weaviate :: Response :: Object . new ( response . body )
57+ response . body
4658 else
4759 response . body
4860 end
4961 end
5062
5163 # Batch create objects
52- def batch_create ( objects :)
64+ def batch_create (
65+ objects :,
66+ consistency_level : nil
67+ )
68+ validate_consistency_level! ( consistency_level ) unless consistency_level . nil?
69+
5370 response = client . connection . post ( "batch/#{ PATH } " ) do |req |
71+ req . params [ "consistency_level" ] = consistency_level . to_s . upcase unless consistency_level . nil?
5472 req . body = { objects : objects }
5573 end
5674
5775 if response . success?
58- Response ::Collection . from_response ( response . body , type : Response ::Object )
76+ response . body
77+ else
78+ response . body
5979 end
6080 end
6181
6282 # Get a single data object.
6383 def get (
6484 class_name :,
6585 id :,
66- include : nil
86+ include : nil ,
87+ consistency_level : nil
6788 )
68- # TODO: validate `include` param values
69- # include | query | param | string | Include additional information, such as classification info. Allowed values include: classification, vector.
89+ validate_consistency_level! ( consistency_level ) unless consistency_level . nil?
7090
7191 response = client . connection . get ( "#{ PATH } /#{ class_name } /#{ id } " ) do |req |
92+ req . params [ "consistency_level" ] = consistency_level . to_s . upcase unless consistency_level . nil?
7293 req . params [ "include" ] = include unless include . nil?
7394 end
7495
7596 if response . success?
76- Weaviate ::Response ::Object . new ( response . body )
97+ response . body
98+ else
99+ response . body
77100 end
78101 end
79102
80103 # Check if a data object exists
81- def exists? ( class_name :, id :)
82- response = client . connection . head ( "#{ PATH } /#{ class_name } /#{ id } " )
104+ def exists? (
105+ class_name :,
106+ id :,
107+ consistency_level : nil
108+ )
109+ validate_consistency_level! ( consistency_level ) unless consistency_level . nil?
110+
111+ response = client . connection . head ( "#{ PATH } /#{ class_name } /#{ id } " ) do |req |
112+ req . params [ "consistency_level" ] = consistency_level . to_s . upcase unless consistency_level . nil?
113+ end
114+
83115 response . status == 204
84116 end
85117
@@ -88,24 +120,45 @@ def update(
88120 class_name :,
89121 id :,
90122 properties :,
91- vector : nil
123+ vector : nil ,
124+ consistency_level : nil
92125 )
126+ validate_consistency_level! ( consistency_level ) unless consistency_level . nil?
127+
93128 response = client . connection . put ( "#{ PATH } /#{ class_name } /#{ id } " ) do |req |
129+ req . params [ "consistency_level" ] = consistency_level . to_s . upcase unless consistency_level . nil?
130+
94131 req . body = { }
95132 req . body [ "id" ] = id
96133 req . body [ "class" ] = class_name
97134 req . body [ "properties" ] = properties
98135 req . body [ "vector" ] = vector unless vector . nil?
99136 end
137+
100138 if response . success?
101- Weaviate ::Response ::Object . new ( response . body )
139+ response . body
140+ else
141+ response . body
102142 end
103143 end
104144
105145 # 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?
146+ def delete (
147+ class_name :,
148+ id :,
149+ consistency_level : nil
150+ )
151+ validate_consistency_level! ( consistency_level ) unless consistency_level . nil?
152+
153+ response = client . connection . delete ( "#{ PATH } /#{ class_name } /#{ id } " ) do |req |
154+ req . params [ "consistency_level" ] = consistency_level . to_s . upcase unless consistency_level . nil?
155+ end
156+
157+ if response . success?
158+ response . body . empty?
159+ else
160+ response . body
161+ end
109162 end
110163
111164 def batch_delete (
@@ -116,7 +169,12 @@ def batch_delete(
116169 dry_run : nil
117170 )
118171 path = "batch/#{ PATH } "
119- path << "?consistency_level=#{ consistency_level } " unless consistency_level . nil?
172+
173+ unless consistency_level . nil?
174+ validate_consistency_level! ( consistency_level )
175+
176+ path << "?consistency_level=#{ consistency_level . to_s . upcase } "
177+ end
120178
121179 response = client . connection . delete ( path ) do |req |
122180 req . body = {
@@ -133,7 +191,31 @@ def batch_delete(
133191 end
134192
135193 # Validate a data object
136- # def validate
137- # end
194+ def validate (
195+ class_name :,
196+ properties :,
197+ id : nil
198+ )
199+ response = client . connection . post ( "#{ PATH } /validate" ) do |req |
200+ req . body = { }
201+ req . body [ "class" ] = class_name
202+ req . body [ "properties" ] = properties
203+ req . body [ "id" ] = id unless id . nil?
204+ end
205+
206+ if response . success?
207+ response . body . empty?
208+ else
209+ response . body
210+ end
211+ end
212+
213+ private
214+
215+ def validate_consistency_level! ( consistency_level )
216+ unless %w[ ONE QUORUM ALL ] . include? ( consistency_level . to_s . upcase )
217+ raise ArgumentError , 'consistency_level must be either "ONE" or "QUORUM" OR "ALL"'
218+ end
219+ end
138220 end
139221end
0 commit comments