Fix naming of school membership endpoints

It's /education/school/{id}/users not members
This commit is contained in:
Ralf Haferkamp
2022-12-15 20:52:11 +01:00
committed by Ralf Haferkamp
parent 336f128e71
commit 5095b35822
10 changed files with 109 additions and 109 deletions

View File

@@ -42,12 +42,12 @@ type EducationBackend interface {
GetEducationSchool(ctx context.Context, nameOrID string, queryParam url.Values) (*libregraph.EducationSchool, error)
// GetEducationSchools lists all schools
GetEducationSchools(ctx context.Context, queryParam url.Values) ([]*libregraph.EducationSchool, error)
// GetEducationSchoolMembers lists all members of a school
GetEducationSchoolMembers(ctx context.Context, id string) ([]*libregraph.EducationUser, error)
// AddMembersToEducationSchool adds new members (reference by a slice of IDs) to supplied school in the identity backend.
AddMembersToEducationSchool(ctx context.Context, schoolID string, memberID []string) error
// RemoveMemberFromEducationSchool removes a single member (by ID) from a school
RemoveMemberFromEducationSchool(ctx context.Context, schoolID string, memberID string) error
// GetEducationSchoolUsers lists all members of a school
GetEducationSchoolUsers(ctx context.Context, id string) ([]*libregraph.EducationUser, error)
// AddUsersToEducationSchool adds new members (reference by a slice of IDs) to supplied school in the identity backend.
AddUsersToEducationSchool(ctx context.Context, schoolID string, memberID []string) error
// RemoveUserFromEducationSchool removes a single member (by ID) from a school
RemoveUserFromEducationSchool(ctx context.Context, schoolID string, memberID string) error
// CreateEducationUser creates a given education user in the identity backend.
CreateEducationUser(ctx context.Context, user libregraph.EducationUser) (*libregraph.EducationUser, error)

View File

@@ -30,18 +30,18 @@ func (i *ErrEducationBackend) GetEducationSchools(ctx context.Context, queryPara
return nil, errNotImplemented
}
// GetEducationSchoolMembers implements the EducationBackend interface for the ErrEducationBackend backend.
func (i *ErrEducationBackend) GetEducationSchoolMembers(ctx context.Context, id string) ([]*libregraph.EducationUser, error) {
// GetEducationSchoolUsers implements the EducationBackend interface for the ErrEducationBackend backend.
func (i *ErrEducationBackend) GetEducationSchoolUsers(ctx context.Context, id string) ([]*libregraph.EducationUser, error) {
return nil, errNotImplemented
}
// AddMembersToEducationSchool adds new members (reference by a slice of IDs) to supplied school in the identity backend.
func (i *ErrEducationBackend) AddMembersToEducationSchool(ctx context.Context, schoolID string, memberID []string) error {
// AddUsersToEducationSchool adds new members (reference by a slice of IDs) to supplied school in the identity backend.
func (i *ErrEducationBackend) AddUsersToEducationSchool(ctx context.Context, schoolID string, memberID []string) error {
return errNotImplemented
}
// RemoveMemberFromEducationSchool removes a single member (by ID) from a school
func (i *ErrEducationBackend) RemoveMemberFromEducationSchool(ctx context.Context, schoolID string, memberID string) error {
// RemoveUserFromEducationSchool removes a single member (by ID) from a school
func (i *ErrEducationBackend) RemoveUserFromEducationSchool(ctx context.Context, schoolID string, memberID string) error {
return errNotImplemented
}

View File

@@ -206,15 +206,15 @@ func (i *LDAP) GetEducationSchools(ctx context.Context, queryParam url.Values) (
return schools, nil
}
// GetEducationSchoolMembers implements the EducationBackend interface for the LDAP backend.
func (i *LDAP) GetEducationSchoolMembers(ctx context.Context, id string) ([]*libregraph.EducationUser, error) {
// GetEducationSchoolUsers implements the EducationBackend interface for the LDAP backend.
func (i *LDAP) GetEducationSchoolUsers(ctx context.Context, id string) ([]*libregraph.EducationUser, error) {
return nil, errNotImplemented
}
// AddMembersToEducationSchool adds new members (reference by a slice of IDs) to supplied school in the identity backend.
func (i *LDAP) AddMembersToEducationSchool(ctx context.Context, schoolID string, memberIDs []string) error {
// AddUsersToEducationSchool adds new members (reference by a slice of IDs) to supplied school in the identity backend.
func (i *LDAP) AddUsersToEducationSchool(ctx context.Context, schoolID string, memberIDs []string) error {
logger := i.logger.SubloggerWithRequestID(ctx)
logger.Debug().Str("backend", "ldap").Msg("AddMembersToEducationSchool")
logger.Debug().Str("backend", "ldap").Msg("AddUsersToEducationSchool")
schoolEntry, err := i.getSchoolByID(schoolID)
if err != nil {

View File

@@ -17,8 +17,8 @@ type EducationBackend struct {
mock.Mock
}
// AddMembersToEducationSchool provides a mock function with given fields: ctx, schoolID, memberID
func (_m *EducationBackend) AddMembersToEducationSchool(ctx context.Context, schoolID string, memberID []string) error {
// AddUsersToEducationSchool provides a mock function with given fields: ctx, schoolID, memberID
func (_m *EducationBackend) AddUsersToEducationSchool(ctx context.Context, schoolID string, memberID []string) error {
ret := _m.Called(ctx, schoolID, memberID)
var r0 error
@@ -128,8 +128,8 @@ func (_m *EducationBackend) GetEducationSchool(ctx context.Context, nameOrID str
return r0, r1
}
// GetEducationSchoolMembers provides a mock function with given fields: ctx, id
func (_m *EducationBackend) GetEducationSchoolMembers(ctx context.Context, id string) ([]*libregraph.EducationUser, error) {
// GetEducationSchoolUsers provides a mock function with given fields: ctx, id
func (_m *EducationBackend) GetEducationSchoolUsers(ctx context.Context, id string) ([]*libregraph.EducationUser, error) {
ret := _m.Called(ctx, id)
var r0 []*libregraph.EducationUser
@@ -220,8 +220,8 @@ func (_m *EducationBackend) GetEducationUsers(ctx context.Context, queryParam ur
return r0, r1
}
// RemoveMemberFromEducationSchool provides a mock function with given fields: ctx, schoolID, memberID
func (_m *EducationBackend) RemoveMemberFromEducationSchool(ctx context.Context, schoolID string, memberID string) error {
// RemoveUserFromEducationSchool provides a mock function with given fields: ctx, schoolID, memberID
func (_m *EducationBackend) RemoveUserFromEducationSchool(ctx context.Context, schoolID string, memberID string) error {
ret := _m.Called(ctx, schoolID, memberID)
var r0 error

View File

@@ -221,28 +221,28 @@ func (g Graph) DeleteEducationSchool(w http.ResponseWriter, r *http.Request) {
render.NoContent(w, r)
}
// GetEducationSchoolMembers implements the Service interface.
func (g Graph) GetEducationSchoolMembers(w http.ResponseWriter, r *http.Request) {
// GetEducationSchoolUsers implements the Service interface.
func (g Graph) GetEducationSchoolUsers(w http.ResponseWriter, r *http.Request) {
logger := g.logger.SubloggerWithRequestID(r.Context())
logger.Info().Msg("calling get school members")
logger.Info().Msg("calling get school users")
schoolID := chi.URLParam(r, "schoolID")
schoolID, err := url.PathUnescape(schoolID)
if err != nil {
logger.Debug().Str("id", schoolID).Msg("could not get school members: unescaping school id failed")
logger.Debug().Str("id", schoolID).Msg("could not get school users: unescaping school id failed")
errorcode.InvalidRequest.Render(w, r, http.StatusBadRequest, "unescaping school id failed")
return
}
if schoolID == "" {
logger.Debug().Msg("could not get school members: missing school id")
logger.Debug().Msg("could not get school users: missing school id")
errorcode.InvalidRequest.Render(w, r, http.StatusBadRequest, "missing school id")
return
}
logger.Debug().Str("id", schoolID).Msg("calling get school members on backend")
members, err := g.identityEducationBackend.GetEducationSchoolMembers(r.Context(), schoolID)
logger.Debug().Str("id", schoolID).Msg("calling get school users on backend")
users, err := g.identityEducationBackend.GetEducationSchoolUsers(r.Context(), schoolID)
if err != nil {
logger.Debug().Err(err).Msg("could not get school members: backend error")
logger.Debug().Err(err).Msg("could not get school users: backend error")
var errcode errorcode.Error
if errors.As(err, &errcode) {
errcode.Render(w, r)
@@ -253,13 +253,13 @@ func (g Graph) GetEducationSchoolMembers(w http.ResponseWriter, r *http.Request)
}
render.Status(r, http.StatusOK)
render.JSON(w, r, members)
render.JSON(w, r, users)
}
// PostEducationSchoolMember implements the Service interface.
func (g Graph) PostEducationSchoolMember(w http.ResponseWriter, r *http.Request) {
// PostEducationSchoolUser implements the Service interface.
func (g Graph) PostEducationSchoolUser(w http.ResponseWriter, r *http.Request) {
logger := g.logger.SubloggerWithRequestID(r.Context())
logger.Info().Msg("Calling post school member")
logger.Info().Msg("Calling post school user")
schoolID := chi.URLParam(r, "schoolID")
schoolID, err := url.PathUnescape(schoolID)
@@ -267,13 +267,13 @@ func (g Graph) PostEducationSchoolMember(w http.ResponseWriter, r *http.Request)
logger.Debug().
Err(err).
Str("id", schoolID).
Msg("could not add member to school: unescaping school id failed")
Msg("could not add user to school: unescaping school id failed")
errorcode.InvalidRequest.Render(w, r, http.StatusBadRequest, "unescaping school id failed")
return
}
if schoolID == "" {
logger.Debug().Msg("could not add school member: missing school id")
logger.Debug().Msg("could not add school user: missing school id")
errorcode.InvalidRequest.Render(w, r, http.StatusBadRequest, "missing school id")
return
}
@@ -283,35 +283,35 @@ func (g Graph) PostEducationSchoolMember(w http.ResponseWriter, r *http.Request)
logger.Debug().
Err(err).
Interface("body", r.Body).
Msg("could not add school member: invalid request body")
Msg("could not add school user: invalid request body")
errorcode.InvalidRequest.Render(w, r, http.StatusBadRequest, fmt.Sprintf("invalid request body: %s", err.Error()))
return
}
memberRefURL, ok := memberRef.GetOdataIdOk()
if !ok {
logger.Debug().Msg("could not add school member: @odata.id reference is missing")
logger.Debug().Msg("could not add school user: @odata.id reference is missing")
errorcode.InvalidRequest.Render(w, r, http.StatusBadRequest, "@odata.id reference is missing")
return
}
memberType, id, err := g.parseMemberRef(*memberRefURL)
if err != nil {
logger.Debug().Err(err).Msg("could not add school member: error parsing @odata.id url")
logger.Debug().Err(err).Msg("could not add school user: error parsing @odata.id url")
errorcode.InvalidRequest.Render(w, r, http.StatusBadRequest, "Error parsing @odata.id url")
return
}
// The MS Graph spec allows "directoryObject", "user", "school" and "organizational Contact"
// we restrict this to users for now. Might add Schools as members later
if memberType != "users" {
logger.Debug().Str("type", memberType).Msg("could not add school member: Only users are allowed as school members")
logger.Debug().Str("type", memberType).Msg("could not add school user: Only users are allowed as school members")
errorcode.InvalidRequest.Render(w, r, http.StatusBadRequest, "Only users are allowed as school members")
return
}
logger.Debug().Str("memberType", memberType).Str("id", id).Msg("calling add member on backend")
err = g.identityEducationBackend.AddMembersToEducationSchool(r.Context(), schoolID, []string{id})
logger.Debug().Str("memberType", memberType).Str("id", id).Msg("calling add user on backend")
err = g.identityEducationBackend.AddUsersToEducationSchool(r.Context(), schoolID, []string{id})
if err != nil {
logger.Debug().Err(err).Msg("could not add school member: backend error")
logger.Debug().Err(err).Msg("could not add school user: backend error")
var errcode errorcode.Error
if errors.As(err, &errcode) {
errcode.Render(w, r)
@@ -333,8 +333,8 @@ func (g Graph) PostEducationSchoolMember(w http.ResponseWriter, r *http.Request)
render.NoContent(w, r)
}
// DeleteEducationSchoolMember implements the Service interface.
func (g Graph) DeleteEducationSchoolMember(w http.ResponseWriter, r *http.Request) {
// DeleteEducationSchoolUser implements the Service interface.
func (g Graph) DeleteEducationSchoolUser(w http.ResponseWriter, r *http.Request) {
logger := g.logger.SubloggerWithRequestID(r.Context())
logger.Info().Msg("calling delete school member")
@@ -352,21 +352,21 @@ func (g Graph) DeleteEducationSchoolMember(w http.ResponseWriter, r *http.Reques
return
}
memberID := chi.URLParam(r, "memberID")
memberID, err = url.PathUnescape(memberID)
userID := chi.URLParam(r, "userID")
userID, err = url.PathUnescape(userID)
if err != nil {
logger.Debug().Err(err).Str("id", memberID).Msg("could not delete school member: unescaping member id failed")
logger.Debug().Err(err).Str("id", userID).Msg("could not delete school member: unescaping member id failed")
errorcode.InvalidRequest.Render(w, r, http.StatusBadRequest, "unescaping member id failed")
return
}
if memberID == "" {
if userID == "" {
logger.Debug().Msg("could not delete school member: missing member id")
errorcode.InvalidRequest.Render(w, r, http.StatusBadRequest, "missing member id")
return
}
logger.Debug().Str("schoolID", schoolID).Str("memberID", memberID).Msg("calling delete member on backend")
err = g.identityEducationBackend.RemoveMemberFromEducationSchool(r.Context(), schoolID, memberID)
logger.Debug().Str("schoolID", schoolID).Str("userID", userID).Msg("calling delete member on backend")
err = g.identityEducationBackend.RemoveUserFromEducationSchool(r.Context(), schoolID, userID)
if err != nil {
logger.Debug().Err(err).Msg("could not delete school member: backend error")
@@ -380,7 +380,7 @@ func (g Graph) DeleteEducationSchoolMember(w http.ResponseWriter, r *http.Reques
}
/* TODO requires reva changes
e := events.SchoolMemberRemoved{SchoolID: schoolID, UserID: memberID}
e := events.SchoolMemberRemoved{SchoolID: schoolID, UserID: userID}
if currentUser, ok := ctxpkg.ContextGetUser(r.Context()); ok {
e.Executant = currentUser.GetId()
}

View File

@@ -347,17 +347,17 @@ var _ = Describe("Schools", func() {
})
})
Describe("GetEducationSchoolMembers", func() {
Describe("GetEducationSchoolUsers", func() {
It("gets the list of members", func() {
user := libregraph.NewEducationUser()
user.SetId("user")
identityEducationBackend.On("GetEducationSchoolMembers", mock.Anything, mock.Anything, mock.Anything).Return([]*libregraph.EducationUser{user}, nil)
identityEducationBackend.On("GetEducationSchoolUsers", mock.Anything, mock.Anything, mock.Anything).Return([]*libregraph.EducationUser{user}, nil)
r := httptest.NewRequest(http.MethodGet, "/graph/v1.0/education/schools/{schoolID}/members", nil)
r := httptest.NewRequest(http.MethodGet, "/graph/v1.0/education/schools/{schoolID}/users", nil)
rctx := chi.NewRouteContext()
rctx.URLParams.Add("schoolID", *newSchool.Id)
r = r.WithContext(context.WithValue(ctxpkg.ContextSetUser(ctx, currentUser), chi.RouteCtxKey, rctx))
svc.GetEducationSchoolMembers(rr, r)
svc.GetEducationSchoolUsers(rr, r)
Expect(rr.Code).To(Equal(http.StatusOK))
data, err := io.ReadAll(rr.Body)
@@ -372,13 +372,13 @@ var _ = Describe("Schools", func() {
})
})
Describe("PostEducationSchoolMembers", func() {
Describe("PostEducationSchoolUsers", func() {
It("fails on invalid body", func() {
r := httptest.NewRequest(http.MethodPost, "/graph/v1.0/education/schools/{schoolID}/members", bytes.NewBufferString("{invalid"))
rctx := chi.NewRouteContext()
rctx.URLParams.Add("schoolID", *newSchool.Id)
r = r.WithContext(context.WithValue(ctxpkg.ContextSetUser(ctx, currentUser), chi.RouteCtxKey, rctx))
svc.PostEducationSchoolMember(rr, r)
svc.PostEducationSchoolUser(rr, r)
Expect(rr.Code).To(Equal(http.StatusBadRequest))
})
@@ -391,7 +391,7 @@ var _ = Describe("Schools", func() {
rctx := chi.NewRouteContext()
rctx.URLParams.Add("schoolID", *newSchool.Id)
r = r.WithContext(context.WithValue(ctxpkg.ContextSetUser(ctx, currentUser), chi.RouteCtxKey, rctx))
svc.PostEducationSchoolMember(rr, r)
svc.PostEducationSchoolUser(rr, r)
Expect(rr.Code).To(Equal(http.StatusBadRequest))
})
@@ -405,7 +405,7 @@ var _ = Describe("Schools", func() {
rctx := chi.NewRouteContext()
rctx.URLParams.Add("schoolID", *newSchool.Id)
r = r.WithContext(context.WithValue(ctxpkg.ContextSetUser(ctx, currentUser), chi.RouteCtxKey, rctx))
svc.PostEducationSchoolMember(rr, r)
svc.PostEducationSchoolUser(rr, r)
Expect(rr.Code).To(Equal(http.StatusBadRequest))
})
@@ -414,49 +414,49 @@ var _ = Describe("Schools", func() {
member.SetOdataId("/users/user")
data, err := json.Marshal(member)
Expect(err).ToNot(HaveOccurred())
identityEducationBackend.On("AddMembersToEducationSchool", mock.Anything, mock.Anything, mock.Anything).Return(nil)
identityEducationBackend.On("AddUsersToEducationSchool", mock.Anything, mock.Anything, mock.Anything).Return(nil)
r := httptest.NewRequest(http.MethodPost, "/graph/v1.0/education/schools/{schoolID}/members", bytes.NewBuffer(data))
rctx := chi.NewRouteContext()
rctx.URLParams.Add("schoolID", *newSchool.Id)
r = r.WithContext(context.WithValue(ctxpkg.ContextSetUser(ctx, currentUser), chi.RouteCtxKey, rctx))
svc.PostEducationSchoolMember(rr, r)
svc.PostEducationSchoolUser(rr, r)
Expect(rr.Code).To(Equal(http.StatusNoContent))
identityEducationBackend.AssertNumberOfCalls(GinkgoT(), "AddMembersToEducationSchool", 1)
identityEducationBackend.AssertNumberOfCalls(GinkgoT(), "AddUsersToEducationSchool", 1)
})
})
Describe("DeleteEducationSchoolMembers", func() {
Describe("DeleteEducationSchoolUsers", func() {
It("handles missing or empty member id", func() {
r := httptest.NewRequest(http.MethodDelete, "/graph/v1.0/education/schools/{schoolID}/members/{memberID}/$ref", nil)
r := httptest.NewRequest(http.MethodDelete, "/graph/v1.0/education/schools/{schoolID}/members/{userID}/$ref", nil)
rctx := chi.NewRouteContext()
rctx.URLParams.Add("schoolID", *newSchool.Id)
r = r.WithContext(context.WithValue(ctxpkg.ContextSetUser(ctx, currentUser), chi.RouteCtxKey, rctx))
svc.DeleteEducationSchoolMember(rr, r)
svc.DeleteEducationSchoolUser(rr, r)
Expect(rr.Code).To(Equal(http.StatusBadRequest))
})
It("handles missing or empty member id", func() {
r := httptest.NewRequest(http.MethodDelete, "/graph/v1.0/education/schools/{schoolID}/members/{memberID}/$ref", nil)
r := httptest.NewRequest(http.MethodDelete, "/graph/v1.0/education/schools/{schoolID}/members/{userID}/$ref", nil)
rctx := chi.NewRouteContext()
rctx.URLParams.Add("memberID", "/users/user")
rctx.URLParams.Add("userID", "/users/user")
r = r.WithContext(context.WithValue(ctxpkg.ContextSetUser(ctx, currentUser), chi.RouteCtxKey, rctx))
svc.DeleteEducationSchoolMember(rr, r)
svc.DeleteEducationSchoolUser(rr, r)
Expect(rr.Code).To(Equal(http.StatusBadRequest))
})
It("deletes members", func() {
identityEducationBackend.On("RemoveMemberFromEducationSchool", mock.Anything, mock.Anything, mock.Anything).Return(nil)
identityEducationBackend.On("RemoveUserFromEducationSchool", mock.Anything, mock.Anything, mock.Anything).Return(nil)
r := httptest.NewRequest(http.MethodDelete, "/graph/v1.0/education/schools/{schoolID}/members/{memberID}/$ref", nil)
r := httptest.NewRequest(http.MethodDelete, "/graph/v1.0/education/schools/{schoolID}/members/{userID}/$ref", nil)
rctx := chi.NewRouteContext()
rctx.URLParams.Add("schoolID", *newSchool.Id)
rctx.URLParams.Add("memberID", "/users/user1")
rctx.URLParams.Add("userID", "/users/user1")
r = r.WithContext(context.WithValue(ctxpkg.ContextSetUser(ctx, currentUser), chi.RouteCtxKey, rctx))
svc.DeleteEducationSchoolMember(rr, r)
svc.DeleteEducationSchoolUser(rr, r)
Expect(rr.Code).To(Equal(http.StatusNoContent))
identityEducationBackend.AssertNumberOfCalls(GinkgoT(), "RemoveMemberFromEducationSchool", 1)
identityEducationBackend.AssertNumberOfCalls(GinkgoT(), "RemoveUserFromEducationSchool", 1)
})
})
})

View File

@@ -124,19 +124,19 @@ func (i instrument) DeleteEducationSchool(w http.ResponseWriter, r *http.Request
i.next.DeleteEducationSchool(w, r)
}
// GetEducationSchoolMembers implements the Service interface.
func (i instrument) GetEducationSchoolMembers(w http.ResponseWriter, r *http.Request) {
i.next.GetEducationSchoolMembers(w, r)
// GetEducationSchoolUsers implements the Service interface.
func (i instrument) GetEducationSchoolUsers(w http.ResponseWriter, r *http.Request) {
i.next.GetEducationSchoolUsers(w, r)
}
// PostEducationSchoolMember implements the Service interface.
func (i instrument) PostEducationSchoolMember(w http.ResponseWriter, r *http.Request) {
i.next.PostEducationSchoolMember(w, r)
// PostEducationSchoolUser implements the Service interface.
func (i instrument) PostEducationSchoolUser(w http.ResponseWriter, r *http.Request) {
i.next.PostEducationSchoolUser(w, r)
}
// DeleteEducationSchoolMember implements the Service interface.
func (i instrument) DeleteEducationSchoolMember(w http.ResponseWriter, r *http.Request) {
i.next.DeleteEducationSchoolMember(w, r)
// DeleteEducationSchoolUser implements the Service interface.
func (i instrument) DeleteEducationSchoolUser(w http.ResponseWriter, r *http.Request) {
i.next.DeleteEducationSchoolUser(w, r)
}
// GetEducationUsers implements the Service interface.

View File

@@ -124,19 +124,19 @@ func (l logging) DeleteEducationSchool(w http.ResponseWriter, r *http.Request) {
l.next.DeleteEducationSchool(w, r)
}
// GetEducationSchoolMembers implements the Service interface.
func (l logging) GetEducationSchoolMembers(w http.ResponseWriter, r *http.Request) {
l.next.GetEducationSchoolMembers(w, r)
// GetEducationSchoolUsers implements the Service interface.
func (l logging) GetEducationSchoolUsers(w http.ResponseWriter, r *http.Request) {
l.next.GetEducationSchoolUsers(w, r)
}
// PostEducationSchoolMember implements the Service interface.
func (l logging) PostEducationSchoolMember(w http.ResponseWriter, r *http.Request) {
l.next.PostEducationSchoolMember(w, r)
// PostEducationSchoolUser implements the Service interface.
func (l logging) PostEducationSchoolUser(w http.ResponseWriter, r *http.Request) {
l.next.PostEducationSchoolUser(w, r)
}
// DeleteEducationSchoolMember implements the Service interface.
func (l logging) DeleteEducationSchoolMember(w http.ResponseWriter, r *http.Request) {
l.next.DeleteEducationSchoolMember(w, r)
// DeleteEducationSchoolUser implements the Service interface.
func (l logging) DeleteEducationSchoolUser(w http.ResponseWriter, r *http.Request) {
l.next.DeleteEducationSchoolUser(w, r)
}
// GetEducationUsers implements the Service interface.

View File

@@ -52,9 +52,9 @@ type Service interface {
PostEducationSchool(http.ResponseWriter, *http.Request)
PatchEducationSchool(http.ResponseWriter, *http.Request)
DeleteEducationSchool(http.ResponseWriter, *http.Request)
GetEducationSchoolMembers(http.ResponseWriter, *http.Request)
PostEducationSchoolMember(http.ResponseWriter, *http.Request)
DeleteEducationSchoolMember(http.ResponseWriter, *http.Request)
GetEducationSchoolUsers(http.ResponseWriter, *http.Request)
PostEducationSchoolUser(http.ResponseWriter, *http.Request)
DeleteEducationSchoolUser(http.ResponseWriter, *http.Request)
GetEducationUsers(http.ResponseWriter, *http.Request)
GetEducationUser(http.ResponseWriter, *http.Request)
@@ -250,10 +250,10 @@ func NewService(opts ...Option) Service {
r.Get("/", svc.GetEducationSchool)
r.Delete("/", svc.DeleteEducationSchool)
r.Patch("/", svc.PatchEducationSchool)
r.Route("/members", func(r chi.Router) {
r.Get("/", svc.GetEducationSchoolMembers)
r.Post("/$ref", svc.PostEducationSchoolMember)
r.Delete("/{memberID}/$ref", svc.DeleteEducationSchoolMember)
r.Route("/users", func(r chi.Router) {
r.Get("/", svc.GetEducationSchoolUsers)
r.Post("/$ref", svc.PostEducationSchoolUser)
r.Delete("/{userID}/$ref", svc.DeleteEducationSchoolUser)
})
})
})

View File

@@ -120,19 +120,19 @@ func (t tracing) DeleteEducationSchool(w http.ResponseWriter, r *http.Request) {
t.next.DeleteEducationSchool(w, r)
}
// GetEducationSchoolMembers implements the Service interface.
func (t tracing) GetEducationSchoolMembers(w http.ResponseWriter, r *http.Request) {
t.next.GetEducationSchoolMembers(w, r)
// GetEducationSchoolUsers implements the Service interface.
func (t tracing) GetEducationSchoolUsers(w http.ResponseWriter, r *http.Request) {
t.next.GetEducationSchoolUsers(w, r)
}
// PostEducationSchoolMember implements the Service interface.
func (t tracing) PostEducationSchoolMember(w http.ResponseWriter, r *http.Request) {
t.next.PostEducationSchoolMember(w, r)
// PostEducationSchoolUser implements the Service interface.
func (t tracing) PostEducationSchoolUser(w http.ResponseWriter, r *http.Request) {
t.next.PostEducationSchoolUser(w, r)
}
// DeleteEducationSchoolMember implements the Service interface.
func (t tracing) DeleteEducationSchoolMember(w http.ResponseWriter, r *http.Request) {
t.next.DeleteEducationSchoolMember(w, r)
// DeleteEducationSchoolUser implements the Service interface.
func (t tracing) DeleteEducationSchoolUser(w http.ResponseWriter, r *http.Request) {
t.next.DeleteEducationSchoolUser(w, r)
}
// GetEducationUsers implements the Service interface.