QueryMembershipForUser implements api.RoomserverInternalAPI
( ctx context.Context, request *api.QueryMembershipForUserRequest, response *api.QueryMembershipForUserResponse, )
| 162 | |
| 163 | // QueryMembershipForUser implements api.RoomserverInternalAPI |
| 164 | func (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 |
| 208 | func (r *Queryer) QueryMembershipsForRoom( |
nothing calls this directly
no test coverage detected