]> source.dussan.org Git - gitea.git/commitdiff
Trim title before insert/update to database to match the size requirements of databas...
authorLunny Xiao <xiaolunwen@gmail.com>
Thu, 14 Nov 2024 07:19:14 +0000 (23:19 -0800)
committerGitHub <noreply@github.com>
Thu, 14 Nov 2024 07:19:14 +0000 (07:19 +0000)
Fix #32489

models/actions/run.go
models/actions/runner.go
models/actions/schedule.go
models/issues/issue_update.go
models/issues/pull.go
models/project/project.go
models/repo/release.go
services/release/release.go

index 37064520a213a5699085556fac9e6e2261db6274..732fb48bb9a61d1f99180132f57f820aa48f3775 100644 (file)
@@ -261,6 +261,7 @@ func CancelPreviousJobs(ctx context.Context, repoID int64, ref, workflowID strin
 }
 
 // InsertRun inserts a run
+// The title will be cut off at 255 characters if it's longer than 255 characters.
 func InsertRun(ctx context.Context, run *ActionRun, jobs []*jobparser.SingleWorkflow) error {
        ctx, committer, err := db.TxContext(ctx)
        if err != nil {
@@ -273,6 +274,7 @@ func InsertRun(ctx context.Context, run *ActionRun, jobs []*jobparser.SingleWork
                return err
        }
        run.Index = index
+       run.Title, _ = util.SplitStringAtByteN(run.Title, 255)
 
        if err := db.Insert(ctx, run); err != nil {
                return err
@@ -399,6 +401,7 @@ func UpdateRun(ctx context.Context, run *ActionRun, cols ...string) error {
        if len(cols) > 0 {
                sess.Cols(cols...)
        }
+       run.Title, _ = util.SplitStringAtByteN(run.Title, 255)
        affected, err := sess.Update(run)
        if err != nil {
                return err
index 2023ba4f995affa1dfd5198146515a376468a2aa..b35a76680c2cba13d29e305e38157b017093bcb8 100644 (file)
@@ -252,6 +252,7 @@ func GetRunnerByID(ctx context.Context, id int64) (*ActionRunner, error) {
 // UpdateRunner updates runner's information.
 func UpdateRunner(ctx context.Context, r *ActionRunner, cols ...string) error {
        e := db.GetEngine(ctx)
+       r.Name, _ = util.SplitStringAtByteN(r.Name, 255)
        var err error
        if len(cols) == 0 {
                _, err = e.ID(r.ID).AllCols().Update(r)
@@ -278,6 +279,7 @@ func CreateRunner(ctx context.Context, t *ActionRunner) error {
                // Remove OwnerID to avoid confusion; it's not worth returning an error here.
                t.OwnerID = 0
        }
+       t.Name, _ = util.SplitStringAtByteN(t.Name, 255)
        return db.Insert(ctx, t)
 }
 
index c751ef51cad09a32a291ea1b46c88bbef42f74b3..961ffd0851c95013637c7d2b5921fa87a28d5cc4 100644 (file)
@@ -12,6 +12,7 @@ import (
        repo_model "code.gitea.io/gitea/models/repo"
        user_model "code.gitea.io/gitea/models/user"
        "code.gitea.io/gitea/modules/timeutil"
+       "code.gitea.io/gitea/modules/util"
        webhook_module "code.gitea.io/gitea/modules/webhook"
 )
 
@@ -67,6 +68,7 @@ func CreateScheduleTask(ctx context.Context, rows []*ActionSchedule) error {
 
        // Loop through each schedule row
        for _, row := range rows {
+               row.Title, _ = util.SplitStringAtByteN(row.Title, 255)
                // Create new schedule row
                if err = db.Insert(ctx, row); err != nil {
                        return err
index 31d76be5e0aea95ec34790939505083b8fd108e3..5b929c9115b32446f39422e9ce382ac5143f8719 100644 (file)
@@ -21,6 +21,7 @@ import (
        "code.gitea.io/gitea/modules/references"
        api "code.gitea.io/gitea/modules/structs"
        "code.gitea.io/gitea/modules/timeutil"
+       "code.gitea.io/gitea/modules/util"
 
        "xorm.io/builder"
 )
@@ -138,6 +139,7 @@ func ChangeIssueTitle(ctx context.Context, issue *Issue, doer *user_model.User,
        }
        defer committer.Close()
 
+       issue.Title, _ = util.SplitStringAtByteN(issue.Title, 255)
        if err = UpdateIssueCols(ctx, issue, "name"); err != nil {
                return fmt.Errorf("updateIssueCols: %w", err)
        }
@@ -386,6 +388,7 @@ func NewIssueWithIndex(ctx context.Context, doer *user_model.User, opts NewIssue
 }
 
 // NewIssue creates new issue with labels for repository.
+// The title will be cut off at 255 characters if it's longer than 255 characters.
 func NewIssue(ctx context.Context, repo *repo_model.Repository, issue *Issue, labelIDs []int64, uuids []string) (err error) {
        ctx, committer, err := db.TxContext(ctx)
        if err != nil {
@@ -399,6 +402,7 @@ func NewIssue(ctx context.Context, repo *repo_model.Repository, issue *Issue, la
        }
 
        issue.Index = idx
+       issue.Title, _ = util.SplitStringAtByteN(issue.Title, 255)
 
        if err = NewIssueWithIndex(ctx, issue.Poster, NewIssueOptions{
                Repo:        repo,
index 4475ab3a4fea180e6c3374ac75e904f85df6e00e..853e2a69e627300a81139a1b4f0c8a3693032ee7 100644 (file)
@@ -572,6 +572,7 @@ func NewPullRequest(ctx context.Context, repo *repo_model.Repository, issue *Iss
        }
 
        issue.Index = idx
+       issue.Title, _ = util.SplitStringAtByteN(issue.Title, 255)
 
        if err = NewIssueWithIndex(ctx, issue.Poster, NewIssueOptions{
                Repo:        repo,
index 050ccf44e02e4ab94f898728dbeab185c14d1513..9779908b9d5bef20be327dc7086f7815069f90dc 100644 (file)
@@ -242,6 +242,7 @@ func GetSearchOrderByBySortType(sortType string) db.SearchOrderBy {
 }
 
 // NewProject creates a new Project
+// The title will be cut off at 255 characters if it's longer than 255 characters.
 func NewProject(ctx context.Context, p *Project) error {
        if !IsTemplateTypeValid(p.TemplateType) {
                p.TemplateType = TemplateTypeNone
@@ -255,6 +256,8 @@ func NewProject(ctx context.Context, p *Project) error {
                return util.NewInvalidArgumentErrorf("project type is not valid")
        }
 
+       p.Title, _ = util.SplitStringAtByteN(p.Title, 255)
+
        return db.WithTx(ctx, func(ctx context.Context) error {
                if err := db.Insert(ctx, p); err != nil {
                        return err
@@ -308,6 +311,7 @@ func UpdateProject(ctx context.Context, p *Project) error {
                p.CardType = CardTypeTextOnly
        }
 
+       p.Title, _ = util.SplitStringAtByteN(p.Title, 255)
        _, err := db.GetEngine(ctx).ID(p.ID).Cols(
                "title",
                "description",
index 7c66cbc1af708eecfba2c6d7cb1a478c5fcc8f59..ba7a3b3159aa4f234d5c178f77fdeac0bb2148d7 100644 (file)
@@ -156,6 +156,7 @@ func IsReleaseExist(ctx context.Context, repoID int64, tagName string) (bool, er
 
 // UpdateRelease updates all columns of a release
 func UpdateRelease(ctx context.Context, rel *Release) error {
+       rel.Title, _ = util.SplitStringAtByteN(rel.Title, 255)
        _, err := db.GetEngine(ctx).ID(rel.ID).AllCols().Update(rel)
        return err
 }
index 5c021404b8fdcfc6e777e5fc186584ccf9e7cc2e..980a5e98e7fa155b4c7c506a34f509c7af6eab39 100644 (file)
@@ -142,6 +142,7 @@ func CreateRelease(gitRepo *git.Repository, rel *repo_model.Release, attachmentU
                return err
        }
 
+       rel.Title, _ = util.SplitStringAtByteN(rel.Title, 255)
        rel.LowerTagName = strings.ToLower(rel.TagName)
        if err = db.Insert(gitRepo.Ctx, rel); err != nil {
                return err