GAE JS SEARCH

SearchService implementation that uses the GAE Search API via the https://github.com/mondo-mob/gae-search-service GAE Search Service proxy.

This allows you to create data repositories that automatically index the data on mutation and then search against your stored entities.

Installation

npm install @mondomob/gae-js-search

Components

GaeSearchService

Step 1: Initialise and set GaeSearchService as the search provider

// Add module config schema to your app config schema
const configSchema = t.intersection([
  gaeJsCoreConfigurationSchema,
  gaeJsGaeSearchConfigurationSchema,
  // Other module schemas
]);

// Add endpoint to your config file
{
  "searchServiceEndpoint": "https://my-search-service.appspot.com"
}

// Set search provider on app startup
searchProvider.set(new GaeSearchService());

Step 2. Define your repository by extending SearchableRepository and providing your index configuration

class MyUserRepository extends SearchableRepository<User> {
  constructor() {
    super(new FirestoreRepository<User>("my-users"), {
      indexName: "users",
      indexConfig: {
        // Use true to index the property as-is from the object
        firstName: true,
        // Or pass a function to run custom logic first on the data first
        fullName: (value) => `${value.firstName} ${value.lastName}`,
      },
    });
  }
}

Step 3. Use the repository

const userRepository = new MyUserRepository();

await userRepsitory.save({id: "123", firstName: "App", lastName: "Engine"});

const results = await userRepository.search({ firstName: "App"});