diff --git a/src/flux/collections.clj b/src/flux/collections.clj index 2080905..f94aab5 100644 --- a/src/flux/collections.clj +++ b/src/flux/collections.clj @@ -73,8 +73,17 @@ (Thread/sleep 1000) (recur (try-all-replicas connection collection))))) +(defn- collection-crud + "CRUD helper for collections " + [connection params] + (client/request + connection + (q/create-query-request :get "/admin/collections" params))) + (defn create-collection "Create a SolrCloud collection" + ([connection collection-name] + (create-collection connection collection-name 1 1 {})) ([connection collection-name num-shards] (create-collection connection collection-name num-shards 1 {})) ([connection collection-name num-shards replication-factor] @@ -85,14 +94,19 @@ "name" collection-name "numShards" num-shards "replicationFactor" replication-factor)] - (client/request - connection - (q/create-query-request :get "/admin/collections" with-params))))) + (collection-crud connection with-params)))) (defn delete-collection "Delete a SolrCloud collection" [connection collection-name] - (let [with-params {"action" "delete" "name" collection-name}] - (client/request - connection - (q/create-query-request :get "/admin/collections" with-params)))) + (collection-crud connection {"action" "delete" "name" collection-name})) + +(defn reload-collection + "Reloads a SolrCloud collection" + [connection collection-name] + (collection-crud connection {"action" "reload" "name" collection-name})) + +(defn list-collections + "Lists all the Solr collections" + [connection] + (collection-crud connection {"action" "list"})) diff --git a/src/flux/http.clj b/src/flux/http.clj index 8b6a69d..58c7224 100644 --- a/src/flux/http.clj +++ b/src/flux/http.clj @@ -1,5 +1,7 @@ (ns flux.http (import [org.apache.solr.client.solrj.impl HttpSolrServer])) -(defn create [base-url core-name] - (HttpSolrServer. (str base-url "/" (name core-name)))) +(defn create + ([base-url] (create base-url "")) + ([base-url core-name] + (HttpSolrServer. (str base-url "/" (name core-name)))))