Skip to content

Commit 9280a58

Browse files
committed
Support for synonyms
1 parent e9c5184 commit 9280a58

4 files changed

Lines changed: 60 additions & 1 deletion

File tree

lib/typesense.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ module Typesense
1313
require_relative 'typesense/document'
1414
require_relative 'typesense/overrides'
1515
require_relative 'typesense/override'
16+
require_relative 'typesense/synonyms'
17+
require_relative 'typesense/synonym'
1618
require_relative 'typesense/aliases'
1719
require_relative 'typesense/alias'
1820
require_relative 'typesense/keys'

lib/typesense/collection.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@
22

33
module Typesense
44
class Collection
5-
attr_reader :documents, :overrides
5+
attr_reader :documents, :overrides, :synonyms
66

77
def initialize(name, api_call)
88
@name = name
99
@api_call = api_call
1010
@documents = Documents.new(@name, @api_call)
1111
@overrides = Overrides.new(@name, @api_call)
12+
@synonyms = Synonyms.new(@name, @api_call)
1213
end
1314

1415
def retrieve

lib/typesense/synonym.rb

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# frozen_string_literal: true
2+
3+
module Typesense
4+
class Synonym
5+
def initialize(collection_name, synonym_id, api_call)
6+
@collection_name = collection_name
7+
@synonym_id = synonym_id
8+
@api_call = api_call
9+
end
10+
11+
def retrieve
12+
@api_call.get(endpoint_path)
13+
end
14+
15+
def delete
16+
@api_call.delete(endpoint_path)
17+
end
18+
19+
private
20+
21+
def endpoint_path
22+
"#{Collections::RESOURCE_PATH}/#{@collection_name}#{Synonyms::RESOURCE_PATH}/#{@synonym_id}"
23+
end
24+
end
25+
end

lib/typesense/synonyms.rb

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# frozen_string_literal: true
2+
3+
module Typesense
4+
class Synonyms
5+
RESOURCE_PATH = '/synonyms'
6+
7+
def initialize(collection_name, api_call)
8+
@collection_name = collection_name
9+
@api_call = api_call
10+
@synonyms = {}
11+
end
12+
13+
def upsert(synonym_id, params)
14+
@api_call.put(endpoint_path(synonym_id), params)
15+
end
16+
17+
def retrieve
18+
@api_call.get(endpoint_path)
19+
end
20+
21+
def [](synonym_id)
22+
@synonyms[synonym_id] ||= Synonym.new(@collection_name, synonym_id, @api_call)
23+
end
24+
25+
private
26+
27+
def endpoint_path(operation = nil)
28+
"#{Collections::RESOURCE_PATH}/#{@collection_name}#{Synonyms::RESOURCE_PATH}#{operation.nil? ? '' : "/#{operation}"}"
29+
end
30+
end
31+
end

0 commit comments

Comments
 (0)