This is an automated email from the ASF dual-hosted git repository.

rnewson pushed a commit to branch lucene-10-weird
in repository https://gitbox.apache.org/repos/asf/couchdb.git

commit 3eb860de0b9427cefe414eabd7a71988f4d846cf
Author: Robert Newson <rnew...@apache.org>
AuthorDate: Tue Aug 12 21:29:42 2025 +0100

    maybe crap
---
 .../apache/couchdb/nouveau/NouveauApplication.java |  5 ++
 .../couchdb/nouveau/resources/UpgradeResource.java | 74 ++++++++++++++++++++++
 src/nouveau/include/nouveau.hrl                    |  3 +-
 src/nouveau/src/nouveau_api.erl                    | 36 +++++------
 src/nouveau/src/nouveau_index_updater.erl          |  1 +
 5 files changed, 97 insertions(+), 22 deletions(-)

diff --git 
a/nouveau/src/main/java/org/apache/couchdb/nouveau/NouveauApplication.java 
b/nouveau/src/main/java/org/apache/couchdb/nouveau/NouveauApplication.java
index a6c202903..594339839 100644
--- a/nouveau/src/main/java/org/apache/couchdb/nouveau/NouveauApplication.java
+++ b/nouveau/src/main/java/org/apache/couchdb/nouveau/NouveauApplication.java
@@ -28,6 +28,7 @@ import org.apache.couchdb.nouveau.lucene.LuceneModule;
 import org.apache.couchdb.nouveau.lucene.ParallelSearcherFactory;
 import org.apache.couchdb.nouveau.resources.AnalyzeResource;
 import org.apache.couchdb.nouveau.resources.IndexResource;
+import org.apache.couchdb.nouveau.resources.UpgradeResource;
 import org.apache.couchdb.nouveau.tasks.CloseAllIndexesTask;
 
 public class NouveauApplication extends 
Application<NouveauApplicationConfiguration> {
@@ -75,6 +76,10 @@ public class NouveauApplication extends 
Application<NouveauApplicationConfigurat
         final IndexResource indexResource = new IndexResource(indexManager);
         environment.jersey().register(indexResource);
 
+        // UpgradeResource
+        final UpgradeResource upgradeResource = new UpgradeResource();
+        environment.jersey().register(upgradeResource);
+
         // Health checks
         environment.healthChecks().register("analyze", new 
AnalyzeHealthCheck(analyzeResource));
         environment.healthChecks().register("index", new 
IndexHealthCheck(indexResource));
diff --git 
a/nouveau/src/main/java/org/apache/couchdb/nouveau/resources/UpgradeResource.java
 
b/nouveau/src/main/java/org/apache/couchdb/nouveau/resources/UpgradeResource.java
new file mode 100644
index 000000000..7b80a1be4
--- /dev/null
+++ 
b/nouveau/src/main/java/org/apache/couchdb/nouveau/resources/UpgradeResource.java
@@ -0,0 +1,74 @@
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package org.apache.couchdb.nouveau.resources;
+
+import com.codahale.metrics.annotation.ExceptionMetered;
+import com.codahale.metrics.annotation.Metered;
+import com.codahale.metrics.annotation.ResponseMetered;
+import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotNull;
+import jakarta.ws.rs.Consumes;
+import jakarta.ws.rs.DELETE;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.POST;
+import jakarta.ws.rs.PUT;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.PathParam;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.core.MediaType;
+import java.io.IOException;
+import org.apache.couchdb.nouveau.api.DocumentDeleteRequest;
+import org.apache.couchdb.nouveau.api.DocumentUpdateRequest;
+import org.apache.couchdb.nouveau.api.IndexInfo;
+import org.apache.couchdb.nouveau.api.IndexInfoRequest;
+import org.apache.couchdb.nouveau.api.Ok;
+
+@Path("/upgrade/{name}")
+@Metered
+@ResponseMetered
+@ExceptionMetered(cause = IOException.class)
+@Consumes(MediaType.APPLICATION_JSON)
+@Produces(MediaType.APPLICATION_JSON)
+public class UpgradeResource {
+
+    @GET
+    public IndexInfo getIndexInfo(@PathParam("name") String name) throws 
Exception {
+        return new IndexInfo(0, 0, 0, 0, true);
+    }
+
+    @POST
+    public Ok setIndexInfo(@PathParam("name") String name, @NotNull @Valid 
IndexInfoRequest request) throws Exception {
+        return Ok.INSTANCE;
+    }
+
+    @DELETE
+    @Path("/doc/{docId}")
+    public Ok deleteDoc(
+            @PathParam("name") String name,
+            @PathParam("docId") String docId,
+            @NotNull @Valid DocumentDeleteRequest request)
+            throws Exception {
+        return Ok.INSTANCE;
+    }
+
+    @PUT
+    @Path("/doc/{docId}")
+    public Ok updateDoc(
+            @PathParam("name") String name,
+            @PathParam("docId") String docId,
+            @NotNull @Valid DocumentUpdateRequest request)
+            throws Exception {
+        return Ok.INSTANCE;
+    }
+}
diff --git a/src/nouveau/include/nouveau.hrl b/src/nouveau/include/nouveau.hrl
index e50cd45d3..b647b1830 100644
--- a/src/nouveau/include/nouveau.hrl
+++ b/src/nouveau/include/nouveau.hrl
@@ -19,5 +19,6 @@
     def,
     def_lang,
     name,
-    sig=nil
+    sig = nil,
+    upgrade = false :: boolean()
 }).
diff --git a/src/nouveau/src/nouveau_api.erl b/src/nouveau/src/nouveau_api.erl
index 026212c5c..0204e7daf 100644
--- a/src/nouveau/src/nouveau_api.erl
+++ b/src/nouveau/src/nouveau_api.erl
@@ -217,31 +217,25 @@ set_seq(#index{} = Index, ReqBody) ->
 %% private functions
 
 index_path(Path) when is_binary(Path) ->
-    io_lib:format(
-        "/index/~s",
-        [
-            couch_util:url_encode(Path)
-        ]
-    );
+    [<<"/index/">>, couch_util:url_encode(Path)];
 index_path(#index{} = Index) ->
-    io_lib:format(
-        "/index/~s",
-        [
-            couch_util:url_encode(nouveau_util:index_name(Index))
-        ]
-    ).
+    [resource(Index), couch_util:url_encode(nouveau_util:index_name(Index))].
 
 doc_path(#index{} = Index, DocId) ->
-    io_lib:format(
-        "/index/~s/doc/~s",
-        [
-            couch_util:url_encode(nouveau_util:index_name(Index)),
-            couch_util:url_encode(DocId)
-        ]
-    ).
+    [
+        resource(Index),
+        couch_util:url_encode(nouveau_util:index_name(Index)),
+        <<"/doc/">>,
+        couch_util:url_encode(DocId)
+    ].
 
-search_path(IndexName) ->
-    index_path(IndexName) ++ "/search".
+search_path(#index{} = Index) ->
+    [index_path(Index), <<"/search">>].
+
+resource(#index{upgrade = false}) ->
+    <<"/index/">>;
+resource(#index{upgrade = true}) ->
+    <<"/upgrade/">>.
 
 jaxrs_error(400, Body) ->
     {bad_request, message(Body)};
diff --git a/src/nouveau/src/nouveau_index_updater.erl 
b/src/nouveau/src/nouveau_index_updater.erl
index 3952a893f..e76f84e73 100644
--- a/src/nouveau/src/nouveau_index_updater.erl
+++ b/src/nouveau/src/nouveau_index_updater.erl
@@ -65,6 +65,7 @@ update(#index{} = Index) ->
                 TotalChanges = ChangesSince + PurgesSince,
                 couch_task_status:add_task([
                     {type, search_indexer},
+                    {upgrade, Index#index.upgrade},
                     {database, Index#index.dbname},
                     {design_document, Index#index.ddoc_id},
                     {index, Index#index.name},

Reply via email to