// Copyright 2025 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT

package v1_24

import (
	"code.gitea.io/gitea/models/migrations/base"

	"xorm.io/xorm"
)

func MovePinOrderToTableIssuePin(x *xorm.Engine) error {
	type IssuePin struct {
		ID       int64 `xorm:"pk autoincr"`
		RepoID   int64 `xorm:"UNIQUE(s) NOT NULL"`
		IssueID  int64 `xorm:"UNIQUE(s) NOT NULL"`
		IsPull   bool  `xorm:"NOT NULL"`
		PinOrder int   `xorm:"DEFAULT 0"`
	}

	if err := x.Sync(new(IssuePin)); err != nil {
		return err
	}

	if _, err := x.Exec("INSERT INTO issue_pin (repo_id, issue_id, is_pull, pin_order) SELECT repo_id, id, is_pull, pin_order FROM issue WHERE pin_order > 0"); err != nil {
		return err
	}
	sess := x.NewSession()
	defer sess.Close()
	return base.DropTableColumns(sess, "issue", "pin_order")
}
