From d962b4a585cfb4a08e46b40427f6bbf6088a5e42 Mon Sep 17 00:00:00 2001
From: Remi  PLANEL <rplanel@pasteur.fr>
Date: Thu, 11 Jan 2024 17:35:18 +0100
Subject: [PATCH] update refseq

---
 .gitattributes                                |  1 +
 .gitlab-ci.yml                                |  9 +++++++++
 .../df-wiki-cli/df_wiki_cli/content/main.py   |  3 ---
 .../df_wiki_cli/meilisearch/__init__.py       | 10 ++++++++--
 .../df_wiki_cli/meilisearch/main.py           | 19 +++++++++++++++++++
 packages/df-wiki-cli/pyproject.toml           |  2 +-
 6 files changed, 38 insertions(+), 6 deletions(-)

diff --git a/.gitattributes b/.gitattributes
index 40ca7edd..ccb58707 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,2 +1,3 @@
 data/ filter=lfs diff=lfs merge=lfs -text
 data/**/*.csv filter=lfs diff=lfs merge=lfs -text
+data/**/*.tsv filter=lfs diff=lfs merge=lfs -text
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3eb89e35..60d46c3f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -203,6 +203,15 @@ lint:
       --dir content/3.defense-systems/ 
       --pfam public/pfam-a-hmm.csv 
       --output data/list-systems.json
+    - df-wiki-cli meilisearch delete-all-documents refseq  
+    - >
+      df-wiki-cli
+      meilisearch 
+      --host ${MEILI_HOST} 
+      --key ${MEILI_MASTER_KEY}
+      index-update 
+      refseq 
+      sys_id
     - >
       df-wiki-cli
       meilisearch 
diff --git a/packages/df-wiki-cli/df_wiki_cli/content/main.py b/packages/df-wiki-cli/df_wiki_cli/content/main.py
index e516f383..ee09705c 100644
--- a/packages/df-wiki-cli/df_wiki_cli/content/main.py
+++ b/packages/df-wiki-cli/df_wiki_cli/content/main.py
@@ -264,7 +264,6 @@ def refseq(
         ),
     ],
 ):
-    
     with open(output, "w") as out, open(input, "r") as refseq_f:
         reader = csv.DictReader(refseq_f)
         fieldnames = reader.fieldnames
@@ -275,5 +274,3 @@ def refseq(
             console.print(f"[green]{row['sys_id']} ->  {result}")
             row["sys_id"] = result
             writer.writerow(row)
-
-        
\ No newline at end of file
diff --git a/packages/df-wiki-cli/df_wiki_cli/meilisearch/__init__.py b/packages/df-wiki-cli/df_wiki_cli/meilisearch/__init__.py
index d60b9ceb..3479787c 100644
--- a/packages/df-wiki-cli/df_wiki_cli/meilisearch/__init__.py
+++ b/packages/df-wiki-cli/df_wiki_cli/meilisearch/__init__.py
@@ -5,10 +5,14 @@ import json
 from typing import Annotated, List, Optional
 from pydantic import BaseModel, Field, BeforeValidator
 from enum import Enum
+from rich.console import Console
+
+
+console = Console()
 
 
 class RefSeqCsv(BaseModel):
-    id: str
+    sys_id: str
     replicon: str
     type: str
     subtype: str
@@ -86,7 +90,9 @@ def update_refseq(
             row["accession_in_sys"] = split_on_comma(row["accession_in_sys"])
             doc = RefSeqCsv(**row)
             documents.append(doc.model_dump(by_alias=True))
-        index.add_documents_in_batches(documents, primary_key="id")
+        tasks = index.add_documents_in_batches(documents, primary_key="sys_id")
+        for task in tasks:
+            console.print(task)
     index.update_pagination_settings({"maxTotalHits": 1000000})
     index.update_filterable_attributes(
         body=[
diff --git a/packages/df-wiki-cli/df_wiki_cli/meilisearch/main.py b/packages/df-wiki-cli/df_wiki_cli/meilisearch/main.py
index 858e189d..e7e30377 100644
--- a/packages/df-wiki-cli/df_wiki_cli/meilisearch/main.py
+++ b/packages/df-wiki-cli/df_wiki_cli/meilisearch/main.py
@@ -5,6 +5,10 @@ from pathlib import Path
 from df_wiki_cli.meilisearch import update_refseq, update_structure, update_systems
 from enum import Enum
 from types import SimpleNamespace
+from rich.console import Console
+
+
+console = Console()
 
 app = typer.Typer()
 
@@ -66,6 +70,21 @@ def delete_all_documents(ctx: typer.Context, id: str):
     index.delete_all_documents()
 
 
+@app.command()
+def indexes(ctx: typer.Context):
+    client = meilisearch.Client(ctx.obj.host, ctx.obj.key)
+    indexes = client.get_indexes()["results"]
+    for index in indexes:
+        print(index.uid)
+
+
+@app.command()
+def index_update(ctx: typer.Context, index: str, primary_key: str):
+    client = meilisearch.Client(ctx.obj.host, ctx.obj.key)
+    task = client.index(index).update(primary_key=primary_key)
+    console.print(task)
+
+
 @app.command()
 def task(ctx: typer.Context, id: str):
     client = meilisearch.Client(ctx.obj.host, ctx.obj.key)
diff --git a/packages/df-wiki-cli/pyproject.toml b/packages/df-wiki-cli/pyproject.toml
index 538eb535..22f5ffe8 100644
--- a/packages/df-wiki-cli/pyproject.toml
+++ b/packages/df-wiki-cli/pyproject.toml
@@ -1,6 +1,6 @@
 [tool.poetry]
 name = "df-wiki-cli"
-version = "0.1.4"
+version = "0.1.5"
 description = ""
 authors = ["Remi  PLANEL <rplanel@pasteur.fr>"]
 readme = "README.md"
-- 
GitLab