Skip to content

Commit 1ea1cad

Browse files
6543techknowlogick
andauthored
Add Created & Updated to Milestone (#12662)
* Add Created and Updated to Milestone table and expose via API * Expose to UI - To Overloaded ?!? * fix unit test Co-authored-by: techknowlogick <[email protected]>
1 parent 7404786 commit 1ea1cad

File tree

9 files changed

+57
-1
lines changed

9 files changed

+57
-1
lines changed

models/issue_milestone.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ package models
77
import (
88
"fmt"
99
"strings"
10+
"time"
1011

1112
"code.gitea.io/gitea/modules/setting"
1213
api "code.gitea.io/gitea/modules/structs"
@@ -31,11 +32,14 @@ type Milestone struct {
3132
Completeness int // Percentage(1-100).
3233
IsOverdue bool `xorm:"-"`
3334

34-
DeadlineString string `xorm:"-"`
35+
CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"`
36+
UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"`
3537
DeadlineUnix timeutil.TimeStamp
3638
ClosedDateUnix timeutil.TimeStamp
39+
DeadlineString string `xorm:"-"`
3740

3841
TotalTrackedTime int64 `xorm:"-"`
42+
TimeSinceUpdate int64 `xorm:"-"`
3943
}
4044

4145
// BeforeUpdate is invoked from XORM before updating this object.
@@ -50,6 +54,9 @@ func (m *Milestone) BeforeUpdate() {
5054
// AfterLoad is invoked from XORM after setting the value of a field of
5155
// this object.
5256
func (m *Milestone) AfterLoad() {
57+
if !m.UpdatedUnix.IsZero() {
58+
m.TimeSinceUpdate = time.Now().Unix() - m.UpdatedUnix.AsTime().Unix()
59+
}
5360
m.NumOpenIssues = m.NumIssues - m.NumClosedIssues
5461
if m.DeadlineUnix.Year() == 9999 {
5562
return

models/migrations/migrations.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,8 @@ var migrations = []Migration{
230230
NewMigration("create review for 0 review id code comments", createReviewsForCodeComments),
231231
// v148 -> v149
232232
NewMigration("remove issue dependency comments who refer to non existing issues", purgeInvalidDependenciesComments),
233+
// v149 -> v150
234+
NewMigration("Add Created and Updated to Milestone table", addCreatedAndUpdatedToMilestones),
233235
}
234236

235237
// GetCurrentDBVersion returns the current db version

models/migrations/v149.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// Copyright 2020 The Gitea Authors. All rights reserved.
2+
// Use of this source code is governed by a MIT-style
3+
// license that can be found in the LICENSE file.
4+
5+
package migrations
6+
7+
import (
8+
"fmt"
9+
10+
"code.gitea.io/gitea/modules/timeutil"
11+
12+
"xorm.io/xorm"
13+
)
14+
15+
func addCreatedAndUpdatedToMilestones(x *xorm.Engine) error {
16+
type Milestone struct {
17+
CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"`
18+
UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"`
19+
}
20+
21+
if err := x.Sync2(new(Milestone)); err != nil {
22+
return fmt.Errorf("Sync2: %v", err)
23+
}
24+
return nil
25+
}

modules/convert/issue.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,8 @@ func ToAPIMilestone(m *models.Milestone) *api.Milestone {
152152
Description: m.Content,
153153
OpenIssues: m.NumOpenIssues,
154154
ClosedIssues: m.NumClosedIssues,
155+
Created: m.CreatedUnix.AsTime(),
156+
Updated: m.UpdatedUnix.AsTimePtr(),
155157
}
156158
if m.IsClosed {
157159
apiMilestone.Closed = m.ClosedDateUnix.AsTimePtr()

modules/convert/issue_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ func TestMilestone_APIFormat(t *testing.T) {
3434
IsClosed: false,
3535
NumOpenIssues: 5,
3636
NumClosedIssues: 6,
37+
CreatedUnix: timeutil.TimeStamp(time.Date(1999, time.January, 1, 0, 0, 0, 0, time.UTC).Unix()),
38+
UpdatedUnix: timeutil.TimeStamp(time.Date(1999, time.March, 1, 0, 0, 0, 0, time.UTC).Unix()),
3739
DeadlineUnix: timeutil.TimeStamp(time.Date(2000, time.January, 1, 0, 0, 0, 0, time.UTC).Unix()),
3840
}
3941
assert.Equal(t, api.Milestone{
@@ -43,6 +45,8 @@ func TestMilestone_APIFormat(t *testing.T) {
4345
Description: milestone.Content,
4446
OpenIssues: milestone.NumOpenIssues,
4547
ClosedIssues: milestone.NumClosedIssues,
48+
Created: milestone.CreatedUnix.AsTime(),
49+
Updated: milestone.UpdatedUnix.AsTimePtr(),
4650
Deadline: milestone.DeadlineUnix.AsTimePtr(),
4751
}, *ToAPIMilestone(milestone))
4852
}

modules/structs/issue_milestone.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ type Milestone struct {
1717
OpenIssues int `json:"open_issues"`
1818
ClosedIssues int `json:"closed_issues"`
1919
// swagger:strfmt date-time
20+
Created time.Time `json:"created_at"`
21+
// swagger:strfmt date-time
22+
Updated *time.Time `json:"updated_at"`
23+
// swagger:strfmt date-time
2024
Closed *time.Time `json:"closed_at"`
2125
// swagger:strfmt date-time
2226
Deadline *time.Time `json:"due_on"`

options/locale/locale_en-US.ini

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1241,6 +1241,7 @@ milestones.new = New Milestone
12411241
milestones.open_tab = %d Open
12421242
milestones.close_tab = %d Closed
12431243
milestones.closed = Closed %s
1244+
milestones.update_ago = Updated %s ago
12441245
milestones.no_due_date = No due date
12451246
milestones.open = Open
12461247
milestones.close = Close

templates/repo/issue/milestones.tmpl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@
6565
{{svg "octicon-issue-opened" 16}} {{$.i18n.Tr "repo.issues.open_tab" .NumOpenIssues}}
6666
{{svg "octicon-issue-closed" 16}} {{$.i18n.Tr "repo.issues.close_tab" .NumClosedIssues}}
6767
{{if .TotalTrackedTime}}{{svg "octicon-clock" 16}} {{.TotalTrackedTime|Sec2Time}}{{end}}
68+
{{if .UpdatedUnix}}{{svg "octicon-clock" 16}} {{$.i18n.Tr "repo.milestones.update_ago" (.TimeSinceUpdate|Sec2Time)}}{{end}}
6869
</span>
6970
</div>
7071
{{if and (or $.CanWriteIssues $.CanWritePulls) (not $.Repository.IsArchived)}}

templates/swagger/v1_json.tmpl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13613,6 +13613,11 @@
1361313613
"format": "int64",
1361413614
"x-go-name": "ClosedIssues"
1361513615
},
13616+
"created_at": {
13617+
"type": "string",
13618+
"format": "date-time",
13619+
"x-go-name": "Created"
13620+
},
1361613621
"description": {
1361713622
"type": "string",
1361813623
"x-go-name": "Description"
@@ -13638,6 +13643,11 @@
1363813643
"title": {
1363913644
"type": "string",
1364013645
"x-go-name": "Title"
13646+
},
13647+
"updated_at": {
13648+
"type": "string",
13649+
"format": "date-time",
13650+
"x-go-name": "Updated"
1364113651
}
1364213652
},
1364313653
"x-go-package": "code.gitea.io/gitea/modules/structs"

0 commit comments

Comments
 (0)