Strip junk from Pixiv URLs before indexing, #726

This commit is contained in:
Coconut
2013-03-29 10:27:55 -04:00
parent 7e3324b5f0
commit 844a077599
2 changed files with 30 additions and 3 deletions

View File

@@ -0,0 +1,24 @@
class ChangeSourcePatternIndexOnPosts < ActiveRecord::Migration
def up
execute "set statement_timeout = 0"
execute "DROP INDEX index_posts_on_pixiv_suffix;"
execute "DROP INDEX index_posts_on_source_pattern;"
execute "CREATE FUNCTION SourcePattern(src text) RETURNS text AS $$
BEGIN
RETURN regexp_replace(src, '^[^/]*(//)?[^/]*\.pixiv\.net/img.*(/[^/]*/[^/]*)$', 'pixiv\2');
END;
$$ LANGUAGE plpgsql IMMUTABLE RETURNS NULL ON NULL INPUT;"
execute "CREATE INDEX index_posts_on_source_pattern ON posts USING btree
((SourcePattern(source)) text_pattern_ops);"
end
def down
execute "set statement_timeout = 0"
execute "DROP INDEX index_posts_on_source_pattern;"
execute "DROP FUNCTION SourcePattern(text);"
execute "CREATE INDEX index_posts_on_source_pattern ON posts USING btree
(source text_pattern_ops);"
execute "CREATE INDEX index_posts_on_pixiv_suffix ON posts USING btree
((substring(source, 'pixiv.net/img.*/([^/]*/[^/]*)$')) text_pattern_ops);"
end
end