## API Report File for "@backstage/plugin-search-backend-module-pg"

> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).

```ts
import { IndexableDocument } from '@backstage/search-common';
import { Knex } from 'knex';
import { PluginDatabaseManager } from '@backstage/backend-common';
import { SearchEngine } from '@backstage/plugin-search-backend-node';
import { SearchQuery } from '@backstage/search-common';
import { SearchResultSet } from '@backstage/search-common';

// Warning: (ae-missing-release-tag) "ConcretePgSearchQuery" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type ConcretePgSearchQuery = {
  pgQuery: PgSearchQuery;
  pageSize: number;
};

// Warning: (ae-missing-release-tag) "DatabaseDocumentStore" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class DatabaseDocumentStore implements DatabaseStore {
  constructor(db: Knex);
  // (undocumented)
  completeInsert(tx: Knex.Transaction, type: string): Promise<void>;
  // (undocumented)
  static create(knex: Knex): Promise<DatabaseDocumentStore>;
  // (undocumented)
  insertDocuments(
    tx: Knex.Transaction,
    type: string,
    documents: IndexableDocument[],
  ): Promise<void>;
  // (undocumented)
  prepareInsert(tx: Knex.Transaction): Promise<void>;
  // Warning: (ae-forgotten-export) The symbol "DocumentResultRow" needs to be exported by the entry point index.d.ts
  //
  // (undocumented)
  query(
    tx: Knex.Transaction,
    { types, pgTerm, fields, offset, limit }: PgSearchQuery,
  ): Promise<DocumentResultRow[]>;
  // (undocumented)
  static supported(knex: Knex): Promise<boolean>;
  // (undocumented)
  transaction<T>(fn: (tx: Knex.Transaction) => Promise<T>): Promise<T>;
}

// Warning: (ae-missing-release-tag) "DatabaseStore" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface DatabaseStore {
  // (undocumented)
  completeInsert(tx: Knex.Transaction, type: string): Promise<void>;
  // (undocumented)
  insertDocuments(
    tx: Knex.Transaction,
    type: string,
    documents: IndexableDocument[],
  ): Promise<void>;
  // (undocumented)
  prepareInsert(tx: Knex.Transaction): Promise<void>;
  // (undocumented)
  query(
    tx: Knex.Transaction,
    pgQuery: PgSearchQuery,
  ): Promise<DocumentResultRow[]>;
  // (undocumented)
  transaction<T>(fn: (tx: Knex.Transaction) => Promise<T>): Promise<T>;
}

// Warning: (ae-missing-release-tag) "PgSearchEngine" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class PgSearchEngine implements SearchEngine {
  constructor(databaseStore: DatabaseStore);
  // (undocumented)
  static from({
    database,
  }: {
    database: PluginDatabaseManager;
  }): Promise<PgSearchEngine>;
  // (undocumented)
  index(type: string, documents: IndexableDocument[]): Promise<void>;
  // (undocumented)
  query(query: SearchQuery): Promise<SearchResultSet>;
  // (undocumented)
  setTranslator(
    translator: (query: SearchQuery) => ConcretePgSearchQuery,
  ): void;
  // (undocumented)
  static supported(database: PluginDatabaseManager): Promise<boolean>;
  // (undocumented)
  translator(query: SearchQuery): ConcretePgSearchQuery;
}

// Warning: (ae-missing-release-tag) "PgSearchQuery" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface PgSearchQuery {
  // (undocumented)
  fields?: Record<string, string | string[]>;
  // (undocumented)
  limit: number;
  // (undocumented)
  offset: number;
  // (undocumented)
  pgTerm?: string;
  // (undocumented)
  types?: string[];
}

// Warning: (ae-missing-release-tag) "RawDocumentRow" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface RawDocumentRow {
  // (undocumented)
  document: IndexableDocument;
  // (undocumented)
  hash: unknown;
  // (undocumented)
  type: string;
}
```
