48 lines
1.6 KiB
JavaScript
48 lines
1.6 KiB
JavaScript
/**
|
|
* PostgreSQL full-text search support for catalog products.
|
|
*/
|
|
|
|
/** @param {import('node-pg-migrate').MigrationBuilder} pgm */
|
|
export const up = (pgm) => {
|
|
pgm.sql(`
|
|
CREATE INDEX catalog_products_fts_idx
|
|
ON catalog_products USING gin (
|
|
(
|
|
setweight(to_tsvector('spanish', COALESCE(name, '')), 'A') ||
|
|
setweight(to_tsvector('spanish', COALESCE(description, '')), 'B') ||
|
|
setweight(to_tsvector('spanish', COALESCE(seo_title, '')), 'B') ||
|
|
setweight(to_tsvector('spanish', COALESCE(seo_description, '')), 'C')
|
|
)
|
|
)
|
|
`);
|
|
pgm.sql(`
|
|
CREATE INDEX brands_brands_fts_idx
|
|
ON brands_brands USING gin (
|
|
(
|
|
setweight(to_tsvector('spanish', COALESCE(name, '')), 'A') ||
|
|
setweight(to_tsvector('spanish', COALESCE(slug, '')), 'B') ||
|
|
setweight(to_tsvector('spanish', COALESCE(seo_title, '')), 'B') ||
|
|
setweight(to_tsvector('spanish', COALESCE(seo_description, '')), 'C')
|
|
)
|
|
)
|
|
`);
|
|
pgm.sql(`
|
|
CREATE INDEX categories_categories_fts_idx
|
|
ON categories_categories USING gin (
|
|
(
|
|
setweight(to_tsvector('spanish', COALESCE(name, '')), 'A') ||
|
|
setweight(to_tsvector('spanish', COALESCE(slug, '')), 'B') ||
|
|
setweight(to_tsvector('spanish', COALESCE(seo_title, '')), 'B') ||
|
|
setweight(to_tsvector('spanish', COALESCE(seo_description, '')), 'C')
|
|
)
|
|
)
|
|
`);
|
|
};
|
|
|
|
/** @param {import('node-pg-migrate').MigrationBuilder} pgm */
|
|
export const down = (pgm) => {
|
|
pgm.sql('DROP INDEX IF EXISTS categories_categories_fts_idx');
|
|
pgm.sql('DROP INDEX IF EXISTS brands_brands_fts_idx');
|
|
pgm.sql('DROP INDEX IF EXISTS catalog_products_fts_idx');
|
|
};
|