Skip to content

Commit cdf31c2

Browse files
authored
Merge pull request #40 from OLIOEX/add_truncate_collection_documents
Add truncate collection documents
2 parents 2090029 + 33f6be0 commit cdf31c2

File tree

4 files changed

+33
-1
lines changed

4 files changed

+33
-1
lines changed

examples/collections_and_documents.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,16 @@
145145
# "num_documents" => 0
146146
# }
147147

148+
###
149+
# Truncate a collection
150+
# Deletion returns the number of documents deleted
151+
collection = @typesense.collections['companies'].truncate
152+
ap collection
153+
154+
# {
155+
# "num_deleted": 125
156+
# }
157+
148158
# Let's create the collection again for use in our remaining examples
149159
@typesense.collections.create(schema)
150160

lib/typesense/collection.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ def initialize(name, api_call)
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)
12+
@synonyms = Synonyms.new(@name, @api_call)
1313
end
1414

1515
def retrieve

lib/typesense/documents.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,10 @@ def delete(query_parameters = {})
7272
@api_call.delete(endpoint_path, query_parameters)
7373
end
7474

75+
def truncate
76+
@api_call.delete(endpoint_path, { truncate: true })
77+
end
78+
7579
private
7680

7781
def endpoint_path(operation = nil)

spec/typesense/documents_spec.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,24 @@
242242
end
243243
end
244244

245+
describe '#truncate' do
246+
it 'truncate documents in a collection' do
247+
stub_request(:delete, Typesense::ApiCall.new(typesense.configuration).send(:uri_for, '/collections/companies/documents', typesense.configuration.nodes[0]))
248+
.with(headers: {
249+
'X-Typesense-Api-Key' => typesense.configuration.api_key,
250+
'Content-Type' => 'application/json'
251+
},
252+
query: {
253+
truncate: true
254+
})
255+
.to_return(status: 200, body: '{ "num_deleted": 1 }', headers: { 'Content-Type': 'application/json' })
256+
257+
result = companies_documents.truncate
258+
259+
expect(result['num_deleted']).to eq(1)
260+
end
261+
end
262+
245263
describe '#search' do
246264
let(:search_parameters) do
247265
{

0 commit comments

Comments
 (0)