mirror of
https://github.com/shankar0123/certctl.git
synced 2026-06-07 16:41:36 +00:00
M-2 PR-C: Collapse Policy/Profile/Owner/Team services to ctx-first signatures
- Add ctx first param to 21 service-layer handler-interface methods
across policy.go (6), profile.go (5), owner.go (5), team.go (5)
- Replace 24 context.Background() call sites with received ctx; use
context.WithoutCancel(ctx) for subsidiary audit-recording ops to
preserve fire-and-forget audit semantics without inheriting caller
cancellation
- Add ctx first param to 21 handler-interface method signatures across
policies.go (6), profiles.go (5), owners.go (5), teams.go (5)
- Thread r.Context() through 21 HTTP handler sites (ListPolicies,
GetPolicy, CreatePolicy, UpdatePolicy, DeletePolicy, ListViolations,
ListProfiles, GetProfile, CreateProfile, UpdateProfile, DeleteProfile,
ListOwners, GetOwner, CreateOwner, UpdateOwner, DeleteOwner,
ListTeams, GetTeam, CreateTeam, UpdateTeam, DeleteTeam)
- Update MockPolicyService/MockProfileService/MockOwnerService/
MockTeamService mock method impls with _ context.Context first param
(Fn fields unchanged — closures do not need ctx); update mock impls
in integration/lifecycle_test.go for all four services
- Update 12 service-layer test callsites (policy_test.go ×2,
owner_test.go ×5, team_test.go ×5, profile_test.go ×13) to pass
context.Background() at the call site
Audit complete. Commit: 1f6cf0eafa. Sections: 12. Findings: 2/7/10/4/6.
This commit is contained in:
@@ -2,6 +2,7 @@ package handler
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
@@ -20,35 +21,35 @@ type MockOwnerService struct {
|
||||
DeleteOwnerFn func(id string) error
|
||||
}
|
||||
|
||||
func (m *MockOwnerService) ListOwners(page, perPage int) ([]domain.Owner, int64, error) {
|
||||
func (m *MockOwnerService) ListOwners(_ context.Context, page, perPage int) ([]domain.Owner, int64, error) {
|
||||
if m.ListOwnersFn != nil {
|
||||
return m.ListOwnersFn(page, perPage)
|
||||
}
|
||||
return nil, 0, nil
|
||||
}
|
||||
|
||||
func (m *MockOwnerService) GetOwner(id string) (*domain.Owner, error) {
|
||||
func (m *MockOwnerService) GetOwner(_ context.Context, id string) (*domain.Owner, error) {
|
||||
if m.GetOwnerFn != nil {
|
||||
return m.GetOwnerFn(id)
|
||||
}
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func (m *MockOwnerService) CreateOwner(owner domain.Owner) (*domain.Owner, error) {
|
||||
func (m *MockOwnerService) CreateOwner(_ context.Context, owner domain.Owner) (*domain.Owner, error) {
|
||||
if m.CreateOwnerFn != nil {
|
||||
return m.CreateOwnerFn(owner)
|
||||
}
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func (m *MockOwnerService) UpdateOwner(id string, owner domain.Owner) (*domain.Owner, error) {
|
||||
func (m *MockOwnerService) UpdateOwner(_ context.Context, id string, owner domain.Owner) (*domain.Owner, error) {
|
||||
if m.UpdateOwnerFn != nil {
|
||||
return m.UpdateOwnerFn(id, owner)
|
||||
}
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func (m *MockOwnerService) DeleteOwner(id string) error {
|
||||
func (m *MockOwnerService) DeleteOwner(_ context.Context, id string) error {
|
||||
if m.DeleteOwnerFn != nil {
|
||||
return m.DeleteOwnerFn(id)
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"strconv"
|
||||
@@ -12,11 +13,11 @@ import (
|
||||
|
||||
// OwnerService defines the service interface for owner operations.
|
||||
type OwnerService interface {
|
||||
ListOwners(page, perPage int) ([]domain.Owner, int64, error)
|
||||
GetOwner(id string) (*domain.Owner, error)
|
||||
CreateOwner(owner domain.Owner) (*domain.Owner, error)
|
||||
UpdateOwner(id string, owner domain.Owner) (*domain.Owner, error)
|
||||
DeleteOwner(id string) error
|
||||
ListOwners(ctx context.Context, page, perPage int) ([]domain.Owner, int64, error)
|
||||
GetOwner(ctx context.Context, id string) (*domain.Owner, error)
|
||||
CreateOwner(ctx context.Context, owner domain.Owner) (*domain.Owner, error)
|
||||
UpdateOwner(ctx context.Context, id string, owner domain.Owner) (*domain.Owner, error)
|
||||
DeleteOwner(ctx context.Context, id string) error
|
||||
}
|
||||
|
||||
// OwnerHandler handles HTTP requests for owner operations.
|
||||
@@ -53,7 +54,7 @@ func (h OwnerHandler) ListOwners(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
}
|
||||
|
||||
owners, total, err := h.svc.ListOwners(page, perPage)
|
||||
owners, total, err := h.svc.ListOwners(r.Context(), page, perPage)
|
||||
if err != nil {
|
||||
ErrorWithRequestID(w, http.StatusInternalServerError, "Failed to list owners", requestID)
|
||||
return
|
||||
@@ -87,7 +88,7 @@ func (h OwnerHandler) GetOwner(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
id = parts[0]
|
||||
|
||||
owner, err := h.svc.GetOwner(id)
|
||||
owner, err := h.svc.GetOwner(r.Context(), id)
|
||||
if err != nil {
|
||||
ErrorWithRequestID(w, http.StatusNotFound, "Owner not found", requestID)
|
||||
return
|
||||
@@ -122,7 +123,7 @@ func (h OwnerHandler) CreateOwner(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
created, err := h.svc.CreateOwner(owner)
|
||||
created, err := h.svc.CreateOwner(r.Context(), owner)
|
||||
if err != nil {
|
||||
ErrorWithRequestID(w, http.StatusInternalServerError, "Failed to create owner", requestID)
|
||||
return
|
||||
@@ -155,7 +156,7 @@ func (h OwnerHandler) UpdateOwner(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
updated, err := h.svc.UpdateOwner(id, owner)
|
||||
updated, err := h.svc.UpdateOwner(r.Context(), id, owner)
|
||||
if err != nil {
|
||||
ErrorWithRequestID(w, http.StatusInternalServerError, "Failed to update owner", requestID)
|
||||
return
|
||||
@@ -182,7 +183,7 @@ func (h OwnerHandler) DeleteOwner(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
id = parts[0]
|
||||
|
||||
if err := h.svc.DeleteOwner(id); err != nil {
|
||||
if err := h.svc.DeleteOwner(r.Context(), id); err != nil {
|
||||
if strings.Contains(err.Error(), "violates foreign key") || strings.Contains(err.Error(), "RESTRICT") {
|
||||
ErrorWithRequestID(w, http.StatusConflict, "Cannot delete owner: certificates are still assigned to this owner", requestID)
|
||||
} else if strings.Contains(err.Error(), "not found") {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"strconv"
|
||||
@@ -12,12 +13,12 @@ import (
|
||||
|
||||
// PolicyService defines the service interface for policy rule operations.
|
||||
type PolicyService interface {
|
||||
ListPolicies(page, perPage int) ([]domain.PolicyRule, int64, error)
|
||||
GetPolicy(id string) (*domain.PolicyRule, error)
|
||||
CreatePolicy(policy domain.PolicyRule) (*domain.PolicyRule, error)
|
||||
UpdatePolicy(id string, policy domain.PolicyRule) (*domain.PolicyRule, error)
|
||||
DeletePolicy(id string) error
|
||||
ListViolations(policyID string, page, perPage int) ([]domain.PolicyViolation, int64, error)
|
||||
ListPolicies(ctx context.Context, page, perPage int) ([]domain.PolicyRule, int64, error)
|
||||
GetPolicy(ctx context.Context, id string) (*domain.PolicyRule, error)
|
||||
CreatePolicy(ctx context.Context, policy domain.PolicyRule) (*domain.PolicyRule, error)
|
||||
UpdatePolicy(ctx context.Context, id string, policy domain.PolicyRule) (*domain.PolicyRule, error)
|
||||
DeletePolicy(ctx context.Context, id string) error
|
||||
ListViolations(ctx context.Context, policyID string, page, perPage int) ([]domain.PolicyViolation, int64, error)
|
||||
}
|
||||
|
||||
// PolicyHandler handles HTTP requests for policy rule operations.
|
||||
@@ -54,7 +55,7 @@ func (h PolicyHandler) ListPolicies(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
}
|
||||
|
||||
policies, total, err := h.svc.ListPolicies(page, perPage)
|
||||
policies, total, err := h.svc.ListPolicies(r.Context(), page, perPage)
|
||||
if err != nil {
|
||||
ErrorWithRequestID(w, http.StatusInternalServerError, "Failed to list policies", requestID)
|
||||
return
|
||||
@@ -88,7 +89,7 @@ func (h PolicyHandler) GetPolicy(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
id = parts[0]
|
||||
|
||||
policy, err := h.svc.GetPolicy(id)
|
||||
policy, err := h.svc.GetPolicy(r.Context(), id)
|
||||
if err != nil {
|
||||
ErrorWithRequestID(w, http.StatusNotFound, "Policy not found", requestID)
|
||||
return
|
||||
@@ -127,7 +128,7 @@ func (h PolicyHandler) CreatePolicy(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
created, err := h.svc.CreatePolicy(policy)
|
||||
created, err := h.svc.CreatePolicy(r.Context(), policy)
|
||||
if err != nil {
|
||||
ErrorWithRequestID(w, http.StatusInternalServerError, "Failed to create policy", requestID)
|
||||
return
|
||||
@@ -174,7 +175,7 @@ func (h PolicyHandler) UpdatePolicy(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
}
|
||||
|
||||
updated, err := h.svc.UpdatePolicy(id, policy)
|
||||
updated, err := h.svc.UpdatePolicy(r.Context(), id, policy)
|
||||
if err != nil {
|
||||
ErrorWithRequestID(w, http.StatusInternalServerError, "Failed to update policy", requestID)
|
||||
return
|
||||
@@ -201,7 +202,7 @@ func (h PolicyHandler) DeletePolicy(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
id = parts[0]
|
||||
|
||||
if err := h.svc.DeletePolicy(id); err != nil {
|
||||
if err := h.svc.DeletePolicy(r.Context(), id); err != nil {
|
||||
ErrorWithRequestID(w, http.StatusInternalServerError, "Failed to delete policy", requestID)
|
||||
return
|
||||
}
|
||||
@@ -242,7 +243,7 @@ func (h PolicyHandler) ListViolations(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
}
|
||||
|
||||
violations, total, err := h.svc.ListViolations(policyID, page, perPage)
|
||||
violations, total, err := h.svc.ListViolations(r.Context(), policyID, page, perPage)
|
||||
if err != nil {
|
||||
ErrorWithRequestID(w, http.StatusInternalServerError, "Failed to list violations", requestID)
|
||||
return
|
||||
|
||||
@@ -2,6 +2,7 @@ package handler
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
@@ -21,42 +22,42 @@ type MockPolicyService struct {
|
||||
ListViolationsFn func(policyID string, page, perPage int) ([]domain.PolicyViolation, int64, error)
|
||||
}
|
||||
|
||||
func (m *MockPolicyService) ListPolicies(page, perPage int) ([]domain.PolicyRule, int64, error) {
|
||||
func (m *MockPolicyService) ListPolicies(_ context.Context, page, perPage int) ([]domain.PolicyRule, int64, error) {
|
||||
if m.ListPoliciesFn != nil {
|
||||
return m.ListPoliciesFn(page, perPage)
|
||||
}
|
||||
return nil, 0, nil
|
||||
}
|
||||
|
||||
func (m *MockPolicyService) GetPolicy(id string) (*domain.PolicyRule, error) {
|
||||
func (m *MockPolicyService) GetPolicy(_ context.Context, id string) (*domain.PolicyRule, error) {
|
||||
if m.GetPolicyFn != nil {
|
||||
return m.GetPolicyFn(id)
|
||||
}
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func (m *MockPolicyService) CreatePolicy(policy domain.PolicyRule) (*domain.PolicyRule, error) {
|
||||
func (m *MockPolicyService) CreatePolicy(_ context.Context, policy domain.PolicyRule) (*domain.PolicyRule, error) {
|
||||
if m.CreatePolicyFn != nil {
|
||||
return m.CreatePolicyFn(policy)
|
||||
}
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func (m *MockPolicyService) UpdatePolicy(id string, policy domain.PolicyRule) (*domain.PolicyRule, error) {
|
||||
func (m *MockPolicyService) UpdatePolicy(_ context.Context, id string, policy domain.PolicyRule) (*domain.PolicyRule, error) {
|
||||
if m.UpdatePolicyFn != nil {
|
||||
return m.UpdatePolicyFn(id, policy)
|
||||
}
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func (m *MockPolicyService) DeletePolicy(id string) error {
|
||||
func (m *MockPolicyService) DeletePolicy(_ context.Context, id string) error {
|
||||
if m.DeletePolicyFn != nil {
|
||||
return m.DeletePolicyFn(id)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *MockPolicyService) ListViolations(policyID string, page, perPage int) ([]domain.PolicyViolation, int64, error) {
|
||||
func (m *MockPolicyService) ListViolations(_ context.Context, policyID string, page, perPage int) ([]domain.PolicyViolation, int64, error) {
|
||||
if m.ListViolationsFn != nil {
|
||||
return m.ListViolationsFn(policyID, page, perPage)
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package handler
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
@@ -20,35 +21,35 @@ type MockProfileService struct {
|
||||
DeleteProfileFn func(id string) error
|
||||
}
|
||||
|
||||
func (m *MockProfileService) ListProfiles(page, perPage int) ([]domain.CertificateProfile, int64, error) {
|
||||
func (m *MockProfileService) ListProfiles(_ context.Context, page, perPage int) ([]domain.CertificateProfile, int64, error) {
|
||||
if m.ListProfilesFn != nil {
|
||||
return m.ListProfilesFn(page, perPage)
|
||||
}
|
||||
return nil, 0, nil
|
||||
}
|
||||
|
||||
func (m *MockProfileService) GetProfile(id string) (*domain.CertificateProfile, error) {
|
||||
func (m *MockProfileService) GetProfile(_ context.Context, id string) (*domain.CertificateProfile, error) {
|
||||
if m.GetProfileFn != nil {
|
||||
return m.GetProfileFn(id)
|
||||
}
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func (m *MockProfileService) CreateProfile(profile domain.CertificateProfile) (*domain.CertificateProfile, error) {
|
||||
func (m *MockProfileService) CreateProfile(_ context.Context, profile domain.CertificateProfile) (*domain.CertificateProfile, error) {
|
||||
if m.CreateProfileFn != nil {
|
||||
return m.CreateProfileFn(profile)
|
||||
}
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func (m *MockProfileService) UpdateProfile(id string, profile domain.CertificateProfile) (*domain.CertificateProfile, error) {
|
||||
func (m *MockProfileService) UpdateProfile(_ context.Context, id string, profile domain.CertificateProfile) (*domain.CertificateProfile, error) {
|
||||
if m.UpdateProfileFn != nil {
|
||||
return m.UpdateProfileFn(id, profile)
|
||||
}
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func (m *MockProfileService) DeleteProfile(id string) error {
|
||||
func (m *MockProfileService) DeleteProfile(_ context.Context, id string) error {
|
||||
if m.DeleteProfileFn != nil {
|
||||
return m.DeleteProfileFn(id)
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"strconv"
|
||||
@@ -12,11 +13,11 @@ import (
|
||||
|
||||
// ProfileService defines the service interface for certificate profile operations.
|
||||
type ProfileService interface {
|
||||
ListProfiles(page, perPage int) ([]domain.CertificateProfile, int64, error)
|
||||
GetProfile(id string) (*domain.CertificateProfile, error)
|
||||
CreateProfile(profile domain.CertificateProfile) (*domain.CertificateProfile, error)
|
||||
UpdateProfile(id string, profile domain.CertificateProfile) (*domain.CertificateProfile, error)
|
||||
DeleteProfile(id string) error
|
||||
ListProfiles(ctx context.Context, page, perPage int) ([]domain.CertificateProfile, int64, error)
|
||||
GetProfile(ctx context.Context, id string) (*domain.CertificateProfile, error)
|
||||
CreateProfile(ctx context.Context, profile domain.CertificateProfile) (*domain.CertificateProfile, error)
|
||||
UpdateProfile(ctx context.Context, id string, profile domain.CertificateProfile) (*domain.CertificateProfile, error)
|
||||
DeleteProfile(ctx context.Context, id string) error
|
||||
}
|
||||
|
||||
// ProfileHandler handles HTTP requests for certificate profile operations.
|
||||
@@ -53,7 +54,7 @@ func (h ProfileHandler) ListProfiles(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
}
|
||||
|
||||
profiles, total, err := h.svc.ListProfiles(page, perPage)
|
||||
profiles, total, err := h.svc.ListProfiles(r.Context(), page, perPage)
|
||||
if err != nil {
|
||||
ErrorWithRequestID(w, http.StatusInternalServerError, "Failed to list profiles", requestID)
|
||||
return
|
||||
@@ -85,7 +86,7 @@ func (h ProfileHandler) GetProfile(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
profile, err := h.svc.GetProfile(id)
|
||||
profile, err := h.svc.GetProfile(r.Context(), id)
|
||||
if err != nil {
|
||||
ErrorWithRequestID(w, http.StatusNotFound, "Profile not found", requestID)
|
||||
return
|
||||
@@ -120,7 +121,7 @@ func (h ProfileHandler) CreateProfile(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
created, err := h.svc.CreateProfile(profile)
|
||||
created, err := h.svc.CreateProfile(r.Context(), profile)
|
||||
if err != nil {
|
||||
// Check if it's a validation error from the service
|
||||
if strings.Contains(err.Error(), "invalid") || strings.Contains(err.Error(), "required") ||
|
||||
@@ -159,7 +160,7 @@ func (h ProfileHandler) UpdateProfile(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
updated, err := h.svc.UpdateProfile(id, profile)
|
||||
updated, err := h.svc.UpdateProfile(r.Context(), id, profile)
|
||||
if err != nil {
|
||||
if strings.Contains(err.Error(), "not found") {
|
||||
ErrorWithRequestID(w, http.StatusNotFound, "Profile not found", requestID)
|
||||
@@ -193,7 +194,7 @@ func (h ProfileHandler) DeleteProfile(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
if err := h.svc.DeleteProfile(id); err != nil {
|
||||
if err := h.svc.DeleteProfile(r.Context(), id); err != nil {
|
||||
if strings.Contains(err.Error(), "not found") {
|
||||
ErrorWithRequestID(w, http.StatusNotFound, "Profile not found", requestID)
|
||||
return
|
||||
|
||||
@@ -2,6 +2,7 @@ package handler
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"net/http/httptest"
|
||||
@@ -20,35 +21,35 @@ type MockTeamService struct {
|
||||
DeleteTeamFn func(id string) error
|
||||
}
|
||||
|
||||
func (m *MockTeamService) ListTeams(page, perPage int) ([]domain.Team, int64, error) {
|
||||
func (m *MockTeamService) ListTeams(_ context.Context, page, perPage int) ([]domain.Team, int64, error) {
|
||||
if m.ListTeamsFn != nil {
|
||||
return m.ListTeamsFn(page, perPage)
|
||||
}
|
||||
return nil, 0, nil
|
||||
}
|
||||
|
||||
func (m *MockTeamService) GetTeam(id string) (*domain.Team, error) {
|
||||
func (m *MockTeamService) GetTeam(_ context.Context, id string) (*domain.Team, error) {
|
||||
if m.GetTeamFn != nil {
|
||||
return m.GetTeamFn(id)
|
||||
}
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func (m *MockTeamService) CreateTeam(team domain.Team) (*domain.Team, error) {
|
||||
func (m *MockTeamService) CreateTeam(_ context.Context, team domain.Team) (*domain.Team, error) {
|
||||
if m.CreateTeamFn != nil {
|
||||
return m.CreateTeamFn(team)
|
||||
}
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func (m *MockTeamService) UpdateTeam(id string, team domain.Team) (*domain.Team, error) {
|
||||
func (m *MockTeamService) UpdateTeam(_ context.Context, id string, team domain.Team) (*domain.Team, error) {
|
||||
if m.UpdateTeamFn != nil {
|
||||
return m.UpdateTeamFn(id, team)
|
||||
}
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
func (m *MockTeamService) DeleteTeam(id string) error {
|
||||
func (m *MockTeamService) DeleteTeam(_ context.Context, id string) error {
|
||||
if m.DeleteTeamFn != nil {
|
||||
return m.DeleteTeamFn(id)
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"net/http"
|
||||
"strconv"
|
||||
@@ -12,11 +13,11 @@ import (
|
||||
|
||||
// TeamService defines the service interface for team operations.
|
||||
type TeamService interface {
|
||||
ListTeams(page, perPage int) ([]domain.Team, int64, error)
|
||||
GetTeam(id string) (*domain.Team, error)
|
||||
CreateTeam(team domain.Team) (*domain.Team, error)
|
||||
UpdateTeam(id string, team domain.Team) (*domain.Team, error)
|
||||
DeleteTeam(id string) error
|
||||
ListTeams(ctx context.Context, page, perPage int) ([]domain.Team, int64, error)
|
||||
GetTeam(ctx context.Context, id string) (*domain.Team, error)
|
||||
CreateTeam(ctx context.Context, team domain.Team) (*domain.Team, error)
|
||||
UpdateTeam(ctx context.Context, id string, team domain.Team) (*domain.Team, error)
|
||||
DeleteTeam(ctx context.Context, id string) error
|
||||
}
|
||||
|
||||
// TeamHandler handles HTTP requests for team operations.
|
||||
@@ -53,7 +54,7 @@ func (h TeamHandler) ListTeams(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
}
|
||||
|
||||
teams, total, err := h.svc.ListTeams(page, perPage)
|
||||
teams, total, err := h.svc.ListTeams(r.Context(), page, perPage)
|
||||
if err != nil {
|
||||
ErrorWithRequestID(w, http.StatusInternalServerError, "Failed to list teams", requestID)
|
||||
return
|
||||
@@ -87,7 +88,7 @@ func (h TeamHandler) GetTeam(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
id = parts[0]
|
||||
|
||||
team, err := h.svc.GetTeam(id)
|
||||
team, err := h.svc.GetTeam(r.Context(), id)
|
||||
if err != nil {
|
||||
ErrorWithRequestID(w, http.StatusNotFound, "Team not found", requestID)
|
||||
return
|
||||
@@ -122,7 +123,7 @@ func (h TeamHandler) CreateTeam(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
created, err := h.svc.CreateTeam(team)
|
||||
created, err := h.svc.CreateTeam(r.Context(), team)
|
||||
if err != nil {
|
||||
ErrorWithRequestID(w, http.StatusInternalServerError, "Failed to create team", requestID)
|
||||
return
|
||||
@@ -155,7 +156,7 @@ func (h TeamHandler) UpdateTeam(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
updated, err := h.svc.UpdateTeam(id, team)
|
||||
updated, err := h.svc.UpdateTeam(r.Context(), id, team)
|
||||
if err != nil {
|
||||
ErrorWithRequestID(w, http.StatusInternalServerError, "Failed to update team", requestID)
|
||||
return
|
||||
@@ -182,7 +183,7 @@ func (h TeamHandler) DeleteTeam(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
id = parts[0]
|
||||
|
||||
if err := h.svc.DeleteTeam(id); err != nil {
|
||||
if err := h.svc.DeleteTeam(r.Context(), id); err != nil {
|
||||
ErrorWithRequestID(w, http.StatusInternalServerError, "Failed to delete team", requestID)
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user