45 lines
1.3 KiB
JavaScript
45 lines
1.3 KiB
JavaScript
/**
|
|
* Migration 026: Fuzzy search with trigram similarity (pg_trgm).
|
|
*
|
|
* This is an ordered node-pg-migrate migration. It must not open its own
|
|
* connection or execute work while the migration module is being loaded.
|
|
*/
|
|
|
|
/** @param {import('node-pg-migrate').MigrationBuilder} pgm */
|
|
exports.up = (pgm) => {
|
|
pgm.sql('CREATE EXTENSION IF NOT EXISTS pg_trgm');
|
|
|
|
pgm.sql(`
|
|
CREATE INDEX IF NOT EXISTS catalog_products_name_trgm_idx
|
|
ON catalog_products
|
|
USING GIN (name gin_trgm_ops)
|
|
`);
|
|
|
|
pgm.sql(`
|
|
CREATE INDEX IF NOT EXISTS catalog_products_description_trgm_idx
|
|
ON catalog_products
|
|
USING GIN (description gin_trgm_ops)
|
|
`);
|
|
|
|
pgm.sql(`
|
|
CREATE INDEX IF NOT EXISTS brands_brands_name_trgm_idx
|
|
ON brands_brands
|
|
USING GIN (name gin_trgm_ops)
|
|
`);
|
|
|
|
pgm.sql(`
|
|
CREATE INDEX IF NOT EXISTS categories_categories_name_trgm_idx
|
|
ON categories_categories
|
|
USING GIN (name gin_trgm_ops)
|
|
`);
|
|
};
|
|
|
|
/** @param {import('node-pg-migrate').MigrationBuilder} pgm */
|
|
exports.down = (pgm) => {
|
|
pgm.sql('DROP INDEX IF EXISTS categories_categories_name_trgm_idx');
|
|
pgm.sql('DROP INDEX IF EXISTS brands_brands_name_trgm_idx');
|
|
pgm.sql('DROP INDEX IF EXISTS catalog_products_description_trgm_idx');
|
|
pgm.sql('DROP INDEX IF EXISTS catalog_products_name_trgm_idx');
|
|
pgm.sql('DROP EXTENSION IF EXISTS pg_trgm');
|
|
};
|