package ai import ( "context" "strings" "github.com/jackc/pgx/v5" "github.com/jackc/pgx/v5/pgxpool" ) // ResolveExternalIDByEmail maps an Ultimail account email to users.external_id (Authentik sub). func ResolveExternalIDByEmail(ctx context.Context, db *pgxpool.Pool, email string) (string, error) { email = strings.TrimSpace(email) if db == nil || email == "" { return "", nil } var externalID string err := db.QueryRow(ctx, ` SELECT external_id FROM users WHERE lower(email) = lower($1) AND status != 'disabled' LIMIT 1 `, email).Scan(&externalID) if err != nil { if err == pgx.ErrNoRows { return "", nil } return "", err } return strings.TrimSpace(externalID), nil }