code.gitea.io/gitea@v1.22.3/models/migrations/v1_22/v287.go (about)

     1  // Copyright 2023 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package v1_22 //nolint
     5  
     6  import (
     7  	"xorm.io/xorm"
     8  )
     9  
    10  type BadgeUnique struct {
    11  	ID   int64  `xorm:"pk autoincr"`
    12  	Slug string `xorm:"UNIQUE"`
    13  }
    14  
    15  func (BadgeUnique) TableName() string {
    16  	return "badge"
    17  }
    18  
    19  func UseSlugInsteadOfIDForBadges(x *xorm.Engine) error {
    20  	type Badge struct {
    21  		Slug string
    22  	}
    23  
    24  	err := x.Sync(new(Badge))
    25  	if err != nil {
    26  		return err
    27  	}
    28  
    29  	sess := x.NewSession()
    30  	defer sess.Close()
    31  	if err := sess.Begin(); err != nil {
    32  		return err
    33  	}
    34  
    35  	_, err = sess.Exec("UPDATE `badge` SET `slug` = `id` Where `slug` IS NULL")
    36  	if err != nil {
    37  		return err
    38  	}
    39  
    40  	err = sess.Sync(new(BadgeUnique))
    41  	if err != nil {
    42  		return err
    43  	}
    44  
    45  	return sess.Commit()
    46  }