45 lines
1.4 KiB
JavaScript
45 lines
1.4 KiB
JavaScript
module.exports = {
|
|
up: function(queryInterface, Sequelize) {
|
|
const searchDocument = `
|
|
ALTER TABLE documents ADD COLUMN "searchVector" tsvector;
|
|
CREATE INDEX documents_tsv_idx ON documents USING gin("searchVector");
|
|
|
|
CREATE FUNCTION documents_search_trigger() RETURNS trigger AS $$
|
|
begin
|
|
new."searchVector" :=
|
|
setweight(to_tsvector('english', coalesce(new.title, '')),'A') ||
|
|
setweight(to_tsvector('english', coalesce(new.text, '')), 'C');
|
|
return new;
|
|
end
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
CREATE TRIGGER documents_tsvectorupdate BEFORE INSERT OR UPDATE
|
|
ON documents FOR EACH ROW EXECUTE PROCEDURE documents_search_trigger();
|
|
`;
|
|
|
|
const searchCollection = `
|
|
ALTER TABLE atlases ADD COLUMN "searchVector" tsvector;
|
|
CREATE INDEX atlases_tsv_idx ON atlases USING gin("searchVector");
|
|
|
|
CREATE FUNCTION atlases_search_trigger() RETURNS trigger AS $$
|
|
begin
|
|
new."searchVector" :=
|
|
setweight(to_tsvector('english', coalesce(new.name, '')),'A') ||
|
|
setweight(to_tsvector('english', coalesce(new.description, '')), 'C');
|
|
return new;
|
|
end
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
CREATE TRIGGER atlases_tsvectorupdate BEFORE INSERT OR UPDATE
|
|
ON atlases FOR EACH ROW EXECUTE PROCEDURE atlases_search_trigger();
|
|
`;
|
|
|
|
queryInterface.sequelize.query(searchDocument);
|
|
queryInterface.sequelize.query(searchCollection);
|
|
},
|
|
|
|
down: function(queryInterface, Sequelize) {
|
|
// TODO?
|
|
},
|
|
};
|