From 845d0a332b4632f3742aa35456b61c2c15e4c1c6 Mon Sep 17 00:00:00 2001 From: Damien Date: Sat, 1 Mar 2025 13:21:25 -0500 Subject: [PATCH] fix: bugs with split up classes --- meilisearch.NET.example/Program.cs | 2 - .../Extensions/MeilisearchClientExtensions.cs | 49 +++++++++++++++++++ .../Extensions/ServiceCollectionExtension.cs | 1 + meilisearch.NET/MeiliSearchService.cs | 49 ++++++++++--------- 4 files changed, 77 insertions(+), 24 deletions(-) create mode 100644 meilisearch.NET/Extensions/MeilisearchClientExtensions.cs diff --git a/meilisearch.NET.example/Program.cs b/meilisearch.NET.example/Program.cs index c52e212..86d3aa5 100644 --- a/meilisearch.NET.example/Program.cs +++ b/meilisearch.NET.example/Program.cs @@ -71,8 +71,6 @@ public class test service.CreateIndex("test"); - - service.AddDocument("test", new document() { Id = Guid.NewGuid(), diff --git a/meilisearch.NET/Extensions/MeilisearchClientExtensions.cs b/meilisearch.NET/Extensions/MeilisearchClientExtensions.cs new file mode 100644 index 0000000..6eb62a1 --- /dev/null +++ b/meilisearch.NET/Extensions/MeilisearchClientExtensions.cs @@ -0,0 +1,49 @@ +using Meilisearch; +using meilisearch.NET; +using meilisearch.NET.Models; + +public static class MeilisearchClientExtensions +{ + public static async Task SDK(this MeiliSearchService service, string indexName, Func> action) + { + var client = service.Client; + var indexManager = service.IndexManager; + + if (client == null) + throw new InvalidOperationException("MeilisearchClient is not initialized"); + + if (!string.IsNullOrEmpty(indexName)) + { + var index = await client.GetIndexAsync("index_bindings"); + var doc = await index.GetDocumentAsync(indexName); + if (doc.IsCompressed) + { + await indexManager.SetIndexEnabledAsync(indexName, true); + } + } + + var result = await action(client); + return result; + } + + public static async Task SDK(this MeiliSearchService service, string indexName, Func action) + { + var client = service.Client; + var indexManager = service.IndexManager; + + if (client == null) + throw new InvalidOperationException("MeilisearchClient is not initialized"); + + if (!string.IsNullOrEmpty(indexName)) + { + var index = await client.GetIndexAsync("index_bindings"); + var doc = await index.GetDocumentAsync(indexName); + if (doc.IsCompressed) + { + await indexManager.SetIndexEnabledAsync(indexName, true); + } + } + + await action(client); + } +} \ No newline at end of file diff --git a/meilisearch.NET/Extensions/ServiceCollectionExtension.cs b/meilisearch.NET/Extensions/ServiceCollectionExtension.cs index 2735a48..656e1ee 100644 --- a/meilisearch.NET/Extensions/ServiceCollectionExtension.cs +++ b/meilisearch.NET/Extensions/ServiceCollectionExtension.cs @@ -1,4 +1,5 @@ using Meilisearch; +using meilisearch.NET; using meilisearch.NET.Configurations; using meilisearch.NET.Services.DocumentManagement; using meilisearch.NET.Services.IndexManagement; diff --git a/meilisearch.NET/MeiliSearchService.cs b/meilisearch.NET/MeiliSearchService.cs index 94b6894..c1b82e1 100644 --- a/meilisearch.NET/MeiliSearchService.cs +++ b/meilisearch.NET/MeiliSearchService.cs @@ -1,52 +1,57 @@ +using Meilisearch; using meilisearch.NET.Interfaces; using meilisearch.NET.Services.DocumentManagement; using meilisearch.NET.Services.IndexManagement; using meilisearch.NET.Services.ProcessManagement; +namespace meilisearch.NET; + public class MeiliSearchService : IDisposable { - private readonly MeiliSearchProcessManager _processManager; - private readonly IIndexManager _indexManager; - private readonly IDocumentManager _documentManager; + internal readonly MeiliSearchProcessManager ProcessManager; + internal readonly IIndexManager IndexManager; + internal readonly IDocumentManager DocumentManager; + internal readonly MeilisearchClient Client; public MeiliSearchService( MeiliSearchProcessManager processManager, IIndexManager indexManager, - IDocumentManager documentManager) + IDocumentManager documentManager, + MeilisearchClient client) { - _processManager = processManager; - _indexManager = indexManager; - _documentManager = documentManager; - _processManager.StartProcess(); + Client = client; + ProcessManager = processManager; + IndexManager = indexManager; + DocumentManager = documentManager; + ProcessManager.StartProcess().Wait(); } - public async Task Start() => await _processManager.StartProcess(); + public async Task Start() => await ProcessManager.StartProcess(); public long GetTotalStorageUsage(bool useCompressedSize = true) - => _indexManager.GetTotalStorageUsage(useCompressedSize); + => IndexManager.GetTotalStorageUsage(useCompressedSize); public long GetIndexStorageUsage(string indexName, bool useCompressedSize = true) - => _indexManager.GetIndexStorageUsage(indexName, useCompressedSize); - public void Stop() => _processManager.StopProcess(); + => IndexManager.GetIndexStorageUsage(indexName, useCompressedSize); + public void Stop() => ProcessManager.StopProcess(); - public bool IsRunning() => _processManager.IsProcessRunning(); + public bool IsRunning() => ProcessManager.IsProcessRunning(); public Task SetIndexEnabled(string indexName, bool enabled) - => _indexManager.SetIndexEnabledAsync(indexName, enabled); + => IndexManager.SetIndexEnabledAsync(indexName, enabled); - public ProcessResourceStats GetResourceUsage() => _processManager.GetResourceUsage(); + public ProcessResourceStats GetResourceUsage() => ProcessManager.GetResourceUsage(); - public Task> GetAllIndexes() => _indexManager.GetAllIndexes(); + public Task> GetAllIndexes() => IndexManager.GetAllIndexes(); public Task CreateIndex(string indexName) where T : IDocument - => _indexManager.CreateIndexAsync(indexName); + => IndexManager.CreateIndexAsync(indexName); - public Task DeleteIndex(string indexName) => _indexManager.DeleteIndexAsync(indexName); + public Task DeleteIndex(string indexName) => IndexManager.DeleteIndexAsync(indexName); public void AddDocument(string repositoryId, IDocument document, bool autoCommit = false) - => _documentManager.AddDocument(repositoryId, document, autoCommit); + => DocumentManager.AddDocument(repositoryId, document, autoCommit); public void Dispose() { - _processManager.Dispose(); + ProcessManager.Dispose(); } -} - +} \ No newline at end of file