typesense 0.14.1 → 0.15.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: 1bb8d21314545a009551827388585832a78bf7ec685032959b9829a7870ddb9f
4
- data.tar.gz: 4084625e3489791d29054738567b5e6eb60c05688f553121d035ef92ba85db8e
3
+ metadata.gz: 3b0902a6b96d21122114a769a6d55c55cba28880ace9b116a1e3c67251148bc9
4
+ data.tar.gz: 5b8bec6c747b00d61ed1028569272519d724b3262b3753753a2fea0c4b5db972
5
5
  SHA512:
6
- metadata.gz: a3b6f7e798a06042e57d6c6282a2f9bc1f51921542b525c4369cb4d313900ba0a2eee739356c01062e3519d8d4e7cc8f977b3a732a49ff325e5a1df750eed165
7
- data.tar.gz: ae3a68760647e57b966b24a352e215673d2eff16c5d0a3830729d2ece01ab2cbd1a60282ce2d72a2b2c504084da9088647b8520445cae06605a48b8ec712e52e
6
+ metadata.gz: 298131cd62bb16c8fc26797eb06ffb09689ec98553ef77ba3bd4811aff5f46de777bd6a9a62ac13665d95800189456557e741b89fbbec3911adc0ddd1cd008d3
7
+ data.tar.gz: db2215ce53918e3e37800ba596a0a7eb7a4b75127d266cf7081e94c6bfac87834ce881d6082c850041fff755ab9436f72de0f1e5f50d25b99f047f84819ed1fc
@@ -0,0 +1,27 @@
1
+ name: tests
2
+
3
+ on: [push, pull_request]
4
+
5
+ permissions:
6
+ contents: read
7
+
8
+ jobs:
9
+ build_and_test:
10
+ runs-on: ubuntu-latest
11
+ strategy:
12
+ matrix:
13
+ ruby-version: ['2.6', '2.7', '3.0']
14
+
15
+ steps:
16
+ - uses: actions/checkout@v3
17
+ - uses: ruby/setup-ruby@v1
18
+ with:
19
+ ruby-version: ${{ matrix.ruby-version }}
20
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
21
+ - run: bundle exec rubocop
22
+ - run: bundle exec rspec --format documentation
23
+ - uses: actions/upload-artifact@v3
24
+ with:
25
+ name: coverage
26
+ path: coverage/
27
+ retention-days: 1
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Typesense Ruby Library [![Gem Version](https://badge.fury.io/rb/typesense.svg)](https://badge.fury.io/rb/typesense) [![CircleCI](https://circleci.com/gh/typesense/typesense-ruby.svg?style=shield&circle-token=063f2179925b0b37d540126f6c96f6e1fe23f1b9)](https://circleci.com/gh/typesense/typesense-ruby) [![codecov](https://codecov.io/gh/typesense/typesense-ruby/branch/master/graph/badge.svg)](https://codecov.io/gh/typesense/typesense-ruby)
1
+ # Typesense Ruby Library [![Gem Version](https://badge.fury.io/rb/typesense.svg)](https://badge.fury.io/rb/typesense)
2
2
 
3
3
 
4
4
  Ruby client library for accessing the [Typesense HTTP API](https://github.com/typesense/typesense).
@@ -33,6 +33,7 @@ Tests are also a good place to know how the the library works internally: [spec]
33
33
 
34
34
  | Typesense Server | typesense-ruby |
35
35
  |------------------|----------------|
36
+ | \>= v0.25.0 | \>= v0.15.0 |
36
37
  | \>= v0.23.0 | \>= v0.14.0 |
37
38
  | \>= v0.21.0 | \>= v0.13.0 |
38
39
  | \>= v0.20.0 | \>= v0.12.0 |
@@ -187,7 +187,6 @@ ap document
187
187
  ##
188
188
  # Update a document. Unlike upsert, update will error out if the doc doesn't already exist.
189
189
  document = @typesense.collections['companies'].documents['124'].update(
190
- 'id' => 1,
191
190
  'num_employees' => 5500
192
191
  )
193
192
  ap document
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Typesense
4
+ class Analytics
5
+ RESOURCE_PATH = '/analytics'
6
+
7
+ def initialize(api_call)
8
+ @api_call = api_call
9
+ end
10
+
11
+ def rules
12
+ @rules ||= AnalyticsRules.new(@api_call)
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Typesense
4
+ class AnalyticsRule
5
+ def initialize(rule_name, api_call)
6
+ @rule_name = rule_name
7
+ @api_call = api_call
8
+ end
9
+
10
+ def retrieve
11
+ @api_call.get(endpoint_path)
12
+ end
13
+
14
+ def delete
15
+ @api_call.delete(endpoint_path)
16
+ end
17
+
18
+ private
19
+
20
+ def endpoint_path
21
+ "#{AnalyticsRules::RESOURCE_PATH}/#{@rule_name}"
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Typesense
4
+ class AnalyticsRules
5
+ RESOURCE_PATH = '/analytics/rules'
6
+
7
+ def initialize(api_call)
8
+ @api_call = api_call
9
+ @analytics_rules = {}
10
+ end
11
+
12
+ def upsert(rule_name, params)
13
+ @api_call.put(endpoint_path(rule_name), params)
14
+ end
15
+
16
+ def retrieve
17
+ @api_call.get(endpoint_path)
18
+ end
19
+
20
+ def [](rule_name)
21
+ @analytics_rules[rule_name] ||= AnalyticsRule.new(rule_name, @api_call)
22
+ end
23
+
24
+ private
25
+
26
+ def endpoint_path(operation = nil)
27
+ "#{AnalyticsRules::RESOURCE_PATH}#{operation.nil? ? '' : "/#{operation}"}"
28
+ end
29
+ end
30
+ end
@@ -3,7 +3,7 @@
3
3
  module Typesense
4
4
  class Client
5
5
  attr_reader :configuration, :collections, :aliases, :keys, :debug, :health, :metrics, :operations,
6
- :multi_search
6
+ :multi_search, :analytics, :presets
7
7
 
8
8
  def initialize(options = {})
9
9
  @configuration = Configuration.new(options)
@@ -16,6 +16,8 @@ module Typesense
16
16
  @health = Health.new(@api_call)
17
17
  @metrics = Metrics.new(@api_call)
18
18
  @operations = Operations.new(@api_call)
19
+ @analytics = Analytics.new(@api_call)
20
+ @presets = Presets.new(@api_call)
19
21
  end
20
22
  end
21
23
  end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Typesense
4
+ class Preset
5
+ def initialize(preset_name, api_call)
6
+ @preset_name = preset_name
7
+ @api_call = api_call
8
+ end
9
+
10
+ def retrieve
11
+ @api_call.get(endpoint_path)
12
+ end
13
+
14
+ def delete
15
+ @api_call.delete(endpoint_path)
16
+ end
17
+
18
+ private
19
+
20
+ def endpoint_path
21
+ "#{Presets::RESOURCE_PATH}/#{@preset_name}"
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Typesense
4
+ class Presets
5
+ RESOURCE_PATH = '/presets'
6
+
7
+ def initialize(api_call)
8
+ @api_call = api_call
9
+ @presets = {}
10
+ end
11
+
12
+ def upsert(preset_name, params)
13
+ @api_call.put(endpoint_path(preset_name), params)
14
+ end
15
+
16
+ def retrieve
17
+ @api_call.get(endpoint_path)
18
+ end
19
+
20
+ def [](preset_name)
21
+ @presets[preset_name] ||= Preset.new(preset_name, @api_call)
22
+ end
23
+
24
+ private
25
+
26
+ def endpoint_path(operation = nil)
27
+ "#{Presets::RESOURCE_PATH}#{operation.nil? ? '' : "/#{operation}"}"
28
+ end
29
+ end
30
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Typesense
4
- VERSION = '0.14.1'
4
+ VERSION = '0.15.0'
5
5
  end
data/lib/typesense.rb CHANGED
@@ -20,6 +20,11 @@ require_relative 'typesense/alias'
20
20
  require_relative 'typesense/keys'
21
21
  require_relative 'typesense/key'
22
22
  require_relative 'typesense/multi_search'
23
+ require_relative 'typesense/analytics'
24
+ require_relative 'typesense/analytics_rules'
25
+ require_relative 'typesense/analytics_rule'
26
+ require_relative 'typesense/presets'
27
+ require_relative 'typesense/preset'
23
28
  require_relative 'typesense/debug'
24
29
  require_relative 'typesense/health'
25
30
  require_relative 'typesense/metrics'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: typesense
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.1
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Typesense, Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-06-21 00:00:00.000000000 Z
11
+ date: 2023-08-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: awesome_print
@@ -256,7 +256,7 @@ executables: []
256
256
  extensions: []
257
257
  extra_rdoc_files: []
258
258
  files:
259
- - ".circleci/config.yml"
259
+ - ".github/workflows/tests.yml"
260
260
  - ".gitignore"
261
261
  - ".rspec"
262
262
  - ".rubocop.yml"
@@ -278,6 +278,9 @@ files:
278
278
  - lib/typesense.rb
279
279
  - lib/typesense/alias.rb
280
280
  - lib/typesense/aliases.rb
281
+ - lib/typesense/analytics.rb
282
+ - lib/typesense/analytics_rule.rb
283
+ - lib/typesense/analytics_rules.rb
281
284
  - lib/typesense/api_call.rb
282
285
  - lib/typesense/client.rb
283
286
  - lib/typesense/collection.rb
@@ -295,6 +298,8 @@ files:
295
298
  - lib/typesense/operations.rb
296
299
  - lib/typesense/override.rb
297
300
  - lib/typesense/overrides.rb
301
+ - lib/typesense/preset.rb
302
+ - lib/typesense/presets.rb
298
303
  - lib/typesense/synonym.rb
299
304
  - lib/typesense/synonyms.rb
300
305
  - lib/typesense/version.rb
@@ -318,7 +323,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
318
323
  - !ruby/object:Gem::Version
319
324
  version: '0'
320
325
  requirements: []
321
- rubygems_version: 3.3.15
326
+ rubygems_version: 3.0.9
322
327
  signing_key:
323
328
  specification_version: 4
324
329
  summary: Ruby Library for Typesense
data/.circleci/config.yml DELETED
@@ -1,69 +0,0 @@
1
- # Ruby CircleCI 2.0 configuration file
2
- #
3
- # Check https://circleci.com/docs/2.0/language-ruby/ for more details
4
- #
5
- version: 2
6
- jobs:
7
- build:
8
- docker:
9
- # specify the version you desire here
10
- - image: circleci/ruby:2.4.1-node-browsers
11
-
12
- # Specify service dependencies here if necessary
13
- # CircleCI maintains a library of pre-built images
14
- # documented at https://circleci.com/docs/2.0/circleci-images/
15
- # - image: circleci/postgres:9.4
16
-
17
- working_directory: ~/repo
18
-
19
- steps:
20
- - checkout
21
-
22
- # # Download and cache dependencies
23
- # - restore_cache:
24
- # keys:
25
- # - v1-dependencies-{{ checksum "Gemfile.lock" }}
26
- # # fallback to using the latest cache if no exact match is found
27
- # - v1-dependencies-
28
-
29
- - run:
30
- name: install bundler
31
- command: |
32
- echo 'export BUNDLER_VERSION=$(cat Gemfile.lock | tail -1 | tr -d " ")' >> $BASH_ENV
33
- source $BASH_ENV
34
- gem install bundler
35
-
36
- - run:
37
- name: install dependencies
38
- command: |
39
- bundle install --jobs=4 --retry=3 --path vendor/bundle
40
-
41
- # - save_cache:
42
- # paths:
43
- # - ./vendor/bundle
44
- # key: v1-dependencies-{{ checksum "Gemfile.lock" }}
45
-
46
- - run:
47
- name: lint
48
- command: |
49
- bundle exec rubocop
50
-
51
- # run tests!
52
- - run:
53
- name: run tests
54
- command: |
55
- mkdir /tmp/test-results
56
-
57
- bundle exec rspec --format documentation \
58
- --format RspecJunitFormatter \
59
- --out /tmp/test-results/rspec.xml
60
-
61
- # collect reports
62
- - store_test_results:
63
- path: /tmp/test-results
64
- - store_artifacts:
65
- path: /tmp/test-results
66
- destination: test-results
67
- - store_artifacts:
68
- path: coverage
69
- destination: coverage