Skip to content

Commit ad10c87

Browse files
authored
Update to v28 (#28)
1 parent 2cbc01e commit ad10c87

53 files changed

Lines changed: 2361 additions & 1479 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ jobs:
2424
env:
2525
MIX_ENV: test
2626
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
27-
LATEST_TYPESENSE: '27.1'
27+
LATEST_TYPESENSE: '28.0'
2828

2929
strategy:
3030
matrix:
@@ -41,6 +41,10 @@ jobs:
4141
otp: '25'
4242
elixir: '1.14'
4343
lint: false
44+
- typesense: '28.0'
45+
otp: '25'
46+
elixir: '1.14'
47+
lint: false
4448
- typesense: '26.0'
4549
otp: '27'
4650
elixir: '1.18'
@@ -50,6 +54,10 @@ jobs:
5054
elixir: '1.18'
5155
lint: false
5256
- typesense: '27.1'
57+
otp: '27'
58+
elixir: '1.18'
59+
lint: false
60+
- typesense: '28.0'
5361
otp: '27'
5462
elixir: '1.18'
5563
lint: true

CHANGELOG.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## major.minor.patch (yyyy.mm.dd)
99

10+
## 0.7.0 (2025.04.06)
11+
12+
### Changed ([#28](https://github.com/jaeyson/open_api_typesense/pull/28))
13+
14+
* Update to include Typesense [v28.0](https://typesense.org/docs/28.0/api)
15+
* Removed deprecated functions in `OpenApiTypesense.Client`
16+
* Bump dependency versions.
17+
* Renamed `search` to `search_collection` from `Documents` module.
18+
19+
### Added
20+
21+
* Tests for [stemming](https://typesense.org/docs/28.0/api/stemming.html)
22+
* Doc version tags
23+
1024
## 0.6.5 (2025.03.23)
1125

1226
### Changed ([#25](https://github.com/jaeyson/open_api_typesense/pull/25))

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Restful client for Typesense with adherence to Open API spec 3 (formerly Swagger
66
[![Hex.pm](https://img.shields.io/hexpm/v/open_api_typesense)](https://hex.pm/packages/open_api_typesense)
77
[![Hexdocs.pm](https://img.shields.io/badge/hex-docs-lightgreen.svg)](https://hexdocs.pm/open_api_typesense)
88
[![Hex.pm](https://img.shields.io/hexpm/l/open_api_typesense)](https://hexdocs.pm/open_api_typesense/license.html)
9-
[![Typesense badge](https://img.shields.io/badge/Typesense-v26.0_%7C_v27.0_%7C_v27.1-darkblue)](https://typesense.org/docs/27.1/api)
9+
[![Typesense badge](https://img.shields.io/badge/Typesense-v26.0_%7C_v27.0_%7C_v27.1_%7C_v28.0-darkblue)](https://typesense.org/docs/27.1/api)
1010
[![Coverage Status](https://coveralls.io/repos/github/jaeyson/open_api_typesense/badge.svg?branch=main)](https://coveralls.io/github/jaeyson/open_api_typesense?branch=main)
1111
[![CI Status](https://github.com/jaeyson/open_api_typesense/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/jaeyson/open_api_typesense/actions/workflows/ci.yml)
1212
[![Codacy Badge](https://app.codacy.com/project/badge/Grade/965dd3f8866d49c3b3e82edd0f6270cb)](https://app.codacy.com/gh/jaeyson/open_api_typesense/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
@@ -20,7 +20,7 @@ by adding `open_api_typesense` to your list of dependencies in `mix.exs`:
2020
```elixir
2121
def deps do
2222
[
23-
{:open_api_typesense, "~> 0.6"}
23+
{:open_api_typesense, "~> 0.7"}
2424

2525
# Or from GitHub repository, if you want the latest greatest from main branch
2626
{:open_api_typesense, git: "https://github.com/jaeyson/open_api_typesense.git"}

docker-compose.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
services:
22
typesense:
3-
image: docker.io/typesense/typesense:27.1
3+
image: docker.io/typesense/typesense:28.0
44
container_name: typesense
55
restart: on-failure
66
ports:

lib/open_api_typesense/client.ex

Lines changed: 11 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -21,26 +21,6 @@ defmodule OpenApiTypesense.Client do
2121
| {:error, list()}
2222
| :error
2323

24-
@doc since: "0.2.0"
25-
@spec get_host :: String.t() | nil
26-
@deprecated "Use OpenApiTypesense.Connection.config(:host) instead"
27-
def get_host, do: Application.get_env(:open_api_typesense, :host)
28-
29-
@doc since: "0.2.0"
30-
@spec get_scheme :: String.t() | nil
31-
@deprecated "Use OpenApiTypesense.Connection.config(:scheme) instead"
32-
def get_scheme, do: Application.get_env(:open_api_typesense, :scheme)
33-
34-
@doc since: "0.2.0"
35-
@spec get_port :: non_neg_integer() | nil
36-
@deprecated "Use OpenApiTypesense.Connection.config(:port) instead"
37-
def get_port, do: Application.get_env(:open_api_typesense, :port)
38-
39-
@doc since: "0.5.0"
40-
@spec get_client :: keyword() | nil
41-
@deprecated "Use OpenApiTypesense.Connection.config(:client) instead"
42-
def get_client, do: Application.get_env(:open_api_typesense, :client)
43-
4424
@doc """
4525
Returns the Typesense's API key
4626
@@ -190,12 +170,17 @@ defmodule OpenApiTypesense.Client do
190170
resp =
191171
values
192172
|> Enum.map(fn {module, _func_name} ->
193-
if is_list(body) do
194-
Enum.map(body, fn single_body ->
195-
struct(module, single_body)
196-
end)
197-
else
198-
struct(module, body)
173+
cond do
174+
is_list(body) ->
175+
Enum.map(body, fn single_body ->
176+
struct(module, single_body)
177+
end)
178+
179+
is_nil(body) ->
180+
[]
181+
182+
true ->
183+
struct(module, body)
199184
end
200185
end)
201186
|> List.flatten()

lib/open_api_typesense/connection.ex

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,18 @@ defmodule OpenApiTypesense.Connection do
7575
raise ArgumentError, "Expected a map for connection options"
7676
end
7777

78+
@doc since: "0.6.5"
79+
@spec config(atom()) :: any()
80+
def config(key, default \\ nil) do
81+
Access.get(config(), key, default)
82+
end
83+
84+
@doc since: "0.6.5"
85+
@spec config :: list()
86+
def config do
87+
Application.get_all_env(:open_api_typesense)
88+
end
89+
7890
@spec required_fields :: list(atom())
7991
defp required_fields do
8092
# Dropping :client key in order to make it optional
@@ -98,14 +110,4 @@ defmodule OpenApiTypesense.Connection do
98110
options: config(:options, [])
99111
}
100112
end
101-
102-
@spec config(atom()) :: any()
103-
def config(key, default \\ nil) do
104-
Access.get(config(), key, default)
105-
end
106-
107-
@spec config :: list()
108-
def config do
109-
Application.get_all_env(:open_api_typesense)
110-
end
111113
end

lib/open_api_typesense/operations/analytics.ex

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
defmodule OpenApiTypesense.Analytics do
2+
@moduledoc since: "0.4.0"
3+
24
@moduledoc """
35
Provides API endpoints related to analytics
46
"""
@@ -12,11 +14,12 @@ defmodule OpenApiTypesense.Analytics do
1214
1315
Sending events for analytics e.g rank search results based on popularity.
1416
"""
17+
@doc since: "0.4.0"
1518
@spec create_analytics_event(map()) ::
1619
{:ok, OpenApiTypesense.AnalyticsEventCreateResponse.t()}
1720
| {:error, OpenApiTypesense.ApiResponse.t()}
1821
def create_analytics_event(body) do
19-
create_analytics_event(Connection.new(), body)
22+
create_analytics_event(body, [])
2023
end
2124

2225
@doc """
@@ -25,6 +28,7 @@ defmodule OpenApiTypesense.Analytics do
2528
- `create_analytics_event(%{api_key: xyz, host: ...}, payload)`
2629
- `create_analytics_event(Connection.new(), payload)`
2730
"""
31+
@doc since: "0.4.0"
2832
@spec create_analytics_event(map() | Connection.t(), map() | keyword()) ::
2933
{:ok, OpenApiTypesense.AnalyticsEventCreateResponse.t()}
3034
| {:error, OpenApiTypesense.ApiResponse.t()}
@@ -41,6 +45,7 @@ defmodule OpenApiTypesense.Analytics do
4145
- `create_analytics_event(%{api_key: xyz, host: ...}, payload, opts)`
4246
- `create_analytics_event(Connection.new(), payload, opts)`
4347
"""
48+
@doc since: "0.4.0"
4449
@spec create_analytics_event(map() | Connection.t(), map(), keyword()) ::
4550
{:ok, OpenApiTypesense.AnalyticsEventCreateResponse.t()}
4651
| {:error, OpenApiTypesense.ApiResponse.t()}
@@ -72,11 +77,12 @@ defmodule OpenApiTypesense.Analytics do
7277
7378
When an analytics rule is created, we give it a name and describe the type, the source collections and the destination collection.
7479
"""
80+
@doc since: "0.4.0"
7581
@spec create_analytics_rule(map()) ::
7682
{:ok, OpenApiTypesense.AnalyticsRuleSchema.t()}
7783
| {:error, OpenApiTypesense.ApiResponse.t()}
7884
def create_analytics_rule(body) do
79-
create_analytics_rule(Connection.new(), body)
85+
create_analytics_rule(body, [])
8086
end
8187

8288
@doc """
@@ -85,6 +91,7 @@ defmodule OpenApiTypesense.Analytics do
8591
- `create_analytics_rule(%{api_key: xyz, host: ...}, payload)`
8692
- `create_analytics_rule(Connection.new(), payload)`
8793
"""
94+
@doc since: "0.4.0"
8895
@spec create_analytics_rule(map() | Connection.t(), map() | keyword()) ::
8996
{:ok, OpenApiTypesense.AnalyticsRuleSchema.t()}
9097
| {:error, OpenApiTypesense.ApiResponse.t()}
@@ -101,6 +108,7 @@ defmodule OpenApiTypesense.Analytics do
101108
- `create_analytics_rule(%{api_key: xyz, host: ...}, payload, opts)`
102109
- `create_analytics_rule(Connection.new(), payload, opts)`
103110
"""
111+
@doc since: "0.4.0"
104112
@spec create_analytics_rule(map() | Connection.t(), map(), keyword()) ::
105113
{:ok, OpenApiTypesense.AnalyticsRuleSchema.t()}
106114
| {:error, OpenApiTypesense.ApiResponse.t()}
@@ -133,11 +141,12 @@ defmodule OpenApiTypesense.Analytics do
133141
134142
Permanently deletes an analytics rule, given it's name
135143
"""
144+
@doc since: "0.4.0"
136145
@spec delete_analytics_rule(String.t()) ::
137146
{:ok, OpenApiTypesense.AnalyticsRuleDeleteResponse.t()}
138147
| {:error, OpenApiTypesense.ApiResponse.t()}
139148
def delete_analytics_rule(ruleName) do
140-
delete_analytics_rule(Connection.new(), ruleName)
149+
delete_analytics_rule(ruleName, [])
141150
end
142151

143152
@doc """
@@ -146,6 +155,7 @@ defmodule OpenApiTypesense.Analytics do
146155
- `delete_analytics_rule(%{api_key: xyz, host: ...}, ruleName)`
147156
- `delete_analytics_rule(Connection.new(), ruleName)`
148157
"""
158+
@doc since: "0.4.0"
149159
@spec delete_analytics_rule(map() | Connection.t() | String.t(), String.t() | keyword()) ::
150160
{:ok, OpenApiTypesense.AnalyticsRuleDeleteResponse.t()}
151161
| {:error, OpenApiTypesense.ApiResponse.t()}
@@ -162,6 +172,7 @@ defmodule OpenApiTypesense.Analytics do
162172
- `delete_analytics_rule(%{api_key: xyz, host: ...}, ruleName, opts)`
163173
- `delete_analytics_rule(Connection.new(), ruleName, opts)`
164174
"""
175+
@doc since: "0.4.0"
165176
@spec delete_analytics_rule(map() | Connection.t(), String.t(), keyword()) ::
166177
{:ok, OpenApiTypesense.AnalyticsRuleDeleteResponse.t()}
167178
| {:error, OpenApiTypesense.ApiResponse.t()}
@@ -191,11 +202,12 @@ defmodule OpenApiTypesense.Analytics do
191202
192203
Retrieve the details of an analytics rule, given it's name
193204
"""
205+
@doc since: "0.4.0"
194206
@spec retrieve_analytics_rule(String.t()) ::
195207
{:ok, OpenApiTypesense.AnalyticsRuleSchema.t()}
196208
| {:error, OpenApiTypesense.ApiResponse.t()}
197209
def retrieve_analytics_rule(ruleName) do
198-
retrieve_analytics_rule(Connection.new(), ruleName)
210+
retrieve_analytics_rule(ruleName, [])
199211
end
200212

201213
@doc """
@@ -204,6 +216,7 @@ defmodule OpenApiTypesense.Analytics do
204216
- `retrieve_analytics_rule(%{api_key: xyz, host: ...}, ruleName)`
205217
- `retrieve_analytics_rule(Connection.new(), ruleName)`
206218
"""
219+
@doc since: "0.4.0"
207220
@spec retrieve_analytics_rule(map() | Connection.t() | String.t(), String.t() | keyword()) ::
208221
{:ok, OpenApiTypesense.AnalyticsRuleSchema.t()}
209222
| {:error, OpenApiTypesense.ApiResponse.t()}
@@ -220,6 +233,7 @@ defmodule OpenApiTypesense.Analytics do
220233
- `retrieve_analytics_rule(%{api_key: xyz, host: ...}, ruleName, opts)`
221234
- `retrieve_analytics_rule(Connection.new(), ruleName, opts)`
222235
"""
236+
@doc since: "0.4.0"
223237
@spec retrieve_analytics_rule(map() | Connection.t(), String.t(), keyword()) ::
224238
{:ok, OpenApiTypesense.AnalyticsRuleSchema.t()}
225239
| {:error, OpenApiTypesense.ApiResponse.t()}
@@ -250,11 +264,12 @@ defmodule OpenApiTypesense.Analytics do
250264
Retrieve the details of all analytics rules
251265
252266
"""
267+
@doc since: "0.4.0"
253268
@spec retrieve_analytics_rules ::
254269
{:ok, OpenApiTypesense.AnalyticsRulesRetrieveSchema.t()}
255270
| {:error, OpenApiTypesense.ApiResponse.t()}
256271
def retrieve_analytics_rules do
257-
retrieve_analytics_rules(Connection.new())
272+
retrieve_analytics_rules([])
258273
end
259274

260275
@doc """
@@ -263,6 +278,7 @@ defmodule OpenApiTypesense.Analytics do
263278
- `retrieve_analytics_rules(%{api_key: xyz, host: ...})`
264279
- `retrieve_analytics_rules(Connection.new())`
265280
"""
281+
@doc since: "0.4.0"
266282
@spec retrieve_analytics_rules(map() | Connection.t() | keyword()) ::
267283
{:ok, OpenApiTypesense.AnalyticsRulesRetrieveSchema.t()}
268284
| {:error, OpenApiTypesense.ApiResponse.t()}
@@ -279,6 +295,7 @@ defmodule OpenApiTypesense.Analytics do
279295
- `retrieve_analytics_rules(%{api_key: xyz, host: ...}, opts)`
280296
- `retrieve_analytics_rules(Connection.new(), opts)`
281297
"""
298+
@doc since: "0.4.0"
282299
@spec retrieve_analytics_rules(map() | Connection.t(), keyword()) ::
283300
{:ok, OpenApiTypesense.AnalyticsRulesRetrieveSchema.t()}
284301
| {:error, OpenApiTypesense.ApiResponse.t()}
@@ -307,11 +324,12 @@ defmodule OpenApiTypesense.Analytics do
307324
308325
Upserts an analytics rule with the given name.
309326
"""
327+
@doc since: "0.4.0"
310328
@spec upsert_analytics_rule(String.t(), map()) ::
311329
{:ok, OpenApiTypesense.AnalyticsRuleSchema.t()}
312330
| {:error, OpenApiTypesense.ApiResponse.t()}
313331
def upsert_analytics_rule(ruleName, body) do
314-
upsert_analytics_rule(Connection.new(), ruleName, body)
332+
upsert_analytics_rule(ruleName, body, [])
315333
end
316334

317335
@doc """
@@ -320,6 +338,7 @@ defmodule OpenApiTypesense.Analytics do
320338
- `upsert_analytics_rule(%{api_key: xyz, host: ...}, ruleName, body)`
321339
- `upsert_analytics_rule(Connection.new(), ruleName, body)`
322340
"""
341+
@doc since: "0.4.0"
323342
@spec upsert_analytics_rule(
324343
map() | Connection.t() | String.t(),
325344
String.t() | map(),
@@ -340,6 +359,7 @@ defmodule OpenApiTypesense.Analytics do
340359
- `upsert_analytics_rule(%{api_key: xyz, host: ...}, ruleName, body, opts)`
341360
- `upsert_analytics_rule(Connection.new(), ruleName, body, opts)`
342361
"""
362+
@doc since: "0.4.0"
343363
@spec upsert_analytics_rule(map() | Connection.t(), String.t(), map(), keyword()) ::
344364
{:ok, OpenApiTypesense.AnalyticsRuleSchema.t()}
345365
| {:error, OpenApiTypesense.ApiResponse.t()}

0 commit comments

Comments
 (0)