1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- // Copyright 2023 The Gitea Authors. All rights reserved.
- // SPDX-License-Identifier: MIT
-
- package v1_20 //nolint
-
- import (
- "code.gitea.io/gitea/modules/log"
-
- "xorm.io/xorm"
- )
-
- // FixIncorrectProjectType: set individual project's type from 3(TypeOrganization) to 1(TypeIndividual)
- func FixIncorrectProjectType(x *xorm.Engine) error {
- type User struct {
- ID int64 `xorm:"pk autoincr"`
- Type int
- }
-
- const (
- UserTypeIndividual int = 0
-
- TypeIndividual uint8 = 1
- TypeOrganization uint8 = 3
- )
-
- type Project struct {
- OwnerID int64 `xorm:"INDEX"`
- Type uint8
- Owner *User `xorm:"extends"`
- }
-
- sess := x.NewSession()
- defer sess.Close()
-
- if err := sess.Begin(); err != nil {
- return err
- }
-
- count, err := sess.Table("project").
- Where("type = ? AND owner_id IN (SELECT id FROM `user` WHERE type = ?)", TypeOrganization, UserTypeIndividual).
- Update(&Project{
- Type: TypeIndividual,
- })
- if err != nil {
- return err
- }
- log.Debug("Updated %d projects to belong to a user instead of an organization", count)
-
- return sess.Commit()
- }
|