code.gitea.io/gitea@v1.21.7/models/migrations/v1_14/v161.go (about)

     1  // Copyright 2020 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package v1_14 //nolint
     5  
     6  import (
     7  	"context"
     8  
     9  	"code.gitea.io/gitea/models/migrations/base"
    10  
    11  	"xorm.io/xorm"
    12  )
    13  
    14  func ConvertTaskTypeToString(x *xorm.Engine) error {
    15  	const (
    16  		GOGS int = iota + 1
    17  		SLACK
    18  		GITEA
    19  		DISCORD
    20  		DINGTALK
    21  		TELEGRAM
    22  		MSTEAMS
    23  		FEISHU
    24  		MATRIX
    25  		WECHATWORK
    26  	)
    27  
    28  	hookTaskTypes := map[int]string{
    29  		GITEA:      "gitea",
    30  		GOGS:       "gogs",
    31  		SLACK:      "slack",
    32  		DISCORD:    "discord",
    33  		DINGTALK:   "dingtalk",
    34  		TELEGRAM:   "telegram",
    35  		MSTEAMS:    "msteams",
    36  		FEISHU:     "feishu",
    37  		MATRIX:     "matrix",
    38  		WECHATWORK: "wechatwork",
    39  	}
    40  
    41  	type HookTask struct {
    42  		Typ string `xorm:"VARCHAR(16) index"`
    43  	}
    44  	if err := x.Sync(new(HookTask)); err != nil {
    45  		return err
    46  	}
    47  
    48  	// to keep the migration could be rerun
    49  	exist, err := x.Dialect().IsColumnExist(x.DB(), context.Background(), "hook_task", "type")
    50  	if err != nil {
    51  		return err
    52  	}
    53  	if !exist {
    54  		return nil
    55  	}
    56  
    57  	for i, s := range hookTaskTypes {
    58  		if _, err := x.Exec("UPDATE hook_task set typ = ? where `type`=?", s, i); err != nil {
    59  			return err
    60  		}
    61  	}
    62  
    63  	sess := x.NewSession()
    64  	defer sess.Close()
    65  	if err := sess.Begin(); err != nil {
    66  		return err
    67  	}
    68  	if err := base.DropTableColumns(sess, "hook_task", "type"); err != nil {
    69  		return err
    70  	}
    71  
    72  	return sess.Commit()
    73  }