marqo 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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 7187c5ff2968c91c36e00be7d7bcfcadae14f6fa45f2e5a8b11c3802003ff4b0
4
+ data.tar.gz: 6622383016bf6956d39080887692e674c57b4995fdae5d05456fdbff54c44bba
5
+ SHA512:
6
+ metadata.gz: 87be75a1c421140ac7f0b27b7ac8c0af1f39228b9736aa0aad35738a174d34d7e1cfcd595b7359805a877c60b27fa248259ec1dbbb597bff319cb591701034db
7
+ data.tar.gz: d2e0b5dfaa79a883ecad1c37bcaa34978b5e0aed31c96b9c34c585b7b83b04d00f19b047383dcc3b9a17a78d027b60a458b947d144983b78dc05f0eded2c620d
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --require spec_helper
data/.rubocop.yml ADDED
@@ -0,0 +1,37 @@
1
+ AllCops:
2
+ NewCops: enable
3
+ TargetRubyVersion: 2.7
4
+ Exclude:
5
+ - 'Gemfile'
6
+ - 'bin/*'
7
+ - '*.gemspec'
8
+
9
+ Style/RaiseArgs:
10
+ EnforcedStyle: compact
11
+
12
+ # Tune to MethodLength
13
+ Metrics/AbcSize:
14
+ Max: 300
15
+
16
+ # Tune to MethodLength
17
+ Metrics/ClassLength:
18
+ Max: 200
19
+
20
+ # Checks if uses of quotes match the configured preference.
21
+ Style/StringLiterals:
22
+ Enabled: false
23
+
24
+ # Disable
25
+ Style/FrozenStringLiteralComment:
26
+ Enabled: false
27
+
28
+ Style/ParenthesesAroundCondition:
29
+ Enabled: false
30
+
31
+ Metrics/BlockLength:
32
+ AllowedMethods: ['describe', 'context', 'before', 'shared_context', 'let']
33
+ Exclude:
34
+ - "**/*_spec.rb"
35
+
36
+ Style/Documentation:
37
+ Enabled: false
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2023 linh
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,139 @@
1
+ # Marqo
2
+
3
+ Ruby Driver for Marqo.
4
+ Supported Marqo version [1.2.0](https://docs.marqo.ai/1.2.0/) - https://docs.marqo.ai/1.2.0/
5
+
6
+
7
+ ## Usage
8
+
9
+ ```
10
+ client = Marqo::Client.new(endpoint, index_name)
11
+ ```
12
+
13
+ ### create index
14
+ ```
15
+ options = {
16
+ number_of_shards: 3,
17
+ number_of_replicas: 0
18
+ }
19
+ client.create_index(index_name, options)
20
+ ```
21
+
22
+ valid options - [ref](https://docs.marqo.ai/1.2.0/API-Reference/indexes/)
23
+
24
+ ```
25
+ {
26
+ "index_defaults": {
27
+ "treat_urls_and_pointers_as_images": false,
28
+ "model": "hf/all_datasets_v4_MiniLM-L6",
29
+ "normalize_embeddings": true,
30
+ "text_preprocessing": {
31
+ "split_length": 2,
32
+ "split_overlap": 0,
33
+ "split_method": "sentence"
34
+ },
35
+ "image_preprocessing": {
36
+ "patch_method": null
37
+ },
38
+ "ann_parameters" : {
39
+ "space_type": "cosinesimil",
40
+ "parameters": {
41
+ "ef_construction": 128,
42
+ "m": 16
43
+ }
44
+ }
45
+ },
46
+ "number_of_shards": 3,
47
+ "number_of_replicas": 0
48
+ }
49
+ ```
50
+ ### list_index
51
+ ```
52
+ client.list
53
+ ```
54
+
55
+ ### delete_index
56
+ ```
57
+ client.delete_index
58
+ ```
59
+
60
+ ### add_documents
61
+ ```
62
+ documents = [
63
+ {
64
+ title: 'The Travels of Marco Polo',
65
+ desc: 'A 13th-century travelogue describing the travels of Polo',
66
+ genre: 'History'
67
+ },
68
+ {
69
+ title: 'Extravehicular Mobility Unit (EMU)',
70
+ desc: 'The EMU is a spacesuit that provides environmental protection',
71
+ genre: 'Science',
72
+ _id: 'hatkeo_08'
73
+ }
74
+ ]
75
+
76
+ options = { tensor_fields: %w[title desc] }
77
+ client.add_documents(documents, options)
78
+ ```
79
+
80
+ ### find_doc
81
+ ```
82
+ client.find_doc('hatkeo_08', { expose_facets: false })
83
+ ```
84
+
85
+ ### find_docs (does not support options yet - TODO)
86
+
87
+ ```
88
+ client.find_doc(['hatkeo_08', 'another_ids'])
89
+ ```
90
+
91
+ ### delete_docs
92
+
93
+ ```
94
+ client.delete_docs(['hatkeo_08', 'another_ids'])
95
+ ```
96
+
97
+ ### search
98
+ ```
99
+ query = 'what is the best outfit to wear on the moon?'
100
+ default_options = {
101
+ limit: 20,
102
+ offset: 0,
103
+ showHighlights: true,
104
+ searchMethod: Marqo::Search::SEARCH_METHOD_TENSOR,
105
+ attributesToRetrieve: ['*'],
106
+ image_download_headers: {}
107
+ }
108
+ client.search(query, default_options)
109
+ ```
110
+
111
+ - search_options - [ref](https://docs.marqo.ai/1.2.0/API-Reference/search/)
112
+
113
+ # possible options
114
+ * filter - https://docs.marqo.ai/1.2.0/API-Reference/search/#filter
115
+ * searchableAttributes - https://docs.marqo.ai/1.2.0/API-Reference/search/#searchable-attributes
116
+ * reRanker - https://docs.marqo.ai/1.2.0/API-Reference/search/#reranker
117
+ * boost - https://docs.marqo.ai/1.2.0/API-Reference/search/#boost
118
+ * context - https://docs.marqo.ai/1.2.0/API-Reference/search/#context
119
+ * score_modifiers - https://docs.marqo.ai/1.2.0/API-Reference/search/#score-modifiers
120
+ * modelAuth - https://docs.marqo.ai/1.2.0/API-Reference/search/#model-auth
121
+
122
+
123
+ ## Contributing
124
+
125
+ - TODO: add support for
126
+ + mapping. There document seems not clear - [ref](https://docs.marqo.ai/1.2.0/API-Reference/mappings/)
127
+ + bulk - [ref](https://docs.marqo.ai/1.2.0/API-Reference/bulk/)
128
+
129
+ make sure follow rubocop and add test for it
130
+ ```
131
+ rake check
132
+ rake test
133
+ ```
134
+
135
+ - Bug reports and pull requests are welcome on GitHub at https://github.com/haanhduclinh/marqo.
136
+
137
+ ## License
138
+
139
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+
5
+ task :default do
6
+ system 'rake --tasks'
7
+ end
8
+
9
+ task :test do
10
+ system 'rspec .'
11
+ end
12
+
13
+ task :check do
14
+ system 'rubocop .'
15
+ end
16
+
17
+ task :check_end_test do
18
+ system 'rubocop . && rspec .'
19
+ end
@@ -0,0 +1,50 @@
1
+ module Marqo
2
+ class Client
3
+ attr_accessor :endpoint, :index_name
4
+
5
+ def initialize(ept = nil, name = nil)
6
+ self.endpoint = ept || Marqo.configuration.endpoint
7
+ self.index_name = name || Marqo.configuration.index_name
8
+ end
9
+
10
+ def create_index(index_name, options = {})
11
+ Marqo::Index.create(endpoint, index_name, options)
12
+ end
13
+
14
+ def list_index
15
+ Marqo::Index.list(endpoint)
16
+ end
17
+
18
+ def delete_index
19
+ Marqo::Index.delete(endpoint, index_name)
20
+ end
21
+
22
+ def add_documents(documents, options = {})
23
+ Marqo::Document.create(endpoint, index_name, documents, options)
24
+ end
25
+
26
+ def find_doc(document_id, options = {})
27
+ Marqo::Document.find(endpoint, index_name, document_id, options)
28
+ end
29
+
30
+ def find_docs(document_ids)
31
+ Marqo::Document.finds(endpoint, index_name, document_ids)
32
+ end
33
+
34
+ def delete_docs(document_ids)
35
+ Marqo::Document.delete(endpoint, index_name, document_ids)
36
+ end
37
+
38
+ def search(query, options = {})
39
+ Marqo::Search.run(endpoint, index_name, query, options)
40
+ end
41
+
42
+ def device_cpu
43
+ Marqo::Device.cpu(endpoint)
44
+ end
45
+
46
+ def device_cuda
47
+ Marqo::Device.cuda(endpoint)
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Marqo
4
+ class Configuration
5
+ attr_accessor :endpoint, :index_name, :options
6
+ end
7
+ end
@@ -0,0 +1,24 @@
1
+ module Marqo
2
+ class Device
3
+ class << self
4
+ # https://docs.marqo.ai/1.2.0/API-Reference/models/
5
+ def cpu(endpoint)
6
+ url = Marqo::UrlHelpers.device_cpu_endpoint(endpoint)
7
+ http = Net::HTTP.new(url.host, url.port)
8
+ http.use_ssl = url.scheme == "https"
9
+ request = Net::HTTP::Get.new(url)
10
+
11
+ http.request(request)
12
+ end
13
+
14
+ def cuda(endpoint)
15
+ url = Marqo::UrlHelpers.device_cuda_endpoint(endpoint)
16
+ http = Net::HTTP.new(url.host, url.port)
17
+ http.use_ssl = url.scheme == "https"
18
+ request = Net::HTTP::Get.new(url)
19
+
20
+ http.request(request)
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Marqo
4
+ class Document
5
+ class << self
6
+ # https://docs.marqo.ai/1.2.0/API-Reference/documents/#add-or-replace-documents
7
+ def create(endpoint, index_name, documents, options = {})
8
+ url = Marqo::UrlHelpers.base_document_endpoint(endpoint, index_name)
9
+
10
+ http = Net::HTTP.new(url.host, url.port)
11
+ http.use_ssl = url.scheme == "https"
12
+ request = Net::HTTP::Post.new(url)
13
+ request['Content-type'] = 'application/json'
14
+
15
+ request_body = { documents: documents }
16
+
17
+ request_body[:tensorFields] = options[:tensor_fields] if options[:tensor_fields].count.positive?
18
+
19
+ request.body = JSON.dump(request_body)
20
+
21
+ http.request(request)
22
+ end
23
+
24
+ # https://docs.marqo.ai/1.2.0/API-Reference/documents/#get-one-document
25
+ def find(endpoint, index_name, document_id, options = {})
26
+ url = Marqo::UrlHelpers.find_document_endpoint(endpoint, index_name, document_id)
27
+
28
+ http = Net::HTTP.new(url.host, url.port)
29
+ http.use_ssl = url.scheme == "https"
30
+ request = Net::HTTP::Get.new(url)
31
+
32
+ if options[:expose_facets]
33
+ params = { 'expose_facets' => options[:expose_facets] }
34
+ request.set_form_data(params)
35
+ request = Net::HTTP::Get.new("#{url.path}?#{request.body}")
36
+ end
37
+
38
+ http.request(request)
39
+ end
40
+
41
+ # https://docs.marqo.ai/1.2.0/API-Reference/documents/#get-multiple-documents
42
+ def finds(endpoint, index_name, document_ids)
43
+ url = Marqo::UrlHelpers.base_document_endpoint(endpoint, index_name)
44
+
45
+ http = Net::HTTP.new(url.host, url.port)
46
+ http.use_ssl = url.scheme == "https"
47
+ request = Net::HTTP::Get.new(url)
48
+ request['Content-Type'] = 'application/json'
49
+
50
+ request.body = JSON.dump(document_ids)
51
+
52
+ http.request(request)
53
+ end
54
+
55
+ # https://docs.marqo.ai/1.2.0/API-Reference/documents/#delete-documents
56
+ def delete(endpoint, index_name, document_ids)
57
+ url = Marqo::UrlHelpers.delete_document_endpoint(endpoint, index_name)
58
+
59
+ http = Net::HTTP.new(url.host, url.port)
60
+ http.use_ssl = url.scheme == "https"
61
+ request = Net::HTTP::Post.new(url)
62
+ request['Content-type'] = 'application/json'
63
+
64
+ request.body = JSON.dump(document_ids)
65
+
66
+ http.request(request)
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,18 @@
1
+ module Marqo
2
+ module RequestHelpers
3
+ module_function
4
+
5
+ def generate_search_payload(query, options)
6
+ defaul_options = {
7
+ limit: 20,
8
+ offset: 0,
9
+ showHighlights: true,
10
+ searchMethod: Marqo::Search::SEARCH_METHOD_TENSOR,
11
+ attributesToRetrieve: ['*'],
12
+ image_download_headers: {}
13
+ }.merge(options)
14
+
15
+ defaul_options.merge(q: query)
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,53 @@
1
+ module Marqo
2
+ module UrlHelpers
3
+ module_function
4
+
5
+ def index_endpoint(endpoint)
6
+ URI.join(endpoint, 'indexes')
7
+ end
8
+
9
+ def create_index_endpoint(endpoint, index_name)
10
+ URI.join(endpoint, 'indexes/', index_name)
11
+ end
12
+
13
+ def delete_index_endpoint(endpoint, index_name)
14
+ URI.join(endpoint, 'indexes/', index_name)
15
+ end
16
+
17
+ def refresh_endpoint(endpoint, index_name)
18
+ URI.join(endpoint, 'indexes/', "#{index_name}/", "refresh")
19
+ end
20
+
21
+ def delete_document_endpoint(endpoint, index_name)
22
+ URI.join(endpoint, 'indexes/', "#{index_name}/", 'documents/', 'delete-batch')
23
+ end
24
+
25
+ def find_document_endpoint(endpoint, index_name, document_id)
26
+ URI.join(endpoint, 'indexes/', "#{index_name}/", 'documents/', document_id)
27
+ end
28
+
29
+ def base_document_endpoint(endpoint, index_name)
30
+ URI.join(endpoint, 'indexes/', "#{index_name}/", 'documents')
31
+ end
32
+
33
+ def search_endpoint(endpoint, index_name)
34
+ URI.join(endpoint, 'indexes/', "#{index_name}/", 'search')
35
+ end
36
+
37
+ def health_endpoint(endpoint, index_name)
38
+ URI.join(endpoint, 'indexes/', "#{index_name}/", "health")
39
+ end
40
+
41
+ def models_endpoint(endpoint)
42
+ URI.join(endpoint, 'models')
43
+ end
44
+
45
+ def device_cpu_endpoint(endpoint)
46
+ URI.join(endpoint, 'device/', 'cpu')
47
+ end
48
+
49
+ def device_cuda_endpoint(endpoint)
50
+ URI.join(endpoint, 'device/', 'cuda')
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,90 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Marqo
4
+ class Index
5
+ class << self
6
+ # https://docs.marqo.ai/1.2.0/API-Reference/indexes/#list-indexes
7
+ def list(endpoint)
8
+ url = Marqo::UrlHelpers.index_endpoint(endpoint)
9
+ http = Net::HTTP.new(url.host, url.port)
10
+ http.use_ssl = url.scheme == "https"
11
+ request = Net::HTTP::Get.new(url)
12
+
13
+ http.request(request)
14
+ end
15
+
16
+ # https://docs.marqo.ai/1.2.0/API-Reference/indexes/#create-index
17
+ def create(endpoint, index_name, options = {})
18
+ # valid options - default value
19
+ # - index_defaults: ""
20
+ # - number_of_shards: 3
21
+ # - number_of_replicas: 0
22
+ # more detail see in url https://docs.marqo.ai/1.2.0/API-Reference/indexes/
23
+ # example
24
+ # {
25
+ # "index_defaults": {
26
+ # "treat_urls_and_pointers_as_images": false,
27
+ # "model": "hf/all_datasets_v4_MiniLM-L6",
28
+ # "normalize_embeddings": true,
29
+ # "text_preprocessing": {
30
+ # "split_length": 2,
31
+ # "split_overlap": 0,
32
+ # "split_method": "sentence"
33
+ # },
34
+ # "image_preprocessing": {
35
+ # "patch_method": null
36
+ # },
37
+ # "ann_parameters" : {
38
+ # "space_type": "cosinesimil",
39
+ # "parameters": {
40
+ # "ef_construction": 128,
41
+ # "m": 16
42
+ # }
43
+ # }
44
+ # },
45
+ # "number_of_shards": 3,
46
+ # "number_of_replicas": 0
47
+ # }
48
+
49
+ url = Marqo::UrlHelpers.create_index_endpoint(endpoint, index_name)
50
+ http = Net::HTTP.new(url.host, url.port)
51
+ http.use_ssl = url.scheme == "https"
52
+ request = Net::HTTP::Post.new(url)
53
+ request['Content-type'] = 'application/json'
54
+ request.body = JSON.dump(options) unless options.empty?
55
+
56
+ http.request(request)
57
+ end
58
+
59
+ # https://docs.marqo.ai/1.2.0/API-Reference/indexes/#delete-index
60
+ def delete(endpoint, index_name)
61
+ url = Marqo::UrlHelpers.delete_index_endpoint(endpoint, index_name)
62
+ http = Net::HTTP.new(url.host, url.port)
63
+ http.use_ssl = url.scheme == "https"
64
+ request = Net::HTTP::Delete.new(url)
65
+
66
+ http.request(request)
67
+ end
68
+
69
+ # https://docs.marqo.ai/1.2.0/API-Reference/refresh/
70
+ def refresh(endpoint, index_name)
71
+ url = Marqo::UrlHelpers.refresh_endpoint(endpoint, index_name)
72
+ http = Net::HTTP.new(url.host, url.port)
73
+ http.use_ssl = url.scheme == "https"
74
+ request = Net::HTTP::Post.new(url)
75
+
76
+ http.request(request)
77
+ end
78
+
79
+ # https://docs.marqo.ai/1.2.0/API-Reference/health/
80
+ def health(endpoint, index_name)
81
+ url = Marqo::UrlHelpers.health_endpoint(endpoint, index_name)
82
+ http = Net::HTTP.new(url.host, url.port)
83
+ http.use_ssl = url.scheme == "https"
84
+ request = Net::HTTP::Get.new(url)
85
+
86
+ http.request(request)
87
+ end
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,29 @@
1
+ module Marqo
2
+ class Models
3
+ class << self
4
+ # https://docs.marqo.ai/1.2.0/API-Reference/models/
5
+ def info(endpoint)
6
+ url = Marqo::UrlHelpers.models_endpoint(endpoint)
7
+ http = Net::HTTP.new(url.host, url.port)
8
+ http.use_ssl = url.scheme == "https"
9
+ request = Net::HTTP::Get.new(url)
10
+
11
+ http.request(request)
12
+ end
13
+
14
+ def delete(endpoint, params = {})
15
+ url = Marqo::UrlHelpers.models_endpoint(endpoint)
16
+ http = Net::HTTP.new(url.host, url.port)
17
+ http.use_ssl = url.scheme == "https"
18
+ request = Net::HTTP::Delete.new(url)
19
+
20
+ unless params.empty?
21
+ request.set_form_data(params)
22
+ request = Net::HTTP::Delete.new("#{url.path}?#{request.body}")
23
+ end
24
+
25
+ http.request(request)
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Marqo
4
+ class Search
5
+ SEARCH_METHOD_TENSOR = 'TENSOR'
6
+ SEARCH_METHOD_LEXICAL = 'LEXICAL'
7
+
8
+ # https://docs.marqo.ai/1.2.0/API-Reference/search/
9
+ def self.run(endpoint, index_name, query, options = {})
10
+ # # possible options
11
+ # filter - https://docs.marqo.ai/1.2.0/API-Reference/search/#filter
12
+ # searchableAttributes - https://docs.marqo.ai/1.2.0/API-Reference/search/#searchable-attributes
13
+ # reRanker - https://docs.marqo.ai/1.2.0/API-Reference/search/#reranker
14
+ # boost - https://docs.marqo.ai/1.2.0/API-Reference/search/#boost
15
+ # context - https://docs.marqo.ai/1.2.0/API-Reference/search/#context
16
+ # score_modifiers - https://docs.marqo.ai/1.2.0/API-Reference/search/#score-modifiers
17
+ # modelAuth - https://docs.marqo.ai/1.2.0/API-Reference/search/#model-auth
18
+
19
+ url = Marqo::UrlHelpers.search_endpoint(endpoint, index_name)
20
+
21
+ http = Net::HTTP.new(url.host, url.port)
22
+ http.use_ssl = url.scheme == "https"
23
+ request = Net::HTTP::Post.new(url)
24
+ request['Content-type'] = 'application/json'
25
+
26
+ payload = Marqo::RequestHelpers.generate_search_payload(query, options)
27
+
28
+ request.body = JSON.dump(payload)
29
+
30
+ http.request(request)
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Marqo
4
+ VERSION = '0.1.0'
5
+ end
data/lib/marqo.rb ADDED
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'uri'
4
+ require 'net/http'
5
+
6
+ require_relative 'marqo/version'
7
+ require_relative 'marqo/configuration'
8
+ require_relative 'marqo/helpers/url_helpers'
9
+ require_relative 'marqo/helpers/request_helpers'
10
+ require_relative 'marqo/index'
11
+ require_relative 'marqo/document'
12
+ require_relative 'marqo/search'
13
+ require_relative 'marqo/models'
14
+ require_relative 'marqo/device'
15
+ require_relative 'marqo/client'
16
+
17
+ module Marqo
18
+ class Error < StandardError; end
19
+ # Your code goes here...
20
+
21
+ def self.configuration
22
+ @configuration ||= Configuration.new
23
+ end
24
+
25
+ def self.configure
26
+ yield(configuration)
27
+ end
28
+ end
data/sig/marqo.rbs ADDED
@@ -0,0 +1,4 @@
1
+ module Marqo
2
+ VERSION: String
3
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
4
+ end
metadata ADDED
@@ -0,0 +1,146 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: marqo
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - linh
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2023-08-29 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: pry
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.14.2
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.14.2
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '13.0'
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 13.0.6
37
+ type: :development
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '13.0'
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 13.0.6
47
+ - !ruby/object:Gem::Dependency
48
+ name: rspec
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '3.12'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '3.12'
61
+ - !ruby/object:Gem::Dependency
62
+ name: rubocop
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '1.56'
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: 1.56.1
71
+ type: :development
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - "~>"
76
+ - !ruby/object:Gem::Version
77
+ version: '1.56'
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: 1.56.1
81
+ - !ruby/object:Gem::Dependency
82
+ name: webmock
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '3.19'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '3.19'
95
+ description: Marqo API adapter
96
+ email:
97
+ - no.email@do-not-reply.com
98
+ executables: []
99
+ extensions: []
100
+ extra_rdoc_files: []
101
+ files:
102
+ - ".rspec"
103
+ - ".rubocop.yml"
104
+ - LICENSE.txt
105
+ - README.md
106
+ - Rakefile
107
+ - lib/marqo.rb
108
+ - lib/marqo/client.rb
109
+ - lib/marqo/configuration.rb
110
+ - lib/marqo/device.rb
111
+ - lib/marqo/document.rb
112
+ - lib/marqo/helpers/request_helpers.rb
113
+ - lib/marqo/helpers/url_helpers.rb
114
+ - lib/marqo/index.rb
115
+ - lib/marqo/models.rb
116
+ - lib/marqo/search.rb
117
+ - lib/marqo/version.rb
118
+ - sig/marqo.rbs
119
+ homepage: https://github.com/haanhduclinh/marqo
120
+ licenses:
121
+ - MIT
122
+ metadata:
123
+ allowed_push_host: https://rubygems.org
124
+ homepage_uri: https://github.com/haanhduclinh/marqo
125
+ source_code_uri: https://github.com/haanhduclinh/marqo
126
+ changelog_uri: https://github.com/haanhduclinh/marqo
127
+ post_install_message:
128
+ rdoc_options: []
129
+ require_paths:
130
+ - lib
131
+ required_ruby_version: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - ">="
134
+ - !ruby/object:Gem::Version
135
+ version: 2.6.0
136
+ required_rubygems_version: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
141
+ requirements: []
142
+ rubygems_version: 3.4.14
143
+ signing_key:
144
+ specification_version: 4
145
+ summary: This gem in order to comunicate with Marqo
146
+ test_files: []