diff --git a/meilisearch.NET.example/Program.cs b/meilisearch.NET.example/Program.cs
index 86d3aa5..4a8eebb 100644
--- a/meilisearch.NET.example/Program.cs
+++ b/meilisearch.NET.example/Program.cs
@@ -4,6 +4,7 @@ using System.Threading.Tasks;
using meilisearch.NET;
using meilisearch.NET.Configurations;
using meilisearch.NET.example;
+using meilisearch.NET.Extensions;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
diff --git a/meilisearch.NET/Exceptions/DocumentBatchException.cs b/meilisearch.NET/Exceptions/DocumentBatchException.cs
new file mode 100644
index 0000000..433d9bb
--- /dev/null
+++ b/meilisearch.NET/Exceptions/DocumentBatchException.cs
@@ -0,0 +1,12 @@
+namespace meilisearch.NET.Exceptions;
+
+public class DocumentBatchException : DocumentManagementException
+{
+ public int BatchSize { get; }
+
+ public DocumentBatchException(int batchSize, Exception innerException)
+ : base($"Failed to process batch of {batchSize} documents", innerException)
+ {
+ BatchSize = batchSize;
+ }
+}
\ No newline at end of file
diff --git a/meilisearch.NET/Exceptions/DocumentManagementException.cs b/meilisearch.NET/Exceptions/DocumentManagementException.cs
new file mode 100644
index 0000000..44d0e83
--- /dev/null
+++ b/meilisearch.NET/Exceptions/DocumentManagementException.cs
@@ -0,0 +1,10 @@
+namespace meilisearch.NET.Exceptions;
+
+///
+/// Exception thrown when there are issues with document management
+///
+public class DocumentManagementException : MeiliSearchException
+{
+ public DocumentManagementException(string message) : base(message) { }
+ public DocumentManagementException(string message, Exception innerException) : base(message, innerException) { }
+}
\ No newline at end of file
diff --git a/meilisearch.NET/Exceptions/DocumentSyncException.cs b/meilisearch.NET/Exceptions/DocumentSyncException.cs
new file mode 100644
index 0000000..2f204e9
--- /dev/null
+++ b/meilisearch.NET/Exceptions/DocumentSyncException.cs
@@ -0,0 +1,7 @@
+namespace meilisearch.NET.Exceptions;
+
+public class DocumentSyncException : DocumentManagementException
+{
+ public DocumentSyncException(string message, Exception innerException)
+ : base($"Failed to sync documents: {message}", innerException) { }
+}
\ No newline at end of file
diff --git a/meilisearch.NET/Exceptions/DocumentValidationException.cs b/meilisearch.NET/Exceptions/DocumentValidationException.cs
new file mode 100644
index 0000000..c0dac72
--- /dev/null
+++ b/meilisearch.NET/Exceptions/DocumentValidationException.cs
@@ -0,0 +1,7 @@
+namespace meilisearch.NET.Exceptions;
+
+public class DocumentValidationException : DocumentManagementException
+{
+ public DocumentValidationException(string message)
+ : base($"Document validation failed: {message}") { }
+}
\ No newline at end of file
diff --git a/meilisearch.NET/Exceptions/IndexCompressionException.cs b/meilisearch.NET/Exceptions/IndexCompressionException.cs
new file mode 100644
index 0000000..ecd7d17
--- /dev/null
+++ b/meilisearch.NET/Exceptions/IndexCompressionException.cs
@@ -0,0 +1,12 @@
+namespace meilisearch.NET.Exceptions;
+
+public class IndexCompressionException : IndexManagementException
+{
+ public string IndexName { get; }
+
+ public IndexCompressionException(string indexName, string operation, Exception innerException)
+ : base($"Failed to {operation} index '{indexName}'", innerException)
+ {
+ IndexName = indexName;
+ }
+}
\ No newline at end of file
diff --git a/meilisearch.NET/Exceptions/IndexLimitExceededException.cs b/meilisearch.NET/Exceptions/IndexLimitExceededException.cs
new file mode 100644
index 0000000..34237dd
--- /dev/null
+++ b/meilisearch.NET/Exceptions/IndexLimitExceededException.cs
@@ -0,0 +1,7 @@
+namespace meilisearch.NET.Exceptions;
+
+public class IndexLimitExceededException : IndexManagementException
+{
+ public IndexLimitExceededException()
+ : base("Maximum number of indexes (1000) has been reached") { }
+}
\ No newline at end of file
diff --git a/meilisearch.NET/Exceptions/IndexManagementException.cs b/meilisearch.NET/Exceptions/IndexManagementException.cs
new file mode 100644
index 0000000..45d4be9
--- /dev/null
+++ b/meilisearch.NET/Exceptions/IndexManagementException.cs
@@ -0,0 +1,10 @@
+namespace meilisearch.NET.Exceptions;
+
+///
+/// Exception thrown when there are issues with index management
+///
+public class IndexManagementException : MeiliSearchException
+{
+ public IndexManagementException(string message) : base(message) { }
+ public IndexManagementException(string message, Exception innerException) : base(message, innerException) { }
+}
diff --git a/meilisearch.NET/Exceptions/IndexNotFoundException.cs b/meilisearch.NET/Exceptions/IndexNotFoundException.cs
new file mode 100644
index 0000000..30bcb0a
--- /dev/null
+++ b/meilisearch.NET/Exceptions/IndexNotFoundException.cs
@@ -0,0 +1,12 @@
+namespace meilisearch.NET.Exceptions;
+
+public class IndexNotFoundException : IndexManagementException
+{
+ public string IndexName { get; }
+
+ public IndexNotFoundException(string indexName)
+ : base($"Index '{indexName}' not found")
+ {
+ IndexName = indexName;
+ }
+}
\ No newline at end of file
diff --git a/meilisearch.NET/Exceptions/MeiliSearchException.cs b/meilisearch.NET/Exceptions/MeiliSearchException.cs
new file mode 100644
index 0000000..a47b03d
--- /dev/null
+++ b/meilisearch.NET/Exceptions/MeiliSearchException.cs
@@ -0,0 +1,10 @@
+namespace meilisearch.NET.Exceptions;
+
+///
+/// Base exception class for all Meilisearch.NET exceptions
+///
+public class MeiliSearchException : Exception
+{
+ public MeiliSearchException(string message) : base(message) { }
+ public MeiliSearchException(string message, Exception innerException) : base(message, innerException) { }
+}
\ No newline at end of file
diff --git a/meilisearch.NET/Exceptions/ProcessManagementException.cs b/meilisearch.NET/Exceptions/ProcessManagementException.cs
new file mode 100644
index 0000000..871c823
--- /dev/null
+++ b/meilisearch.NET/Exceptions/ProcessManagementException.cs
@@ -0,0 +1,10 @@
+namespace meilisearch.NET.Exceptions;
+
+///
+/// Exception thrown when there are issues with the Meilisearch process management
+///
+public class ProcessManagementException : MeiliSearchException
+{
+ public ProcessManagementException(string message) : base(message) { }
+ public ProcessManagementException(string message, Exception innerException) : base(message, innerException) { }
+}
\ No newline at end of file
diff --git a/meilisearch.NET/Exceptions/ProcessNotRunningException.cs b/meilisearch.NET/Exceptions/ProcessNotRunningException.cs
new file mode 100644
index 0000000..06e9a07
--- /dev/null
+++ b/meilisearch.NET/Exceptions/ProcessNotRunningException.cs
@@ -0,0 +1,6 @@
+namespace meilisearch.NET.Exceptions;
+
+public class ProcessNotRunningException : ProcessManagementException
+{
+ public ProcessNotRunningException() : base("Meilisearch process is not running") { }
+}
\ No newline at end of file
diff --git a/meilisearch.NET/Exceptions/ProcessStartException.cs b/meilisearch.NET/Exceptions/ProcessStartException.cs
new file mode 100644
index 0000000..24922d8
--- /dev/null
+++ b/meilisearch.NET/Exceptions/ProcessStartException.cs
@@ -0,0 +1,6 @@
+namespace meilisearch.NET.Exceptions;
+
+public class ProcessStartException : ProcessManagementException
+{
+ public ProcessStartException(string message) : base($"Failed to start Meilisearch process: {message}") { }
+}
\ No newline at end of file
diff --git a/meilisearch.NET/Exceptions/ProcessStopException.cs b/meilisearch.NET/Exceptions/ProcessStopException.cs
new file mode 100644
index 0000000..f41ec7a
--- /dev/null
+++ b/meilisearch.NET/Exceptions/ProcessStopException.cs
@@ -0,0 +1,6 @@
+namespace meilisearch.NET.Exceptions;
+
+public class ProcessStopException : ProcessManagementException
+{
+ public ProcessStopException(string message) : base($"Failed to stop Meilisearch process: {message}") { }
+}
\ No newline at end of file
diff --git a/meilisearch.NET/Extensions/MeilisearchClientExtensions.cs b/meilisearch.NET/Extensions/MeilisearchClientExtensions.cs
index 6eb62a1..cab61ef 100644
--- a/meilisearch.NET/Extensions/MeilisearchClientExtensions.cs
+++ b/meilisearch.NET/Extensions/MeilisearchClientExtensions.cs
@@ -1,6 +1,6 @@
using Meilisearch;
-using meilisearch.NET;
-using meilisearch.NET.Models;
+
+namespace meilisearch.NET.Extensions;
public static class MeilisearchClientExtensions
{
diff --git a/meilisearch.NET/Extensions/ServiceCollectionExtension.cs b/meilisearch.NET/Extensions/ServiceCollectionExtension.cs
index 656e1ee..d2f138e 100644
--- a/meilisearch.NET/Extensions/ServiceCollectionExtension.cs
+++ b/meilisearch.NET/Extensions/ServiceCollectionExtension.cs
@@ -1,11 +1,12 @@
using Meilisearch;
-using meilisearch.NET;
using meilisearch.NET.Configurations;
using meilisearch.NET.Services.DocumentManagement;
using meilisearch.NET.Services.IndexManagement;
using meilisearch.NET.Services.ProcessManagement;
using Microsoft.Extensions.DependencyInjection;
+namespace meilisearch.NET.Extensions;
+
public static class ServiceCollectionExtension
{
public static IServiceCollection AddMeiliSearchService(this IServiceCollection services)
@@ -22,4 +23,4 @@ public static class ServiceCollectionExtension
services.AddSingleton();
return services;
}
-}
+}
\ No newline at end of file
diff --git a/meilisearch.NET/Services/DocumentManagement/DocumentManager.cs b/meilisearch.NET/Services/DocumentManagement/DocumentManager.cs
index e849ca5..b4475d7 100644
--- a/meilisearch.NET/Services/DocumentManagement/DocumentManager.cs
+++ b/meilisearch.NET/Services/DocumentManagement/DocumentManager.cs
@@ -29,7 +29,7 @@ public class DocumentManager:IDocumentManager
_logger.LogInformation($"Document {document.Id} added to collection.");
if (autoCommit)
{
- SyncDocumentsToServer();
+ await SyncDocumentsToServerAsync();
}
}
public void AddDocument(string repositoryId, IDocument document, bool autoCommit = false)