[F3] refactor issue insertion to preserve the creation date
issues_model.NewIssue() is convenient but will override the creation date. Update the database instead.
This commit is contained in:
parent
f1b2f82e7e
commit
729f4be1e4
1 changed files with 25 additions and 5 deletions
|
@ -182,17 +182,37 @@ func (o *IssueProvider) Get(ctx context.Context, user *User, project *Project, e
|
||||||
func (o *IssueProvider) Put(ctx context.Context, user *User, project *Project, issue, existing *Issue) *Issue {
|
func (o *IssueProvider) Put(ctx context.Context, user *User, project *Project, issue, existing *Issue) *Issue {
|
||||||
i := issue.Issue
|
i := issue.Issue
|
||||||
i.RepoID = project.GetID()
|
i.RepoID = project.GetID()
|
||||||
labels := make([]int64, 0, len(i.Labels))
|
makeLabels := func(issueID int64) []issues_model.IssueLabel {
|
||||||
|
labels := make([]issues_model.IssueLabel, 0, len(i.Labels))
|
||||||
for _, label := range i.Labels {
|
for _, label := range i.Labels {
|
||||||
labels = append(labels, label.ID)
|
o.g.GetLogger().Trace("%d with label %d", issueID, label.ID)
|
||||||
|
labels = append(labels, issues_model.IssueLabel{
|
||||||
|
IssueID: issueID,
|
||||||
|
LabelID: label.ID,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return labels
|
||||||
}
|
}
|
||||||
|
|
||||||
var result *Issue
|
var result *Issue
|
||||||
|
|
||||||
|
sess := db.GetEngine(ctx)
|
||||||
if existing == nil || existing.IsNil() {
|
if existing == nil || existing.IsNil() {
|
||||||
if err := issues_model.NewIssue(&project.Repository, &i, labels, []string{}); err != nil {
|
idx, err := db.GetNextResourceIndex(ctx, "issue_index", project.Repository.ID)
|
||||||
|
if err != nil {
|
||||||
|
panic(fmt.Errorf("generate issue index failed: %w", err))
|
||||||
|
}
|
||||||
|
i.Index = idx
|
||||||
|
|
||||||
|
if _, err = sess.NoAutoTime().Insert(&i); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
labels := makeLabels(i.ID)
|
||||||
|
if len(labels) > 0 {
|
||||||
|
if _, err := sess.Insert(labels); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
result = IssueConverter(&i)
|
result = IssueConverter(&i)
|
||||||
} else {
|
} else {
|
||||||
e := existing.Issue
|
e := existing.Issue
|
||||||
|
@ -209,7 +229,7 @@ func (o *IssueProvider) Put(ctx context.Context, user *User, project *Project, i
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(cols) > 0 {
|
if len(cols) > 0 {
|
||||||
if _, err := db.GetEngine(ctx).ID(existing.ID).Cols(cols...).Update(u); err != nil {
|
if _, err := sess.ID(existing.ID).Cols(cols...).Update(u); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue