code.gitea.io/gitea@v1.21.7/models/migrations/v1_11/v114.go (about) 1 // Copyright 2019 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package v1_11 //nolint 5 6 import ( 7 "net/url" 8 9 "xorm.io/xorm" 10 ) 11 12 func SanitizeOriginalURL(x *xorm.Engine) error { 13 type Repository struct { 14 ID int64 15 OriginalURL string `xorm:"VARCHAR(2048)"` 16 } 17 18 var last int 19 const batchSize = 50 20 for { 21 results := make([]Repository, 0, batchSize) 22 err := x.Where("original_url <> '' AND original_url IS NOT NULL"). 23 And("original_service_type = 0 OR original_service_type IS NULL"). 24 OrderBy("id"). 25 Limit(batchSize, last). 26 Find(&results) 27 if err != nil { 28 return err 29 } 30 if len(results) == 0 { 31 break 32 } 33 last += len(results) 34 35 for _, res := range results { 36 u, err := url.Parse(res.OriginalURL) 37 if err != nil { 38 // it is ok to continue here, we only care about fixing URLs that we can read 39 continue 40 } 41 u.User = nil 42 originalURL := u.String() 43 _, err = x.Exec("UPDATE repository SET original_url = ? WHERE id = ?", originalURL, res.ID) 44 if err != nil { 45 return err 46 } 47 } 48 } 49 return nil 50 }