Skip to content

Commit

Permalink
Merge pull request #6 from Kentico/feat/turn-off-aplication-without-r…
Browse files Browse the repository at this point in the history
…emoving-nugget

feat(AzureAISearch): application can be turned off by not including i…
  • Loading branch information
fialafilip authored Mar 18, 2024
2 parents b2badae + 99a5e97 commit 4fcc117
Show file tree
Hide file tree
Showing 6 changed files with 46 additions and 6 deletions.
2 changes: 1 addition & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<Authors>$(Company)</Authors>
<Copyright>Copyright © $(Company) $([System.DateTime]::Now.Year)</Copyright>
<Trademark>$(Company)™</Trademark>
<VersionPrefix>1.0.0</VersionPrefix>
<VersionPrefix>1.0.1</VersionPrefix>
<VersionSuffix></VersionSuffix>
<PackageLicenseExpression>MIT</PackageLicenseExpression>

Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ This integration enables you to create [AzureSearch](https://azure.microsoft.com

### Dependencies

- [ASP.NET Core 6.0](https://dotnet.microsoft.com/en-us/download)
- [ASP.NET Core 8.0](https://dotnet.microsoft.com/en-us/download)
- [Xperience by Kentico](https://docs.xperience.io/xp/changelog)
- [Azure AI Search](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Search.Documents_11.6.0-beta.2/sdk/search/Azure.Search.Documents)

Expand Down Expand Up @@ -53,9 +53,9 @@ dotnet add package Kentico.Xperience.AzureSearch

4. Create an index in Xperience's Administration within the Search application added by this library.
![Administration search edit form](/images/xperience-administration-search-index-edit-form.jpg)
1. Rebuild the index in Xperience's Administration within the Search application added by this library.
5. Rebuild the index in Xperience's Administration within the Search application added by this library.
![Administration search edit form](/images/xperience-administration-search-index-list.jpg)
1. Display the results on your site with a Razor View 👍.
6. Display the results on your site with a Razor View 👍.

## Use DancingGoat sample

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
using Kentico.Xperience.AzureSearch.Aliasing;
using Kentico.Xperience.AzureSearch.Indexing;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;

[assembly: RegisterModule(typeof(AzureSearchAdminModule))]

Expand All @@ -25,6 +26,13 @@ protected override void OnInit(ModuleInitParameters parameters)
{
base.OnInit(parameters);

var options = Service.Resolve<IOptions<AzureSearchOptions>>();

if (!options.Value.IsConfigured)
{
return;
}

RegisterClientModule("kentico", "xperience-integrations-azuresearch");

var services = parameters.Services;
Expand Down
8 changes: 8 additions & 0 deletions src/Kentico.Xperience.AzureSearch/AzureSearchSearchModule.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
using Kentico.Xperience.AzureSearch;
using Kentico.Xperience.AzureSearch.Indexing;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;

[assembly: RegisterModule(typeof(AzureSearchSearchModule))]

Expand Down Expand Up @@ -47,6 +48,13 @@ protected override void OnInit(ModuleInitParameters parameters)
base.OnInit(parameters);

var services = parameters.Services;
var options = services.GetRequiredService<IOptions<AzureSearchOptions>>();

if (!options.Value.IsConfigured)
{
return;
}


azureSearchTaskLogger = services.GetRequiredService<IAzureSearchTaskLogger>();
appSettingsService = services.GetRequiredService<IAppSettingsService>();
Expand Down
19 changes: 17 additions & 2 deletions src/Kentico.Xperience.AzureSearch/AzureSearchStartupExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,23 @@ public static IServiceCollection AddKenticoAzureSearch(this IServiceCollection s
return serviceCollection;
}

private static IServiceCollection AddAzureSearchServicesInternal(this IServiceCollection services, IConfiguration configuration) =>
services
private static IServiceCollection AddAzureSearchServicesInternal(this IServiceCollection services, IConfiguration configuration)
{
var azureSection = configuration.GetSection(AzureSearchOptions.CMS_AZURE_SEARCH_SECTION_NAME);
var azureOptions = azureSection.GetChildren();

bool isConfigured = false;

if (azureOptions.Single(x => x.Key == nameof(AzureSearchOptions.SearchServiceEndPoint)).Value != ""
&& azureOptions.Single(x => x.Key == nameof(AzureSearchOptions.SearchServiceQueryApiKey)).Value != ""
&& azureOptions.Single(x => x.Key == nameof(AzureSearchOptions.SearchServiceAdminApiKey)).Value != "")
{
isConfigured = true;
}

return services
.Configure<AzureSearchOptions>(configuration.GetSection(AzureSearchOptions.CMS_AZURE_SEARCH_SECTION_NAME))
.PostConfigure<AzureSearchOptions>(options => options.IsConfigured = isConfigured)
.AddSingleton<AzureSearchModuleInstaller>()
.AddSingleton(x =>
{
Expand All @@ -70,6 +84,7 @@ private static IServiceCollection AddAzureSearchServicesInternal(this IServiceCo
.AddSingleton<IAzureSearchConfigurationStorageService, DefaultAzureSearchConfigurationStorageService>()
.AddSingleton<IAzureSearchIndexClientService, AzureSearchIndexClientService>()
.AddSingleton<IAzureSearchIndexAliasService, AzureSearchIndexAliasService>();
}
}

public interface IAzureSearchBuilder
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,15 @@ public sealed class AzureSearchOptions
/// </summary>
public const string CMS_AZURE_SEARCH_SECTION_NAME = "CMSAzureSearch";

/// <summary>
/// /// Turn off functionality if application is not configured in the appsettings
/// </summary>
public bool IsConfigured
{
get;
set;
} = false;

/// <summary>
/// Url of azure search provider see <see href="https://learn.microsoft.com/en-us/azure/search/search-manage"/> for more information.
/// </summary>
Expand Down

0 comments on commit 4fcc117

Please sign in to comment.