From 1b47e1636d5cb9f6a7ac8196a11df34f74729f1e Mon Sep 17 00:00:00 2001 From: Ethan Koenig Date: Mon, 30 Oct 2017 21:50:31 -0700 Subject: [PATCH 1/3] Use api.TrackedTime in API --- routers/api/v1/convert/convert.go | 11 +++++ routers/api/v1/repo/issue_tracked_time.go | 51 ++++++++++++++++------- 2 files changed, 46 insertions(+), 16 deletions(-) diff --git a/routers/api/v1/convert/convert.go b/routers/api/v1/convert/convert.go index 0a0ab364bd456..5ffbd175c4f12 100644 --- a/routers/api/v1/convert/convert.go +++ b/routers/api/v1/convert/convert.go @@ -190,3 +190,14 @@ func ToTeam(team *models.Team) *api.Team { Permission: team.Authorize.String(), } } + +// ToTrackedTime convert models.TrackedTime to api.TrackedTime +func ToTrackedTime(trackedTime *models.TrackedTime) *api.TrackedTime { + return &api.TrackedTime{ + ID: trackedTime.ID, + IssueID: trackedTime.IssueID, + UserID: trackedTime.UserID, + Time: trackedTime.Time, + Created: trackedTime.Created, + } +} diff --git a/routers/api/v1/repo/issue_tracked_time.go b/routers/api/v1/repo/issue_tracked_time.go index 964fc11ddb678..181164be57b98 100644 --- a/routers/api/v1/repo/issue_tracked_time.go +++ b/routers/api/v1/repo/issue_tracked_time.go @@ -7,9 +7,18 @@ package repo import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/context" + "code.gitea.io/gitea/routers/api/v1/convert" api "code.gitea.io/sdk/gitea" ) +func convertTrackedTimes(trackedTimes []*models.TrackedTime) []*api.TrackedTime { + apiTrackedTimes := make([]*api.TrackedTime, len(trackedTimes)) + for i, trackedTime := range trackedTimes { + apiTrackedTimes[i] = convert.ToTrackedTime(trackedTime) + } + return apiTrackedTimes +} + // ListTrackedTimes list all the tracked times of an issue func ListTrackedTimes(ctx *context.APIContext) { // swagger:route GET /repos/{username}/{reponame}/issues/{issue}/times repository issueTrackedTimes @@ -35,11 +44,13 @@ func ListTrackedTimes(ctx *context.APIContext) { return } - if trackedTimes, err := models.GetTrackedTimes(models.FindTrackedTimesOptions{IssueID: issue.ID}); err != nil { + trackedTimes, err := models.GetTrackedTimes(models.FindTrackedTimesOptions{IssueID: issue.ID}) + if err != nil { ctx.Error(500, "GetTrackedTimesByIssue", err) - } else { - ctx.JSON(200, &trackedTimes) + return } + apiTrackedTimes := convertTrackedTimes(trackedTimes) + ctx.JSON(200, &apiTrackedTimes) } // AddTime adds time manual to the given issue @@ -73,13 +84,12 @@ func AddTime(ctx *context.APIContext, form api.AddTimeOption) { ctx.Status(403) return } - var tt *models.TrackedTime - if tt, err = models.AddTime(ctx.User, issue, form.Time); err != nil { + trackedTime, err := models.AddTime(ctx.User, issue, form.Time) + if err != nil { ctx.Error(500, "AddTime", err) return } - ctx.JSON(200, tt) - + ctx.JSON(200, convert.ToTrackedTime(trackedTime)) } // ListTrackedTimesByUser lists all tracked times of the user @@ -111,11 +121,15 @@ func ListTrackedTimesByUser(ctx *context.APIContext) { ctx.Status(404) return } - if trackedTimes, err := models.GetTrackedTimes(models.FindTrackedTimesOptions{UserID: user.ID, RepositoryID: ctx.Repo.Repository.ID}); err != nil { + trackedTimes, err := models.GetTrackedTimes(models.FindTrackedTimesOptions{ + UserID: user.ID, + RepositoryID: ctx.Repo.Repository.ID}) + if err != nil { ctx.Error(500, "GetTrackedTimesByUser", err) - } else { - ctx.JSON(200, &trackedTimes) + return } + apiTrackedTimes := convertTrackedTimes(trackedTimes) + ctx.JSON(200, &apiTrackedTimes) } // ListTrackedTimesByRepository lists all tracked times of the user @@ -133,11 +147,14 @@ func ListTrackedTimesByRepository(ctx *context.APIContext) { ctx.JSON(400, struct{ Message string }{Message: "time tracking disabled"}) return } - if trackedTimes, err := models.GetTrackedTimes(models.FindTrackedTimesOptions{RepositoryID: ctx.Repo.Repository.ID}); err != nil { + trackedTimes, err := models.GetTrackedTimes(models.FindTrackedTimesOptions{ + RepositoryID: ctx.Repo.Repository.ID}) + if err != nil { ctx.Error(500, "GetTrackedTimesByUser", err) - } else { - ctx.JSON(200, &trackedTimes) + return } + apiTrackedTimes := convertTrackedTimes(trackedTimes) + ctx.JSON(200, &apiTrackedTimes) } // ListMyTrackedTimes lists all tracked times of the current user @@ -150,9 +167,11 @@ func ListMyTrackedTimes(ctx *context.APIContext) { // Responses: // 200: TrackedTimes // 500: error - if trackedTimes, err := models.GetTrackedTimes(models.FindTrackedTimesOptions{UserID: ctx.User.ID}); err != nil { + trackedTimes, err := models.GetTrackedTimes(models.FindTrackedTimesOptions{UserID: ctx.User.ID}) + if err != nil { ctx.Error(500, "GetTrackedTimesByUser", err) - } else { - ctx.JSON(200, &trackedTimes) + return } + apiTrackedTimes := convertTrackedTimes(trackedTimes) + ctx.JSON(200, &apiTrackedTimes) } From 02967fefe3a832d9696c11c40bffc08818e15c0f Mon Sep 17 00:00:00 2001 From: Ethan Koenig Date: Mon, 30 Oct 2017 23:18:45 -0700 Subject: [PATCH 2/3] APIFormat() method --- models/issue_tracked_time.go | 13 +++++++++++++ routers/api/v1/convert/convert.go | 11 ----------- routers/api/v1/repo/issue_tracked_time.go | 5 ++--- 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/models/issue_tracked_time.go b/models/issue_tracked_time.go index b1c82b620705d..3b2360f68f9d0 100644 --- a/models/issue_tracked_time.go +++ b/models/issue_tracked_time.go @@ -7,6 +7,8 @@ package models import ( "time" + api "code.gitea.io/sdk/gitea" + "github.com/go-xorm/builder" ) @@ -25,6 +27,17 @@ func (t *TrackedTime) AfterLoad() { t.Created = time.Unix(t.CreatedUnix, 0).Local() } +// APIFormat converts TrackedTime to API format +func (t *TrackedTime) APIFormat() *api.TrackedTime { + return &api.TrackedTime{ + ID: t.ID, + IssueID: t.IssueID, + UserID: t.UserID, + Time: t.Time, + Created: t.Created, + } +} + // FindTrackedTimesOptions represent the filters for tracked times. If an ID is 0 it will be ignored. type FindTrackedTimesOptions struct { IssueID int64 diff --git a/routers/api/v1/convert/convert.go b/routers/api/v1/convert/convert.go index 5ffbd175c4f12..0a0ab364bd456 100644 --- a/routers/api/v1/convert/convert.go +++ b/routers/api/v1/convert/convert.go @@ -190,14 +190,3 @@ func ToTeam(team *models.Team) *api.Team { Permission: team.Authorize.String(), } } - -// ToTrackedTime convert models.TrackedTime to api.TrackedTime -func ToTrackedTime(trackedTime *models.TrackedTime) *api.TrackedTime { - return &api.TrackedTime{ - ID: trackedTime.ID, - IssueID: trackedTime.IssueID, - UserID: trackedTime.UserID, - Time: trackedTime.Time, - Created: trackedTime.Created, - } -} diff --git a/routers/api/v1/repo/issue_tracked_time.go b/routers/api/v1/repo/issue_tracked_time.go index 181164be57b98..4d509816c64d7 100644 --- a/routers/api/v1/repo/issue_tracked_time.go +++ b/routers/api/v1/repo/issue_tracked_time.go @@ -7,14 +7,13 @@ package repo import ( "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/context" - "code.gitea.io/gitea/routers/api/v1/convert" api "code.gitea.io/sdk/gitea" ) func convertTrackedTimes(trackedTimes []*models.TrackedTime) []*api.TrackedTime { apiTrackedTimes := make([]*api.TrackedTime, len(trackedTimes)) for i, trackedTime := range trackedTimes { - apiTrackedTimes[i] = convert.ToTrackedTime(trackedTime) + apiTrackedTimes[i] = trackedTime.APIFormat() } return apiTrackedTimes } @@ -89,7 +88,7 @@ func AddTime(ctx *context.APIContext, form api.AddTimeOption) { ctx.Error(500, "AddTime", err) return } - ctx.JSON(200, convert.ToTrackedTime(trackedTime)) + ctx.JSON(200, trackedTime.APIFormat()) } // ListTrackedTimesByUser lists all tracked times of the user From a474910ba237660b8302aad82dfc9020bf94ee54 Mon Sep 17 00:00:00 2001 From: Ethan Koenig Date: Tue, 31 Oct 2017 10:54:31 -0700 Subject: [PATCH 3/3] Rename function --- routers/api/v1/repo/issue_tracked_time.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/routers/api/v1/repo/issue_tracked_time.go b/routers/api/v1/repo/issue_tracked_time.go index 4d509816c64d7..3962a7b0e281b 100644 --- a/routers/api/v1/repo/issue_tracked_time.go +++ b/routers/api/v1/repo/issue_tracked_time.go @@ -10,7 +10,7 @@ import ( api "code.gitea.io/sdk/gitea" ) -func convertTrackedTimes(trackedTimes []*models.TrackedTime) []*api.TrackedTime { +func trackedTimesToAPIFormat(trackedTimes []*models.TrackedTime) []*api.TrackedTime { apiTrackedTimes := make([]*api.TrackedTime, len(trackedTimes)) for i, trackedTime := range trackedTimes { apiTrackedTimes[i] = trackedTime.APIFormat() @@ -48,7 +48,7 @@ func ListTrackedTimes(ctx *context.APIContext) { ctx.Error(500, "GetTrackedTimesByIssue", err) return } - apiTrackedTimes := convertTrackedTimes(trackedTimes) + apiTrackedTimes := trackedTimesToAPIFormat(trackedTimes) ctx.JSON(200, &apiTrackedTimes) } @@ -127,7 +127,7 @@ func ListTrackedTimesByUser(ctx *context.APIContext) { ctx.Error(500, "GetTrackedTimesByUser", err) return } - apiTrackedTimes := convertTrackedTimes(trackedTimes) + apiTrackedTimes := trackedTimesToAPIFormat(trackedTimes) ctx.JSON(200, &apiTrackedTimes) } @@ -152,7 +152,7 @@ func ListTrackedTimesByRepository(ctx *context.APIContext) { ctx.Error(500, "GetTrackedTimesByUser", err) return } - apiTrackedTimes := convertTrackedTimes(trackedTimes) + apiTrackedTimes := trackedTimesToAPIFormat(trackedTimes) ctx.JSON(200, &apiTrackedTimes) } @@ -171,6 +171,6 @@ func ListMyTrackedTimes(ctx *context.APIContext) { ctx.Error(500, "GetTrackedTimesByUser", err) return } - apiTrackedTimes := convertTrackedTimes(trackedTimes) + apiTrackedTimes := trackedTimesToAPIFormat(trackedTimes) ctx.JSON(200, &apiTrackedTimes) }