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  }