pg-smart-search
Guides

Configuration

Complete reference for configuring the TrigramSearchEngine, including adapter setup, table mapping, and cache options.

Configuration

The TrigramSearchEngine constructor accepts a database adapter and a configuration object. This page details all available configuration options.

Basic Setup

import { TrigramSearchEngine, MemoryCacheProvider } from "pg-smart-search";

const engine = new TrigramSearchEngine(adapter, {
  tableName: "products",
  searchColumns: ["name", "description"],
  cacheProvider: new MemoryCacheProvider(),
});

EngineConfig Options

Prop

Type

Database Adapter

pg-smart-search is bring-your-own-adapter: there is no built-in Postgres client. You implement the 3-method DatabaseAdapter interface, wrapping whatever driver you already use (pg, Prisma, Drizzle, Knex, ...).

interface DatabaseAdapter {
  query<T>(sql: string, params?: unknown[], options?: { signal?: AbortSignal }): Promise<T[]>;
  execute(sql: string, params?: unknown[], options?: { signal?: AbortSignal }): Promise<void>;
  transaction<T>(
    callback: (tx: DatabaseAdapter) => Promise<T>,
    options?: { signal?: AbortSignal },
  ): Promise<T>;
}

// Minimal example wrapping `pg`
class PoolAdapter implements DatabaseAdapter {
  constructor(private pool: import("pg").Pool) {}
  async query<T>(sql: string, params: any[] = []) {
    return (await this.pool.query(sql, params)).rows as T[];
  }
  async execute(sql: string, params: any[] = []) {
    await this.pool.query(sql, params);
  }
  async transaction<T>(fn: (tx: DatabaseAdapter) => Promise<T>) {
    return fn(this); // wrap in BEGIN/COMMIT/ROLLBACK for production use
  }
}