Skip to content

Commit 80b678a

Browse files
authored
feat: Search integration with Algolia (#25)
feat: Search integration with Algolia
1 parent 6d0ff0e commit 80b678a

File tree

66 files changed

+3486
-235
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+3486
-235
lines changed

.changeset/lucky-walls-warn.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
'@o2s/integrations.strapi-cms': minor
3+
'@o2s/integrations.algolia': minor
4+
'@o2s/integrations.mocked': minor
5+
'@o2s/api-harmonization': minor
6+
'@o2s/framework': minor
7+
---
8+
9+
Added search integration with Algolia

apps/api-harmonization/.env.local

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,6 @@ CACHE_REDIS_HOST=localhost
2626
CACHE_REDIS_PORT=6379
2727
# redis-cli -> config set requirepass {REDIS_PASS}
2828
CACHE_REDIS_PASS={REDIS_PASS}
29+
30+
ALGOLIA_APP_ID=
31+
ALGOLIA_API_KEY=

apps/api-harmonization/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
"@o2s/integrations.mocked": "*",
2525
"@o2s/integrations.redis": "*",
2626
"@o2s/integrations.strapi-cms": "*",
27+
"@o2s/integrations.algolia": "*",
2728
"@o2s/utils.logger": "*",
2829
"@nestjs/axios": "^3.1.2",
2930
"@nestjs/common": "^10.0.0",

apps/api-harmonization/src/app.config.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import { InvoicesIntegrationConfig } from '@o2s/api-harmonization/models/invoice
88
import { NotificationsIntegrationConfig } from '@o2s/api-harmonization/models/notifications';
99
import { OrganizationsIntegrationConfig } from '@o2s/api-harmonization/models/organizations';
1010
import { ResourcesIntegrationConfig } from '@o2s/api-harmonization/models/resources';
11+
import { SearchIntegrationConfig } from '@o2s/api-harmonization/models/search';
1112
import { TicketsIntegrationConfig } from '@o2s/api-harmonization/models/tickets';
1213
import { UsersIntegrationConfig } from '@o2s/api-harmonization/models/users';
1314

@@ -23,5 +24,6 @@ export const AppConfig: ApiConfig = {
2324
cms: CmsIntegrationConfig,
2425
cache: CacheIntegrationConfig,
2526
billingAccounts: BillingAccountsIntegrationConfig,
27+
search: SearchIntegrationConfig,
2628
},
2729
};

apps/api-harmonization/src/app.module.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
Notifications,
1515
Organizations,
1616
Resources,
17+
Search,
1718
Tickets,
1819
Users,
1920
} from '@o2s/framework/modules';
@@ -52,13 +53,18 @@ import { RoutesModule } from './modules/routes/routes.module';
5253
ignoreEnvFile: process.env.NODE_ENV !== 'development',
5354
envFilePath: `.env.local`,
5455
}),
56+
5557
CMS.Module.register(AppConfig),
5658
Tickets.Module.register(AppConfig),
5759
Notifications.Module.register(AppConfig),
5860
Users.Module.register(AppConfig),
5961
Organizations.Module.register(AppConfig),
6062
Cache.Module.register(AppConfig),
6163
BillingAccounts.Module.register(AppConfig),
64+
Resources.Module.register(AppConfig),
65+
Invoices.Module.register(AppConfig),
66+
Articles.Module.register(AppConfig),
67+
Search.Module.register(AppConfig),
6268

6369
PageModule.register(AppConfig),
6470
RoutesModule.register(AppConfig),
@@ -70,11 +76,8 @@ import { RoutesModule } from './modules/routes/routes.module';
7076
NotificationListComponentModule.register(AppConfig),
7177
NotificationDetailsComponentModule.register(AppConfig),
7278
FaqComponentModule.register(AppConfig),
73-
Articles.Module.register(AppConfig),
7479
ArticleDetailsComponentModule.register(AppConfig),
7580
ArticleListComponentModule.register(AppConfig),
76-
Resources.Module.register(AppConfig),
77-
Invoices.Module.register(AppConfig),
7881
InvoiceListComponentModule.register(AppConfig),
7982
PaymentsSummaryComponentModule.register(AppConfig),
8083
PaymentsHistoryComponentModule.register(AppConfig),

apps/api-harmonization/src/components/article-details/article-details.module.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { DynamicModule, Module } from '@nestjs/common';
22
import { Type } from '@nestjs/common/interfaces/type.interface';
33

4-
import { ApiConfig, Articles, CMS } from '@o2s/framework/modules';
4+
import { ApiConfig, Articles, CMS, Search } from '@o2s/framework/modules';
55

66
import { ArticleDetailsController } from './article-details.controller';
77
import { ArticleDetailsService } from './article-details.service';
@@ -11,6 +11,7 @@ export class ArticleDetailsComponentModule {
1111
static register(config: ApiConfig): DynamicModule {
1212
const cmsService = config.integrations.cms.service;
1313
const articleService = config.integrations.articles.service;
14+
const searchService = config.integrations.search.service;
1415

1516
return {
1617
module: ArticleDetailsComponentModule,
@@ -24,6 +25,10 @@ export class ArticleDetailsComponentModule {
2425
provide: Articles.Service,
2526
useClass: articleService as Type,
2627
},
28+
{
29+
provide: Search.Service,
30+
useClass: searchService as Type,
31+
},
2732
],
2833
controllers: [ArticleDetailsController],
2934
exports: [ArticleDetailsService],

apps/api-harmonization/src/components/article-details/article-details.request.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ export class GetArticleDetailsComponentQuery implements Omit<CMS.Request.GetCmsE
44
id!: string;
55
}
66

7-
export class GetArticleDetailsComponentParams implements Articles.Request.GetArticleParams {
7+
export class GetArticleDetailsComponentParams implements Omit<Articles.Request.GetArticleParams, 'locale'> {
88
id!: string;
99
}

apps/api-harmonization/src/components/article-details/article-details.service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ export class ArticleDetailsService {
2222
headers: AppHeaders,
2323
): Observable<ArticleDetailsComponent> {
2424
const cms = this.cmsService.getArticleDetailsComponent({ ...query, locale: headers['x-locale'] });
25-
const article = this.articleService.getArticle(params);
25+
const article = this.articleService.getArticle({ ...params, locale: headers['x-locale'] });
2626

2727
return forkJoin([article, cms]).pipe(
2828
map(([article, cms]) => {
Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import { Controller, Get, Headers, Query, UseInterceptors } from '@nestjs/common';
1+
import { Body, Controller, Get, Headers, Query, UseInterceptors } from '@nestjs/common';
22
import { LoggerService } from '@o2s/utils.logger';
33

44
import { AppHeaders } from '@o2s/api-harmonization/utils/headers';
55

66
import { URL } from './';
7-
import { GetArticleListComponentQuery } from './article-list.request';
7+
import { GetArticleListComponentBody, GetArticleListComponentQuery } from './article-list.request';
88
import { ArticleListService } from './article-list.service';
99

1010
@Controller(URL)
@@ -13,7 +13,11 @@ export class ArticleListController {
1313
constructor(protected readonly service: ArticleListService) {}
1414

1515
@Get()
16-
getArticleListComponent(@Headers() headers: AppHeaders, @Query() query: GetArticleListComponentQuery) {
17-
return this.service.getArticleListComponent(query, headers);
16+
getArticleListComponent(
17+
@Headers() headers: AppHeaders,
18+
@Query() query: GetArticleListComponentQuery,
19+
@Body() body: GetArticleListComponentBody,
20+
) {
21+
return this.service.getArticleListComponent(query, headers, body);
1822
}
1923
}

apps/api-harmonization/src/components/article-list/article-list.mapper.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,9 @@ const mapArticle = (
3535
title: article.title,
3636
createdAt: formatDateRelative(article.createdAt, locale, cms.labels.today, cms.labels.yesterday),
3737
updatedAt: formatDateRelative(article.updatedAt, locale, cms.labels.today, cms.labels.yesterday),
38+
category: {
39+
label: cms.fieldMapping.category?.[article.category] || article.category,
40+
value: article.category,
41+
},
3842
};
3943
};

0 commit comments

Comments
 (0)