mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-05-14 05:52:43 +00:00
Check primary keys for all tables and drop ForeignReference (#21721)
Some dbs require that all tables have primary keys, see - #16802 - #21086 We can add a test to keep it from being broken again. Edit: ~Added missing primary key for `ForeignReference`~ Dropped the `ForeignReference` table to satisfy the check, so it closes #21086. More context can be found in comments. Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: zeripath <art27@cantab.net>
This commit is contained in:
parent
41f0668da8
commit
71ca3067bc
11 changed files with 55 additions and 203 deletions
|
@ -9,11 +9,9 @@ import (
|
|||
"fmt"
|
||||
"regexp"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"code.gitea.io/gitea/models/db"
|
||||
"code.gitea.io/gitea/models/foreignreference"
|
||||
"code.gitea.io/gitea/models/organization"
|
||||
"code.gitea.io/gitea/models/perm"
|
||||
access_model "code.gitea.io/gitea/models/perm/access"
|
||||
|
@ -136,12 +134,11 @@ type Issue struct {
|
|||
UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"`
|
||||
ClosedUnix timeutil.TimeStamp `xorm:"INDEX"`
|
||||
|
||||
Attachments []*repo_model.Attachment `xorm:"-"`
|
||||
Comments []*Comment `xorm:"-"`
|
||||
Reactions ReactionList `xorm:"-"`
|
||||
TotalTrackedTime int64 `xorm:"-"`
|
||||
Assignees []*user_model.User `xorm:"-"`
|
||||
ForeignReference *foreignreference.ForeignReference `xorm:"-"`
|
||||
Attachments []*repo_model.Attachment `xorm:"-"`
|
||||
Comments []*Comment `xorm:"-"`
|
||||
Reactions ReactionList `xorm:"-"`
|
||||
TotalTrackedTime int64 `xorm:"-"`
|
||||
Assignees []*user_model.User `xorm:"-"`
|
||||
|
||||
// IsLocked limits commenting abilities to users on an issue
|
||||
// with write access
|
||||
|
@ -321,29 +318,6 @@ func (issue *Issue) loadReactions(ctx context.Context) (err error) {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (issue *Issue) loadForeignReference(ctx context.Context) (err error) {
|
||||
if issue.ForeignReference != nil {
|
||||
return nil
|
||||
}
|
||||
reference := &foreignreference.ForeignReference{
|
||||
RepoID: issue.RepoID,
|
||||
LocalIndex: issue.Index,
|
||||
Type: foreignreference.TypeIssue,
|
||||
}
|
||||
has, err := db.GetEngine(ctx).Get(reference)
|
||||
if err != nil {
|
||||
return err
|
||||
} else if !has {
|
||||
return foreignreference.ErrForeignIndexNotExist{
|
||||
RepoID: issue.RepoID,
|
||||
LocalIndex: issue.Index,
|
||||
Type: foreignreference.TypeIssue,
|
||||
}
|
||||
}
|
||||
issue.ForeignReference = reference
|
||||
return nil
|
||||
}
|
||||
|
||||
// LoadMilestone load milestone of this issue.
|
||||
func (issue *Issue) LoadMilestone(ctx context.Context) (err error) {
|
||||
if (issue.Milestone == nil || issue.Milestone.ID != issue.MilestoneID) && issue.MilestoneID > 0 {
|
||||
|
@ -406,10 +380,6 @@ func (issue *Issue) LoadAttributes(ctx context.Context) (err error) {
|
|||
}
|
||||
}
|
||||
|
||||
if err = issue.loadForeignReference(ctx); err != nil && !foreignreference.IsErrForeignIndexNotExist(err) {
|
||||
return err
|
||||
}
|
||||
|
||||
return issue.loadReactions(ctx)
|
||||
}
|
||||
|
||||
|
@ -1097,26 +1067,6 @@ func GetIssueByIndex(repoID, index int64) (*Issue, error) {
|
|||
return issue, nil
|
||||
}
|
||||
|
||||
// GetIssueByForeignIndex returns raw issue by foreign ID
|
||||
func GetIssueByForeignIndex(ctx context.Context, repoID, foreignIndex int64) (*Issue, error) {
|
||||
reference := &foreignreference.ForeignReference{
|
||||
RepoID: repoID,
|
||||
ForeignIndex: strconv.FormatInt(foreignIndex, 10),
|
||||
Type: foreignreference.TypeIssue,
|
||||
}
|
||||
has, err := db.GetEngine(ctx).Get(reference)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
} else if !has {
|
||||
return nil, foreignreference.ErrLocalIndexNotExist{
|
||||
RepoID: repoID,
|
||||
ForeignIndex: foreignIndex,
|
||||
Type: foreignreference.TypeIssue,
|
||||
}
|
||||
}
|
||||
return GetIssueByIndex(repoID, reference.LocalIndex)
|
||||
}
|
||||
|
||||
// GetIssueWithAttrsByIndex returns issue by index in a repository.
|
||||
func GetIssueWithAttrsByIndex(repoID, index int64) (*Issue, error) {
|
||||
issue, err := GetIssueByIndex(repoID, index)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue