Skip to content

Commit 54ed088

Browse files
committed
cleanup
1 parent 03008c2 commit 54ed088

File tree

1 file changed

+31
-22
lines changed

1 file changed

+31
-22
lines changed

pkg/mls/store/store.go

Lines changed: 31 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -69,49 +69,58 @@ func New(ctx context.Context, config Config) (*Store, error) {
6969
}
7070

7171
func (s *Store) GetInboxIds(ctx context.Context, req *identity.GetInboxIdsRequest) (*identity.GetInboxIdsResponse, error) {
72-
identifiers := []string{}
73-
identifierKinds := []associations.IdentifierKind{}
74-
identifierKindNumbers := []int32{}
75-
for _, request := range req.Requests {
76-
identifiers = append(identifiers, request.GetIdentifier())
72+
// Create query params with exact capacity needed
73+
queryParams := queries.GetAddressLogsParams{
74+
Identifiers: make([]string, len(req.Requests)),
75+
IdentifierKinds: make([]int32, len(req.Requests)),
76+
}
77+
78+
// Process request data in a single pass
79+
for i, request := range req.Requests {
80+
queryParams.Identifiers[i] = request.GetIdentifier()
7781

82+
// Coalesce unspecified to ethereum
7883
identifierKind := request.GetIdentifierKind()
79-
// Old libXmtp versions will come in as unspecified. We need to coalesce them to ethereum.
8084
if identifierKind == associations.IdentifierKind_IDENTIFIER_KIND_UNSPECIFIED {
8185
identifierKind = associations.IdentifierKind_IDENTIFIER_KIND_ETHEREUM
8286
}
83-
identifierKinds = append(identifierKinds, identifierKind)
84-
identifierKindNumbers = append(identifierKindNumbers, int32(identifierKind.Number()))
87+
queryParams.IdentifierKinds[i] = int32(identifierKind.Number())
8588
}
8689

87-
addressLogEntries, err := s.queries.GetAddressLogs(ctx, queries.GetAddressLogsParams{
88-
Identifiers: identifiers,
89-
IdentifierKinds: identifierKindNumbers,
90-
})
90+
// Query the database
91+
addressLogEntries, err := s.queries.GetAddressLogs(ctx, queryParams)
9192
if err != nil {
9293
return nil, err
9394
}
9495

95-
out := make([]*identity.GetInboxIdsResponse_Response, len(identifiers))
96+
// Build responses with the same capacity as requests
97+
responses := make([]*identity.GetInboxIdsResponse_Response, len(req.Requests))
9698

97-
for index, identifier := range identifiers {
98-
resp := identity.GetInboxIdsResponse_Response{}
99-
resp.Identifier = identifier
100-
identifierKind := identifierKinds[index]
101-
resp.IdentifierKind = identifierKind
102-
identifierKindNumber := int32(identifierKind.Number())
99+
for i, request := range req.Requests {
100+
identifier := request.GetIdentifier()
101+
identifierKind := request.GetIdentifierKind()
102+
if identifierKind == associations.IdentifierKind_IDENTIFIER_KIND_UNSPECIFIED {
103+
identifierKind = associations.IdentifierKind_IDENTIFIER_KIND_ETHEREUM
104+
}
103105

106+
// Create response with the required identifier information
107+
responses[i] = &identity.GetInboxIdsResponse_Response{
108+
Identifier: identifier,
109+
IdentifierKind: identifierKind,
110+
}
111+
112+
// Find matching inbox ID directly from addressLogEntries
113+
identifierKindNumber := int32(identifierKind.Number())
104114
for _, logEntry := range addressLogEntries {
105115
if logEntry.Identifier == identifier && logEntry.IdentifierKind == identifierKindNumber {
106-
resp.InboxId = &logEntry.InboxID
116+
responses[i].InboxId = &logEntry.InboxID
107117
break
108118
}
109119
}
110-
out[index] = &resp
111120
}
112121

113122
return &identity.GetInboxIdsResponse{
114-
Responses: out,
123+
Responses: responses,
115124
}, nil
116125
}
117126

0 commit comments

Comments
 (0)