github.com/litesolutions/justifay-api@v1.0.0-2.0.20220707114139-46f28a909481/migrations/22052021010102_create_indexes.go (about) 1 package migrations 2 3 import ( 4 "github.com/go-pg/migrations" 5 ) 6 7 func init() { 8 migrations.MustRegisterTx(func(db migrations.DB) error { 9 if _, err := db.Exec(` 10 CREATE FUNCTION f_arr2str(uuid[]) 11 RETURNS text LANGUAGE sql IMMUTABLE AS $$SELECT array_to_string($1, ',')$$ 12 `); err != nil { 13 return err 14 } 15 if _, err := db.Exec(` 16 CREATE INDEX user_groups_gin_idx ON user_groups 17 USING GIN (to_tsvector('english', coalesce(display_name, '') || ' ' || COALESCE(f_arr2str(tags), ''))) 18 `); err != nil { 19 return err 20 } 21 22 if _, err := db.Exec(` 23 CREATE INDEX tags_gin_idx ON tags USING GIN (to_tsvector('english', coalesce(name, ''))) 24 `); err != nil { 25 return err 26 } 27 28 // if _, err := db.Exec(` 29 // CREATE INDEX github.com/resonatecoop/s_gin_idx ON github.com/resonatecoop/s 30 // USING GIN (to_tsvector('english', COALESCE(title, '') || ' ' || COALESCE(f_arr2str(tags), ''))) 31 // `); err != nil { 32 // return err 33 // } 34 35 // if _, err := db.Exec(` 36 // CREATE INDEX github.com/resonatecoop/_groups_gin_idx ON github.com/resonatecoop/_groups 37 // USING GIN (to_tsvector('english', COALESCE(title, '') || ' ' || COALESCE(f_arr2str(tags), ''))) 38 // `); err != nil { 39 // return err 40 // } 41 42 return nil 43 }, func(db migrations.DB) error { 44 if _, err := db.Exec(`DROP INDEX IF EXISTS user_groups_gin_idx CASCADE`); err != nil { 45 return err 46 } 47 if _, err := db.Exec(`DROP INDEX IF EXISTS tags_gin_idx CASCADE`); err != nil { 48 return err 49 } 50 // if _, err := db.Exec(`DROP INDEX IF EXISTS github.com/resonatecoop/s_gin_idx CASCADE`); err != nil { 51 // return err 52 // } 53 if _, err := db.Exec(`DROP INDEX IF EXISTS github.com/resonatecoop/_groups_gin_idx CASCADE`); err != nil { 54 return err 55 } 56 57 if _, err := db.Exec(`DROP FUNCTION IF EXISTS f_arr2str`); err != nil { 58 return err 59 } 60 61 return nil 62 }) 63 }