github.com/sharovik/devbot@v1.0.1-0.20240308094637-4a0387c40516/scripts/update/migrations/3-remove-unique-index-question.go (about)

     1  package migrations
     2  
     3  import (
     4  	"github.com/sharovik/devbot/internal/container"
     5  	"github.com/sharovik/devbot/internal/dto/databasedto"
     6  	"github.com/sharovik/orm/clients"
     7  	"github.com/sharovik/orm/dto"
     8  )
     9  
    10  type RemoveUniqueIndexMigration struct {
    11  	Client clients.BaseClientInterface
    12  }
    13  
    14  func (m RemoveUniqueIndexMigration) SetClient(client clients.BaseClientInterface) {
    15  	m.Client = client
    16  }
    17  
    18  func (m RemoveUniqueIndexMigration) GetName() string {
    19  	return "remove-unique-index-question"
    20  }
    21  
    22  func (m RemoveUniqueIndexMigration) Execute() error {
    23  	client := container.C.Dictionary.GetDBClient()
    24  
    25  	q := new(clients.Query).
    26  		Alter(databasedto.QuestionsModel).
    27  		DropIndex(dto.Index{
    28  			Name: "questions_question_uindex",
    29  		})
    30  	_, err := client.Execute(q)
    31  	if err != nil {
    32  		return err
    33  	}
    34  
    35  	q = new(clients.Query).
    36  		Alter(databasedto.QuestionsModel).AddIndex(dto.Index{
    37  		Name:   "questions_question_uindex",
    38  		Target: databasedto.QuestionsModel.GetTableName(),
    39  		Key:    "question",
    40  		Unique: false,
    41  	})
    42  	_, err = client.Execute(q)
    43  	if err != nil {
    44  		return err
    45  	}
    46  
    47  	return nil
    48  }