nidus-sync/platform/publicreport/contact.go
Eli Ribble e3cc1e99d1
Update storage of reporter in contact
I failed to retrieve the data correctly before as part of the changeover
to contact records.

Issue: #13
2026-05-21 23:12:36 +00:00

56 lines
1.6 KiB
Go

package publicreport
import (
"context"
"fmt"
"source.gleipnir.technology/Gleipnir/nidus-sync/db"
querycomms "source.gleipnir.technology/Gleipnir/nidus-sync/db/query/comms"
"source.gleipnir.technology/Gleipnir/nidus-sync/platform/types"
)
func ContactSimplesFromIDs(ctx context.Context, txn db.Ex, contact_ids []int64) ([]types.ContactSimple, error) {
contacts, err := querycomms.ContactsFromIDs(ctx, txn, contact_ids)
if err != nil {
return nil, fmt.Errorf("contacts from ids: %w", err)
}
contact_emails, err := querycomms.ContactEmailByContactIDs(ctx, txn, contact_ids)
if err != nil {
return nil, fmt.Errorf("contact emails from ids: %w", err)
}
contact_phones, err := querycomms.ContactPhoneByContactIDs(ctx, txn, contact_ids)
if err != nil {
return nil, fmt.Errorf("contact phones from ids: %w", err)
}
results := make([]types.ContactSimple, len(contact_ids))
for i, contact := range contacts {
emails, ok := contact_emails[int64(contact.ID)]
if !ok {
return nil, fmt.Errorf("no emails for contact %d", contact.ID)
}
phones, ok := contact_phones[int64(contact.ID)]
if !ok {
return nil, fmt.Errorf("no phones for contact %d", contact.ID)
}
email_string := ""
if len(emails) > 0 {
email_string = emails[0].Address
}
phone_simple := types.PhoneSimple{}
if len(phones) > 0 {
phone := phones[0]
phone_simple = types.PhoneSimple{
CanSMS: phone.CanSms,
Number: phone.E164,
}
}
results[i] = types.ContactSimple{
Email: email_string,
ID: contact.ID,
Name: contact.Name,
Phone: phone_simple,
}
}
return results, nil
}