fulltext-search.resolver.ts 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import { Args, Context, Mutation, Query, ResolveProperty, Resolver } from '@nestjs/graphql';
  2. import { Permission, SearchQueryArgs, SearchResponse } from '../../../../shared/generated-types';
  3. import { Omit } from '../../../../shared/omit';
  4. import { RequestContext } from '../../api/common/request-context';
  5. import { Allow } from '../../api/decorators/allow.decorator';
  6. import { Ctx } from '../../api/decorators/request-context.decorator';
  7. import { SearchResolver as BaseSearchResolver } from '../../api/resolvers/search.resolver';
  8. import { Translated } from '../../common/types/locale-types';
  9. import { FacetValue } from '../../entity';
  10. import { DefaultSearceReindexResonse } from './default-search-plugin';
  11. import { FulltextSearchService } from './fulltext-search.service';
  12. @Resolver('SearchResponse')
  13. export class FulltextSearchResolver extends BaseSearchResolver {
  14. constructor(private fulltextSearchService: FulltextSearchService) {
  15. super();
  16. }
  17. @Query()
  18. @Allow(Permission.Public)
  19. async search(
  20. @Ctx() ctx: RequestContext,
  21. @Args() args: SearchQueryArgs,
  22. ): Promise<Omit<SearchResponse, 'facetValues'>> {
  23. return this.fulltextSearchService.search(ctx, args.input);
  24. }
  25. @ResolveProperty()
  26. async facetValues(
  27. @Ctx() ctx: RequestContext,
  28. @Context() context: any,
  29. ): Promise<Array<Translated<FacetValue>>> {
  30. return this.fulltextSearchService.facetValues(ctx, context.req.body.variables.input);
  31. }
  32. @Mutation()
  33. @Allow(Permission.UpdateCatalog)
  34. async reindex(@Ctx() ctx: RequestContext): Promise<DefaultSearceReindexResonse> {
  35. return this.fulltextSearchService.reindex(ctx.languageCode);
  36. }
  37. }