|
1 | 1 | import time |
2 | 2 | from typing import Any, Dict, List, Optional |
| 3 | +from exceptions.exceptions import ApiTokenImportError |
3 | 4 |
|
4 | 5 | from submodules.model import enums |
5 | 6 | from submodules.model.models import Embedding |
@@ -108,7 +109,7 @@ def get_embedding_name( |
108 | 109 |
|
109 | 110 |
|
110 | 111 | def recreate_embeddings( |
111 | | - project_id: str, embedding_ids: Optional[List[str]] = None |
| 112 | + project_id: str, embedding_ids: Optional[List[str]] = None, user_id: str = None |
112 | 113 | ) -> None: |
113 | 114 | if not embedding_ids: |
114 | 115 | embeddings = embedding.get_all_embeddings_by_project_id(project_id) |
@@ -148,29 +149,37 @@ def recreate_embeddings( |
148 | 149 | break |
149 | 150 | else: |
150 | 151 | time.sleep(1) |
| 152 | + except ApiTokenImportError as e: |
| 153 | + notification.create_notification(enums.NotificationType.RECREATION_OF_EMBEDDINGS_ERROR, user_id, project_id) |
| 154 | + __handle_failed_embedding(project_id,embedding_id, new_id,e) |
| 155 | + |
151 | 156 | except Exception as e: |
152 | | - print( |
153 | | - f"Error while recreating embedding for {project_id} with id {embedding_id} - {e}", |
154 | | - flush=True, |
155 | | - ) |
156 | | - notification.send_organization_update( |
157 | | - project_id, |
158 | | - f"embedding:{embedding_id}:state:{enums.EmbeddingState.FAILED.value}", |
159 | | - ) |
160 | | - old_embedding_item = embedding.get(project_id, embedding_id) |
161 | | - if old_embedding_item: |
162 | | - old_embedding_item.state = enums.EmbeddingState.FAILED.value |
163 | | - |
164 | | - if new_id: |
165 | | - new_embedding_item = embedding.get(project_id, new_id) |
166 | | - if new_embedding_item: |
167 | | - new_embedding_item.state = enums.EmbeddingState.FAILED.value |
168 | | - general.commit() |
| 157 | + __handle_failed_embedding(project_id,embedding_id, new_id,e) |
169 | 158 |
|
170 | 159 | notification.send_organization_update( |
171 | 160 | project_id=project_id, message="embedding:finished:all" |
172 | 161 | ) |
173 | 162 |
|
| 163 | +def __handle_failed_embedding(project_id: str, embedding_id: str,new_id: str, e: Exception) -> None: |
| 164 | + print( |
| 165 | + f"Error while recreating embedding for {project_id} with id {embedding_id} - {e}", |
| 166 | + flush=True, |
| 167 | + ) |
| 168 | + |
| 169 | + notification.send_organization_update( |
| 170 | + project_id, |
| 171 | + f"embedding:{embedding_id}:state:{enums.EmbeddingState.FAILED.value}", |
| 172 | + ) |
| 173 | + old_embedding_item = embedding.get(project_id, embedding_id) |
| 174 | + if old_embedding_item: |
| 175 | + old_embedding_item.state = enums.EmbeddingState.FAILED.value |
| 176 | + |
| 177 | + if new_id: |
| 178 | + new_embedding_item = embedding.get(project_id, new_id) |
| 179 | + if new_embedding_item: |
| 180 | + new_embedding_item.state = enums.EmbeddingState.FAILED.value |
| 181 | + general.commit() |
| 182 | + |
174 | 183 |
|
175 | 184 | def __recreate_embedding(project_id: str, embedding_id: str) -> Embedding: |
176 | 185 | old_embedding_item = embedding.get(project_id, embedding_id) |
@@ -204,7 +213,7 @@ def __recreate_embedding(project_id: str, embedding_id: str) -> Embedding: |
204 | 213 | if not agreement_item: |
205 | 214 | new_embedding_item.state = enums.EmbeddingState.FAILED.value |
206 | 215 | general.commit() |
207 | | - raise Exception( |
| 216 | + raise ApiTokenImportError( |
208 | 217 | f"No agreement found for embedding {new_embedding_item.name}" |
209 | 218 | ) |
210 | 219 | agreement_item.xfkey = new_embedding_item.id |
|
0 commit comments