From 560c08dcca34bc321ad3a6dfbbedd2ba093569ea Mon Sep 17 00:00:00 2001 From: Enver Bisevac Date: Wed, 21 Sep 2022 19:49:14 +0200 Subject: [PATCH] [MAINT] fix linter errors. (#18) * fix linter errors * fix exhaust linter error * fix exhaust linter error --- internal/paths/paths.go | 2 +- internal/router/api.go | 100 +++++++++++++++++--------------- internal/store/database/path.go | 2 + internal/store/database/repo.go | 2 + types/enum/path.go | 18 ++++-- types/enum/repo.go | 10 ++-- 6 files changed, 78 insertions(+), 56 deletions(-) diff --git a/internal/paths/paths.go b/internal/paths/paths.go index 38f2bada3..1050143e2 100644 --- a/internal/paths/paths.go +++ b/internal/paths/paths.go @@ -31,7 +31,7 @@ func Disect(path string) (string, string, error) { } /* - * Concatinates two paths together (takes care of leading / trailing '/') + * Concatinate two paths together (takes care of leading / trailing '/') * e.g. (space1/, /space2/) -> space1/space2 * * NOTE: "//" is not a valid path, so all '/' will be trimmed. diff --git a/internal/router/api.go b/internal/router/api.go index 153b9b8cc..5820c286d 100644 --- a/internal/router/api.go +++ b/internal/router/api.go @@ -5,19 +5,20 @@ import ( "fmt" "net/http" + "github.com/harness/gitness/internal/api/handler/account" + handlerrepo "github.com/harness/gitness/internal/api/handler/repo" + handlerspace "github.com/harness/gitness/internal/api/handler/space" + "github.com/harness/gitness/internal/api/handler/system" + "github.com/harness/gitness/internal/api/handler/user" + "github.com/harness/gitness/internal/api/middleware/repo" + "github.com/harness/gitness/internal/api/middleware/space" + "github.com/harness/gitness/types" "github.com/harness/gitness/internal/api/guard" - "github.com/harness/gitness/internal/api/handler/account" - handler_repo "github.com/harness/gitness/internal/api/handler/repo" - handler_space "github.com/harness/gitness/internal/api/handler/space" - "github.com/harness/gitness/internal/api/handler/system" - "github.com/harness/gitness/internal/api/handler/user" "github.com/harness/gitness/internal/api/middleware/accesslog" - middleware_authn "github.com/harness/gitness/internal/api/middleware/authn" + middlewareauthn "github.com/harness/gitness/internal/api/middleware/authn" "github.com/harness/gitness/internal/api/middleware/encode" - "github.com/harness/gitness/internal/api/middleware/repo" - "github.com/harness/gitness/internal/api/middleware/space" "github.com/harness/gitness/internal/api/request" "github.com/harness/gitness/internal/auth/authn" "github.com/harness/gitness/internal/auth/authz" @@ -64,7 +65,7 @@ func newAPIHandler( r.Use(corsHandler(config)) // for now always attempt auth - enforced per operation - r.Use(middleware_authn.Attempt(authenticator)) + r.Use(middlewareauthn.Attempt(authenticator)) r.Route("/v1", func(r chi.Router) { setupRoutesV1(r, systemStore, userStore, spaceStore, repoStore, authenticator, g) @@ -93,75 +94,79 @@ func corsHandler(config *types.Config) func(http.Handler) http.Handler { ).Handler } -func setupRoutesV1( - r chi.Router, - systemStore store.SystemStore, - userStore store.UserStore, - spaceStore store.SpaceStore, - repoStore store.RepoStore, - _ authn.Authenticator, - guard *guard.Guard) { - // SPACES +func setupRoutesV1(r chi.Router, systemStore store.SystemStore, userStore store.UserStore, spaceStore store.SpaceStore, + repoStore store.RepoStore, _ authn.Authenticator, guard *guard.Guard) { + setupSpaces(r, spaceStore, repoStore, guard) + setupRepos(r, spaceStore, repoStore, guard) + setupUsers(r, userStore, guard) + setupAdmin(r, guard) + setupAuth(r, userStore, systemStore) + setupSystem(r) +} + +func setupSpaces(r chi.Router, spaceStore store.SpaceStore, repoStore store.RepoStore, guard *guard.Guard) { r.Route("/spaces", func(r chi.Router) { // Create takes path and parentId via body, not uri - r.Post("/", handler_space.HandleCreate(guard, spaceStore)) + r.Post("/", handlerspace.HandleCreate(guard, spaceStore)) r.Route(fmt.Sprintf("/{%s}", request.SpaceRefParamName), func(r chi.Router) { // resolves the space and stores in the context r.Use(space.Required(spaceStore)) // space operations - r.Get("/", handler_space.HandleFind(guard, spaceStore)) - r.Put("/", handler_space.HandleUpdate(guard, spaceStore)) - r.Delete("/", handler_space.HandleDelete(guard, spaceStore)) + r.Get("/", handlerspace.HandleFind(guard, spaceStore)) + r.Put("/", handlerspace.HandleUpdate(guard, spaceStore)) + r.Delete("/", handlerspace.HandleDelete(guard, spaceStore)) - r.Post("/move", handler_space.HandleMove(guard, spaceStore)) - r.Get("/spaces", handler_space.HandleList(guard, spaceStore)) - r.Get("/repos", handler_space.HandleListRepos(guard, repoStore)) + r.Post("/move", handlerspace.HandleMove(guard, spaceStore)) + r.Get("/spaces", handlerspace.HandleList(guard, spaceStore)) + r.Get("/repos", handlerspace.HandleListRepos(guard, repoStore)) // Child collections r.Route("/paths", func(r chi.Router) { - r.Get("/", handler_space.HandleListPaths(guard, spaceStore)) - r.Post("/", handler_space.HandleCreatePath(guard, spaceStore)) + r.Get("/", handlerspace.HandleListPaths(guard, spaceStore)) + r.Post("/", handlerspace.HandleCreatePath(guard, spaceStore)) // per path operations r.Route(fmt.Sprintf("/{%s}", request.PathIDParamName), func(r chi.Router) { - r.Delete("/", handler_space.HandleDeletePath(guard, spaceStore)) + r.Delete("/", handlerspace.HandleDeletePath(guard, spaceStore)) }) }) }) }) +} - // REPOS +func setupRepos(r chi.Router, spaceStore store.SpaceStore, repoStore store.RepoStore, guard *guard.Guard) { r.Route("/repos", func(r chi.Router) { // Create takes path and parentId via body, not uri - r.Post("/", handler_repo.HandleCreate(guard, spaceStore, repoStore)) + r.Post("/", handlerrepo.HandleCreate(guard, spaceStore, repoStore)) r.Route(fmt.Sprintf("/{%s}", request.RepoRefParamName), func(r chi.Router) { // resolves the repo and stores in the context r.Use(repo.Required(repoStore)) // repo level operations - r.Get("/", handler_repo.HandleFind(guard, repoStore)) - r.Put("/", handler_repo.HandleUpdate(guard, repoStore)) - r.Delete("/", handler_repo.HandleDelete(guard, repoStore)) + r.Get("/", handlerrepo.HandleFind(guard, repoStore)) + r.Put("/", handlerrepo.HandleUpdate(guard, repoStore)) + r.Delete("/", handlerrepo.HandleDelete(guard, repoStore)) - r.Post("/move", handler_repo.HandleMove(guard, repoStore, spaceStore)) + r.Post("/move", handlerrepo.HandleMove(guard, repoStore, spaceStore)) // Child collections r.Route("/paths", func(r chi.Router) { - r.Get("/", handler_repo.HandleListPaths(guard, repoStore)) - r.Post("/", handler_repo.HandleCreatePath(guard, repoStore)) + r.Get("/", handlerrepo.HandleListPaths(guard, repoStore)) + r.Post("/", handlerrepo.HandleCreatePath(guard, repoStore)) // per path operations r.Route(fmt.Sprintf("/{%s}", request.PathIDParamName), func(r chi.Router) { - r.Delete("/", handler_repo.HandleDeletePath(guard, repoStore)) + r.Delete("/", handlerrepo.HandleDeletePath(guard, repoStore)) }) }) }) }) +} - // USER - SELF OPERATIONS +func setupUsers(r chi.Router, userStore store.UserStore, guard *guard.Guard) { r.Route("/user", func(r chi.Router) { // enforce user authenticated r.Use(guard.EnforceAuthenticated) @@ -170,8 +175,16 @@ func setupRoutesV1( r.Patch("/", user.HandleUpdate(userStore)) r.Post("/token", user.HandleToken(userStore)) }) +} - // USERS - ADMIN OPERATIONS +func setupSystem(r chi.Router) { + r.Route("/system", func(r chi.Router) { + r.Get("/health", system.HandleHealth) + r.Get("/version", system.HandleVersion) + }) +} + +func setupAdmin(r chi.Router, guard *guard.Guard) { r.Route("/users", func(r chi.Router) { // enforce system admin r.Use(guard.EnforceAdmin) @@ -191,14 +204,9 @@ func setupRoutesV1( }) }) }) +} - // SYSTEM MGMT ENDPOINTS - r.Route("/system", func(r chi.Router) { - r.Get("/health", system.HandleHealth) - r.Get("/version", system.HandleVersion) - }) - - // USER LOGIN & REGISTRATION +func setupAuth(r chi.Router, userStore store.UserStore, systemStore store.SystemStore) { r.Post("/login", account.HandleLogin(userStore, systemStore)) r.Post("/register", account.HandleRegister(userStore, systemStore)) } diff --git a/internal/store/database/path.go b/internal/store/database/path.go index 39fe4583f..4dcf7b17c 100644 --- a/internal/store/database/path.go +++ b/internal/store/database/path.go @@ -269,6 +269,8 @@ func ListPaths(ctx context.Context, db *sqlx.DB, targetType enum.PathTargetType, stmt = stmt.OrderBy("path_id " + opts.Order.String()) case enum.PathAttrPath: stmt = stmt.OrderBy("path_value" + opts.Order.String()) + case enum.PathAttrNone: + // no sorting required } sql, _, err := stmt.ToSql() diff --git a/internal/store/database/repo.go b/internal/store/database/repo.go index d3af6c653..c68b5da4e 100644 --- a/internal/store/database/repo.go +++ b/internal/store/database/repo.go @@ -258,6 +258,8 @@ func (s *RepoStore) List(ctx context.Context, spaceID int64, opts *types.RepoFil stmt = stmt.OrderBy("repo_displayName " + opts.Order.String()) case enum.RepoAttrPath: stmt = stmt.OrderBy("repo_path " + opts.Order.String()) + case enum.RepoAttrNone: + // no order need here } sql, _, err := stmt.ToSql() diff --git a/types/enum/path.go b/types/enum/path.go index 6348952bf..5e00e8146 100644 --- a/types/enum/path.go +++ b/types/enum/path.go @@ -38,17 +38,27 @@ const ( PathAttrUpdated ) +const ( + id = "id" + path = "path" + name = "name" + created = "created" + createdAt = "created_at" + updated = "updated" + updatedAt = "updated_at" +) + // ParsePathAttr parses the path attribute string // and returns the equivalent enumeration. func ParsePathAttr(s string) PathAttr { switch strings.ToLower(s) { - case "id": + case id: return PathAttrID - case "path": + case path: return PathAttrPath - case "created", "created_at": + case created, createdAt: return PathAttrCreated - case "updated", "updated_at": + case updated, updatedAt: return PathAttrUpdated default: return PathAttrNone diff --git a/types/enum/repo.go b/types/enum/repo.go index 476a804dd..112150a89 100644 --- a/types/enum/repo.go +++ b/types/enum/repo.go @@ -24,17 +24,17 @@ const ( // and returns the equivalent enumeration. func ParseRepoAtrr(s string) RepoAttr { switch strings.ToLower(s) { - case "id": + case id: return RepoAttrID - case "name": + case name: return RepoAttrName - case "path": + case path: return RepoAttrPath case "displayName": return RepoAttrDisplayName - case "created", "created_at": + case created, createdAt: return RepoAttrCreated - case "updated", "updated_at": + case updated, updatedAt: return RepoAttrUpdated default: return RepoAttrNone