File tree Expand file tree Collapse file tree 5 files changed +178
-72
lines changed
Expand file tree Collapse file tree 5 files changed +178
-72
lines changed Original file line number Diff line number Diff line change @@ -76,6 +76,36 @@ The examples displays the creation of collection named `companies`.
7676 :token_separators []}
7777```
7878
79+ ### Update collection
80+
81+ The different ` types ` for the schema can be found [ here] ( https://typesense.org/docs/0.24.0/api/collections.html#update-or-alter-a-collection ) .
82+
83+ The examples shows updating the collection named named ` companies ` with a new field ` year_founded ` .
84+
85+ ``` clojure
86+ (update-collection!
87+ settings
88+ " companies"
89+ {:fields [{:name " year_founded"
90+ :type " int32"
91+ :optional true }]})
92+
93+ ; ; Example success response =>
94+ {:fields
95+ [{:infix false
96+ :index true
97+ :locale " "
98+ :name " year_founded"
99+ :nested false
100+ :nested_array 0
101+ :facet false
102+ :type " int32"
103+ :num_dim 0
104+ :optional true
105+ :vec_dist " cosine"
106+ :sort true }]}
107+ ```
108+
79109### Delete collection
80110
81111Permanently drops a collection on the ` collection-name ` . This action cannot be undone.
Original file line number Diff line number Diff line change 5959 " Content-Type" " application/json" }
6060 :body (json/write-str schema)}})
6161
62+ (defn update-collection-req
63+ [{:keys [uri key]} collection-name update-schema]
64+ {:uri (collection-uri uri collection-name)
65+ :req {:headers {api-key-header-name key
66+ " Content-Type" " application/json" }
67+ :body (json/write-str update-schema)}})
68+
6269(defn drop-collection-req
6370 [{:keys [uri key]} collection-name]
6471 {:uri (collection-uri uri collection-name)
Original file line number Diff line number Diff line change 3232 (let [{:keys [uri req]} (api/create-collection-req settings schema)]
3333 (util/http-response-json->map (http/post uri req)))))
3434
35+ (defn update-collection!
36+ " Update collection on name using the supplied update-schema."
37+ [settings collection-name update-schema]
38+ (try-typesense-api
39+ (let [{:keys [uri req]} (api/update-collection-req settings collection-name update-schema)]
40+ (util/http-response-json->map (http/patch uri req)))))
41+
3542(defn delete-collection!
3643 " Permanently drops a collection. This action cannot be undone.
3744 For large collections, this might have an impact on read latencies."
Original file line number Diff line number Diff line change 2020 :body (json/write-str schema)}}]
2121 (is (= exp req))))
2222
23+ (deftest update-collection-req-test
24+ (let [collection-name " test_collection"
25+ update-schema {:fields [{:name " test_name" :drop true }
26+ {:name " new_field"
27+ :type " string"
28+ :facet false
29+ :optional true }]}
30+ req (sut/update-collection-req settings collection-name update-schema)
31+ exp {:uri " http://localhost:8108/collections/test_collection"
32+ :req {:headers {" X-TYPESENSE-API-KEY" " key"
33+ " Content-Type" " application/json" }
34+ :body (json/write-str update-schema)}}]
35+ (is (= exp req))))
36+
2337(deftest drop-collection-req-test
2438 (let [req (sut/drop-collection-req settings " test_collection" )
2539 exp {:uri " http://localhost:8108/collections/test_collection"
Original file line number Diff line number Diff line change 8787 ; ; We remove :created_at it cannot be asserted since it changes each run.
8888 (is (= expected (dissoc response :created_at )))))
8989
90+ (testing " Update collection"
91+ (let [expected {:fields
92+ [{:infix false
93+ :index true
94+ :locale " "
95+ :name " year_founded"
96+ :nested false
97+ :nested_array 0
98+ :facet false
99+ :type " int32"
100+ :num_dim 0
101+ :optional true
102+ :vec_dist " cosine"
103+ :sort true }]}
104+ collection-name " companies_collection_test"
105+ update-schema {:fields [{:name " year_founded"
106+ :type " int32"
107+ :optional true }]}
108+ response (sut/update-collection! settings collection-name update-schema)]
109+ (is (= expected response))))
110+
90111 (testing " List collections"
91112 (let [expected [{:default_sorting_field " num_employees"
92113 :enable_nested_fields false
93- :fields [{:facet false
94- :index true
95- :name " company_name"
96- :optional false
97- :type " string"
98- :infix false
99- :locale " "
100- :sort false }
101- {:facet false
102- :index true
103- :name " num_employees"
104- :optional false
105- :type " int32"
106- :infix false
107- :locale " "
108- :sort true }
109- {:facet true
110- :index true
111- :name " country"
112- :optional false
113- :type " string"
114- :infix false
115- :locale " "
116- :sort false }]
114+ :fields
115+ [{:facet false
116+ :index true
117+ :infix false
118+ :locale " "
119+ :name " company_name"
120+ :optional false
121+ :sort false
122+ :type " string" }
123+ {:facet false
124+ :index true
125+ :infix false
126+ :locale " "
127+ :name " num_employees"
128+ :optional false
129+ :sort true
130+ :type " int32" }
131+ {:facet true
132+ :index true
133+ :infix false
134+ :locale " "
135+ :name " country"
136+ :optional false
137+ :sort false
138+ :type " string" }
139+ {:facet false
140+ :index true
141+ :infix false
142+ :locale " "
143+ :name " year_founded"
144+ :optional true
145+ :sort true
146+ :type " int32" }]
117147 :name " companies_collection_test"
118148 :num_documents 0
119149 :symbols_to_index []
127157 (testing " Retrieve collection"
128158 (let [expected {:default_sorting_field " num_employees"
129159 :enable_nested_fields false
130- :fields [{:facet false
131- :index true
132- :infix false
133- :locale " "
134- :name " company_name"
135- :optional false
136- :sort false
137- :type " string" }
138- {:facet false
139- :index true
140- :infix false
141- :locale " "
142- :name " num_employees"
143- :optional false
144- :sort true
145- :type " int32" }
146- {:facet true
147- :index true
148- :infix false
149- :locale " "
150- :name " country"
151- :optional false
152- :sort false
153- :type " string" }]
160+ :fields
161+ [{:facet false
162+ :index true
163+ :infix false
164+ :locale " "
165+ :name " company_name"
166+ :optional false
167+ :sort false
168+ :type " string" }
169+ {:facet false
170+ :index true
171+ :infix false
172+ :locale " "
173+ :name " num_employees"
174+ :optional false
175+ :sort true
176+ :type " int32" }
177+ {:facet true
178+ :index true
179+ :infix false
180+ :locale " "
181+ :name " country"
182+ :optional false
183+ :sort false
184+ :type " string" }
185+ {:facet false
186+ :index true
187+ :infix false
188+ :locale " "
189+ :name " year_founded"
190+ :optional true
191+ :sort true
192+ :type " int32" }]
154193 :name " companies_collection_test"
155194 :num_documents 0
156195 :symbols_to_index []
163202 (testing " Delete collection"
164203 (let [expected {:default_sorting_field " num_employees"
165204 :enable_nested_fields false
166- :fields [{:facet false
167- :index true
168- :name " company_name"
169- :optional false
170- :type " string"
171- :infix false
172- :locale " "
173- :sort false }
174- {:facet false
175- :index true
176- :name " num_employees"
177- :optional false
178- :type " int32"
179- :infix false
180- :locale " "
181- :sort true }
182- {:facet true
183- :index true
184- :name " country"
185- :optional false
186- :type " string"
187- :infix false
188- :locale " "
189- :sort false }]
205+ :fields
206+ [{:facet false
207+ :index true
208+ :infix false
209+ :locale " "
210+ :name " company_name"
211+ :optional false
212+ :sort false
213+ :type " string" }
214+ {:facet false
215+ :index true
216+ :infix false
217+ :locale " "
218+ :name " num_employees"
219+ :optional false
220+ :sort true
221+ :type " int32" }
222+ {:facet true
223+ :index true
224+ :infix false
225+ :locale " "
226+ :name " country"
227+ :optional false
228+ :sort false
229+ :type " string" }
230+ {:facet false
231+ :index true
232+ :infix false
233+ :locale " "
234+ :name " year_founded"
235+ :optional true
236+ :sort true
237+ :type " int32" }]
190238 :name " companies_collection_test"
191239 :num_documents 0
192240 :symbols_to_index []
You can’t perform that action at this time.
0 commit comments