| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- package postgres
- import (
- "context"
- "fmt"
- )
- type LoginIdentity struct {
- ID string
- IdentityType string
- Provider string
- ProviderSubject string
- CountryCode *string
- Mobile *string
- Status string
- }
- func (s *Store) ListIdentitiesByUserID(ctx context.Context, userID string) ([]LoginIdentity, error) {
- rows, err := s.pool.Query(ctx, `
- SELECT id, identity_type, provider, provider_subject, country_code, mobile, status
- FROM login_identities
- WHERE user_id = $1
- ORDER BY created_at ASC
- `, userID)
- if err != nil {
- return nil, fmt.Errorf("list identities by user id: %w", err)
- }
- defer rows.Close()
- var identities []LoginIdentity
- for rows.Next() {
- var identity LoginIdentity
- if err := rows.Scan(
- &identity.ID,
- &identity.IdentityType,
- &identity.Provider,
- &identity.ProviderSubject,
- &identity.CountryCode,
- &identity.Mobile,
- &identity.Status,
- ); err != nil {
- return nil, fmt.Errorf("scan identity: %w", err)
- }
- identities = append(identities, identity)
- }
- if err := rows.Err(); err != nil {
- return nil, fmt.Errorf("iterate identities: %w", err)
- }
- return identities, nil
- }
|