Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix migration file names #25735

Closed
wants to merge 3 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
90 changes: 23 additions & 67 deletions models/migrations/v1_10/v100.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,79 +4,35 @@
package v1_10 //nolint

import (
"net/url"
"strings"
"time"
"code.gitea.io/gitea/modules/timeutil"

"xorm.io/xorm"
)

func UpdateMigrationServiceTypes(x *xorm.Engine) error {
type Repository struct {
ID int64
OriginalServiceType int `xorm:"index default(0)"`
OriginalURL string `xorm:"VARCHAR(2048)"`
}

if err := x.Sync2(new(Repository)); err != nil {
return err
}

var last int
const batchSize = 50
for {
results := make([]Repository, 0, batchSize)
err := x.Where("original_url <> '' AND original_url IS NOT NULL").
And("original_service_type = 0 OR original_service_type IS NULL").
OrderBy("id").
Limit(batchSize, last).
Find(&results)
if err != nil {
return err
}
if len(results) == 0 {
break
}
last += len(results)

const PlainGitService = 1 // 1 plain git service
const GithubService = 2 // 2 github.com

for _, res := range results {
u, err := url.Parse(res.OriginalURL)
if err != nil {
return err
}
serviceType := PlainGitService
if strings.EqualFold(u.Host, "github.com") {
serviceType = GithubService
}
_, err = x.Exec("UPDATE repository SET original_service_type = ? WHERE id = ?", serviceType, res.ID)
if err != nil {
return err
}
}
func AddTaskTable(x *xorm.Engine) error {
// TaskType defines task type
type TaskType int

// TaskStatus defines task status
type TaskStatus int

type Task struct {
ID int64
DoerID int64 `xorm:"index"` // operator
OwnerID int64 `xorm:"index"` // repo owner id, when creating, the repoID maybe zero
RepoID int64 `xorm:"index"`
Type TaskType
Status TaskStatus `xorm:"index"`
StartTime timeutil.TimeStamp
EndTime timeutil.TimeStamp
PayloadContent string `xorm:"TEXT"`
Errors string `xorm:"TEXT"` // if task failed, saved the error reason
Created timeutil.TimeStamp `xorm:"created"`
}

type ExternalLoginUser struct {
ExternalID string `xorm:"pk NOT NULL"`
UserID int64 `xorm:"INDEX NOT NULL"`
LoginSourceID int64 `xorm:"pk NOT NULL"`
RawData map[string]any `xorm:"TEXT JSON"`
Provider string `xorm:"index VARCHAR(25)"`
Email string
Name string
FirstName string
LastName string
NickName string
Description string
AvatarURL string
Location string
AccessToken string
AccessTokenSecret string
RefreshToken string
ExpiresAt time.Time
type Repository struct {
Status int `xorm:"NOT NULL DEFAULT 0"`
}

return x.Sync2(new(ExternalLoginUser))
return x.Sync2(new(Task), new(Repository))
}
72 changes: 68 additions & 4 deletions models/migrations/v1_10/v101.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,78 @@
package v1_10 //nolint

import (
"net/url"
"strings"
"time"

"xorm.io/xorm"
)

func ChangeSomeColumnsLengthOfExternalLoginUser(x *xorm.Engine) error {
func UpdateMigrationServiceTypes(x *xorm.Engine) error {
type Repository struct {
ID int64
OriginalServiceType int `xorm:"index default(0)"`
OriginalURL string `xorm:"VARCHAR(2048)"`
}

if err := x.Sync2(new(Repository)); err != nil {
return err
}

var last int
const batchSize = 50
for {
results := make([]Repository, 0, batchSize)
err := x.Where("original_url <> '' AND original_url IS NOT NULL").
And("original_service_type = 0 OR original_service_type IS NULL").
OrderBy("id").
Limit(batchSize, last).
Find(&results)
if err != nil {
return err
}
if len(results) == 0 {
break
}
last += len(results)

const PlainGitService = 1 // 1 plain git service
const GithubService = 2 // 2 github.com

for _, res := range results {
u, err := url.Parse(res.OriginalURL)
if err != nil {
return err
}
serviceType := PlainGitService
if strings.EqualFold(u.Host, "github.com") {
serviceType = GithubService
}
_, err = x.Exec("UPDATE repository SET original_service_type = ? WHERE id = ?", serviceType, res.ID)
if err != nil {
return err
}
}
}

type ExternalLoginUser struct {
AccessToken string `xorm:"TEXT"`
AccessTokenSecret string `xorm:"TEXT"`
RefreshToken string `xorm:"TEXT"`
ExternalID string `xorm:"pk NOT NULL"`
UserID int64 `xorm:"INDEX NOT NULL"`
LoginSourceID int64 `xorm:"pk NOT NULL"`
RawData map[string]any `xorm:"TEXT JSON"`
Provider string `xorm:"index VARCHAR(25)"`
Email string
Name string
FirstName string
LastName string
NickName string
Description string
AvatarURL string
Location string
AccessToken string
AccessTokenSecret string
RefreshToken string
ExpiresAt time.Time
}

return x.Sync2(new(ExternalLoginUser))
Expand Down
18 changes: 18 additions & 0 deletions models/migrations/v1_10/v102.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// Copyright 2019 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT

package v1_10 //nolint

import (
"xorm.io/xorm"
)

func ChangeSomeColumnsLengthOfExternalLoginUser(x *xorm.Engine) error {
type ExternalLoginUser struct {
AccessToken string `xorm:"TEXT"`
AccessTokenSecret string `xorm:"TEXT"`
RefreshToken string `xorm:"TEXT"`
}

return x.Sync2(new(ExternalLoginUser))
}
65 changes: 0 additions & 65 deletions models/migrations/v1_10/v88.go

This file was deleted.

68 changes: 49 additions & 19 deletions models/migrations/v1_10/v89.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,33 +3,63 @@

package v1_10 //nolint

import "xorm.io/xorm"
import (
"crypto/sha1"
"fmt"

func AddOriginalMigrationInfo(x *xorm.Engine) error {
// Issue see models/issue.go
type Issue struct {
OriginalAuthor string
OriginalAuthorID int64
}
"xorm.io/xorm"
)

if err := x.Sync2(new(Issue)); err != nil {
return err
}
func hashContext(context string) string {
return fmt.Sprintf("%x", sha1.Sum([]byte(context)))
}

// Issue see models/issue_comment.go
type Comment struct {
OriginalAuthor string
OriginalAuthorID int64
func AddCommitStatusContext(x *xorm.Engine) error {
type CommitStatus struct {
ID int64 `xorm:"pk autoincr"`
ContextHash string `xorm:"char(40) index"`
Context string `xorm:"TEXT"`
}

if err := x.Sync2(new(Comment)); err != nil {
if err := x.Sync2(new(CommitStatus)); err != nil {
return err
}

// Issue see models/repo.go
type Repository struct {
OriginalURL string
sess := x.NewSession()
defer sess.Close()

start := 0
for {
statuses := make([]*CommitStatus, 0, 100)
err := sess.OrderBy("id").Limit(100, start).Find(&statuses)
if err != nil {
return err
}
if len(statuses) == 0 {
break
}

if err = sess.Begin(); err != nil {
return err
}

for _, status := range statuses {
status.ContextHash = hashContext(status.Context)
if _, err := sess.ID(status.ID).Cols("context_hash").Update(status); err != nil {
return err
}
}

if err := sess.Commit(); err != nil {
return err
}

if len(statuses) < 100 {
break
}

start += len(statuses)
}

return x.Sync2(new(Repository))
return nil
}
28 changes: 23 additions & 5 deletions models/migrations/v1_10/v90.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,30 @@ package v1_10 //nolint

import "xorm.io/xorm"

func ChangeSomeColumnsLengthOfRepo(x *xorm.Engine) error {
func AddOriginalMigrationInfo(x *xorm.Engine) error {
// Issue see models/issue.go
type Issue struct {
OriginalAuthor string
OriginalAuthorID int64
}

if err := x.Sync2(new(Issue)); err != nil {
return err
}

// Issue see models/issue_comment.go
type Comment struct {
OriginalAuthor string
OriginalAuthorID int64
}

if err := x.Sync2(new(Comment)); err != nil {
return err
}

// Issue see models/repo.go
type Repository struct {
ID int64 `xorm:"pk autoincr"`
Description string `xorm:"TEXT"`
Website string `xorm:"VARCHAR(2048)"`
OriginalURL string `xorm:"VARCHAR(2048)"`
OriginalURL string
}

return x.Sync2(new(Repository))
Expand Down
Loading