MCPcopy Create free account
hub / github.com/daodst/chat / QueryMembershipForUser

Method QueryMembershipForUser

roomserver/internal/query/query.go:164–205  ·  view source on GitHub ↗

QueryMembershipForUser implements api.RoomserverInternalAPI

(
	ctx context.Context,
	request *api.QueryMembershipForUserRequest,
	response *api.QueryMembershipForUserResponse,
)

Source from the content-addressed store, hash-verified

162
163// QueryMembershipForUser implements api.RoomserverInternalAPI
164func (r *Queryer) QueryMembershipForUser(
165 ctx context.Context,
166 request *api.QueryMembershipForUserRequest,
167 response *api.QueryMembershipForUserResponse,
168) error {
169 info, err := r.DB.RoomInfo(ctx, request.RoomID)
170 if err != nil {
171 return err
172 }
173 if info == nil {
174 response.RoomExists = false
175 return nil
176 }
177 response.RoomExists = true
178
179 membershipEventNID, stillInRoom, isRoomforgotten, err := r.DB.GetMembership(ctx, info.RoomNID, request.UserID)
180 if err != nil {
181 return err
182 }
183
184 response.IsRoomForgotten = isRoomforgotten
185
186 if membershipEventNID == 0 {
187 response.HasBeenInRoom = false
188 return nil
189 }
190
191 response.IsInRoom = stillInRoom
192 response.HasBeenInRoom = true
193
194 evs, err := r.DB.Events(ctx, []types.EventNID{membershipEventNID})
195 if err != nil {
196 return err
197 }
198 if len(evs) != 1 {
199 return fmt.Errorf("failed to load membership event for event NID %d", membershipEventNID)
200 }
201
202 response.EventID = evs[0].EventID()
203 response.Membership, err = evs[0].Membership()
204 return err
205}
206
207// QueryMembershipsForRoom implements api.RoomserverInternalAPI
208func (r *Queryer) QueryMembershipsForRoom(

Callers

nothing calls this directly

Calls 3

RoomInfoMethod · 0.65
GetMembershipMethod · 0.65
EventsMethod · 0.65

Tested by

no test coverage detected