weaviate_record 0.0.4 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d802d205f85ad643cd6549f4f0283e7a96577a3ff598f11016e999bf9c106d85
4
- data.tar.gz: fc776f9c01eed6cdca251cd17d976c6a1259c5a3af2bc53959a70d3c416b3204
3
+ metadata.gz: b8e3a3dbf676df52348c83eb5a472516ca992c7ea956127d6a7ba81ee8fdb311
4
+ data.tar.gz: 35cf2a6a0369e9e6370e0bbb245c0ada8aa5e82d3f5dcd4c504d65295eacb9ac
5
5
  SHA512:
6
- metadata.gz: 34321036e3cb5a2813f11984dc860983fbab09bd381f34be506963644b336854b40fa414fdb80fcc934a5fdafb3ec0140e8ab8273d987987f725e5f01c3bf948
7
- data.tar.gz: 51015663e59b6e0677dcfef1afaff37c679c3d62b4f48ff932658c228b0f77a6031ddce2de161604459e163e5b197fbd06d15f1433040ef54730ec36f66ad074
6
+ metadata.gz: 1aefd604f54db251167b59e76d2f1542178cbb4e857b7a9b476b89b7d0e503103cd3f4e60777c8b20a9631e0411301d93e052e63d483d536f04faaf3be0a0233
7
+ data.tar.gz: 2c2fae434083f2cef4a96618e929b73f1392912e80e81a4567329b108496b1fbf528869dde504936f994db9da3da1b198f6e9c08af085cf1ad51bb35cbde6f30
@@ -22,32 +22,46 @@ module WeaviateRecord
22
22
  # Returns the present schema of the Weaviate database.
23
23
  def schema_list
24
24
  client.schema.list.deep_symbolize_keys!
25
+ rescue Faraday::ConnectionFailed => e
26
+ raise WeaviateRecord::Errors::DatabaseNotConnected, e.message, cause: nil
25
27
  end
26
28
 
27
29
  # :enddoc:
28
30
 
29
31
  def find_call(id)
30
32
  client.objects.get(class_name: @collection_name, id: id)
33
+ rescue Faraday::ConnectionFailed => e
34
+ raise WeaviateRecord::Errors::DatabaseNotConnected, e.message, cause: nil
31
35
  end
32
36
 
33
37
  def create_call(properties)
34
38
  client.objects.create(class_name: @collection_name, properties: properties)
39
+ rescue Faraday::ConnectionFailed => e
40
+ raise WeaviateRecord::Errors::DatabaseNotConnected, e.message, cause: nil
35
41
  end
36
42
 
37
43
  def update_call(id, properties)
38
44
  client.objects.update(class_name: @collection_name, id: id, properties: properties)
45
+ rescue Faraday::ConnectionFailed => e
46
+ raise WeaviateRecord::Errors::DatabaseNotConnected, e.message, cause: nil
39
47
  end
40
48
 
41
49
  def delete_call(id)
42
50
  client.objects.delete(class_name: @collection_name, id: id)
51
+ rescue Faraday::ConnectionFailed => e
52
+ raise WeaviateRecord::Errors::DatabaseNotConnected, e.message, cause: nil
43
53
  end
44
54
 
45
55
  def check_existence(id)
46
56
  client.objects.exists?(class_name: @collection_name, id: id)
57
+ rescue Faraday::ConnectionFailed => e
58
+ raise WeaviateRecord::Errors::DatabaseNotConnected, e.message, cause: nil
47
59
  end
48
60
 
49
61
  def delete_where(condition)
50
62
  client.objects.batch_delete(class_name: @collection_name, where: condition)
63
+ rescue Faraday::ConnectionFailed => e
64
+ raise WeaviateRecord::Errors::DatabaseNotConnected, e.message, cause: nil
51
65
  end
52
66
  end
53
67
  end
@@ -65,5 +65,9 @@ module WeaviateRecord # :nodoc: all
65
65
  # Raised when required argument is empty
66
66
  class EmptyPrompt < StandardError
67
67
  end
68
+
69
+ # Raised when the weaviate database is not connected
70
+ class DatabaseNotConnected < StandardError
71
+ end
68
72
  end
69
73
  end
@@ -6,7 +6,7 @@ module WeaviateRecord
6
6
  module Order
7
7
  # Sort the records based on the given attributes.
8
8
  # You can pass multiple attributes to sort the records.
9
- # This sorting specification will be ignored if you are performing keyword (bm25) search.
9
+ # This sorting specification will be ignored if you are performing +bm25+ search.
10
10
  #
11
11
  # ==== Example:
12
12
  # Article.order(:title)
@@ -88,12 +88,21 @@ module WeaviateRecord
88
88
  def create_query_condition(equation)
89
89
  return null_condition(equation[0]) if equation[2].nil?
90
90
 
91
+ validate_attribute!(equation[0])
91
92
  handle_timestamps_condition(equation)
92
93
  "{ path: [\"#{equation[0]}\"], " \
93
94
  "operator: #{map_operator(equation[1])}, " \
94
95
  "#{map_value_type(equation[2])}: #{equation[2].inspect} }"
95
96
  end
96
97
 
98
+ def validate_attribute!(attribute)
99
+ unless ['id', 'created_at', 'updated_at',
100
+ *WeaviateRecord::Schema.find_collection(@klass).attributes_list].include?(attribute)
101
+ raise WeaviateRecord::Errors::InvalidAttributeError,
102
+ "Invalid attribute #{attribute} used for collection #{@klass}"
103
+ end
104
+ end
105
+
97
106
  def handle_timestamps_condition(equation_array)
98
107
  return nil unless equation_array[0] == 'created_at' || equation_array[0] == 'updated_at'
99
108
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: weaviate_record
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sriram V
@@ -53,8 +53,8 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '2.4'
55
55
  description: An ORM for Weaviate vector database that follows the same conventions
56
- as the ActiveRecord. This gem uses weaviate-ruby internally to connect with weaviate
57
- database.
56
+ as the ActiveRecord. Bring the power of Vector database and Retrieval augmented
57
+ generation (RAG) to your Ruby application.
58
58
  email: srira.venkat@gmail.com
59
59
  executables: []
60
60
  extensions: []